51单片机电子密码锁设计(包含原理图,电路设计,c语言程序)
51单片机密码锁制作的程序和流程图

51单片机密码锁制作的程序和流程图(很详细) 一、基本组成:单片机小系统+4*4矩阵键盘+1602显示+DC电机基本电路:键盘和和显示键盘接P1口,液晶的电源的开、关通过P2.7口控制电机(控制口P2.4)二、基本功能描述:1.验证密码、修改密码a)锁的初始密码是123456(密码最长为10位,最短为1位)。
2.恢复初始密码a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。
但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。
3.使系统进入低功耗状态a)在实际使用中,锁只有在开门时才被使用。
因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。
b)同时将LCD背光灯关闭4.DC电机模拟开锁动作。
a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。
DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。
三、密码锁特点说明:1.0 输入将被以字符形式输入,最长为10位。
超过10位时系统将自动截取前10位、但不作密码长度溢出提示。
2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。
3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。
4.0 若2分钟内无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。
5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。
6.0 修改密码键和恢复初始密码键最好置于室内。
这是Proteus仿真结果:输入密码123456:显示结果:密码正确时电机启动、电机将持续5秒:这是键盘:开锁键是接INT0引脚接的一个独立按键,用于唤醒CPU工作、进而开启整个系统密码正确时可以修改密码:再次输入新密码,两次输入相同时、更改有效当然你可以随时放弃修改密码改进:1.0 密码锁的秘密没有存储,因而在掉电时最新的密码将丢失,重新上电后密码将恢复成为初始密码。
单片机密码锁设计(汇编语言-)带原理图电路图-

单片机密码锁设计(汇编语言)带原理图电路图什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。
本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。
设计的电路框如图1。
《,图一&电路的功能单元设计1.单片机AT89C51组成基本框图单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。
在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。
当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。
P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。
P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。
&P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。
P3:P3口除了一般的准双向通用I/O口外,还有第二功能。
VCC:+5V电源VSS:接地ALE:地址锁存器控制信号。
在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
/PSEN:外部程序存储器读选通信号。
在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。
/EA:访问程序存储控制信号。
当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
RST:复位信号。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。
XTAL1和XTAL2:外接晶体引线端。
基于51单片机的电子密码锁

电子密码锁一、工作原理本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N ×M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
4×4矩阵键盘的工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图5所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
扫描原理把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。
利用51单片机设计一个用16个按键输入,6位数字输出显示的电子时钟。
如图1-1所示。
图1-1按键分布图具体要求和按键功能介绍如下:1. 上电后,6 位数码管显示“—”;2. 设置6 位密码,密码通过键盘输入,按“确定”键确认,如密码正确,将锁打开;3. 密码由用户自己设定,若密码正确即锁被打开,则指示灯被点亮;4. 若密码1 次输入错误,则报警;5. 按Set 键,修改密码;6. 按Cle 键可清除已输入的密码,重新进行输二、系统硬件组成本次设计的主要有键盘,数码管,STC89C52芯片,以及LED灯。
51单片机电子密码锁课程设计

单片机技术及应用综合训练(设计报告)题目: 电子密码锁**: ***学院: 数理学院专业: 电子科学与技术班级: 112 学号: ********** ****: ***2014年5 月前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。
在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。
本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。
它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。
用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。
关键词:电子密码锁、报警、液晶显示目录一、选题要求 (1)二、硬件电路设计 (1)2.1 51单片机 (2)2.2 键盘电路 (2)2.3 液晶显示电路 (2)2.4 警报电路 (3)2.5 密码储存电路 (3)2.6 晶振、复位及关锁 (3)三、软件设计 (4)四、软硬件调试结果 (9)4.1 电路总原理图 (9)4.2 调试结果 (10)五、总结 (11)一、选题要求本文从经济实用的角度出发,设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共6位密码,每位的取值范围为0~9,用户可以自行设定和修改密码。
用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警,期间输入密码无效,以防窃贼多次试探密码。
6位密码同时输入正确,锁才能打开。
锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的,因此保密性强、灵活性高。
最新基于51单片机的电子密码锁的设计

目录1.设计的目的和意义1.1 设计的目的 (1)1.2设计内容 (1)1.3设计要求 (1)2.硬件电路设计2.1 总体方案设计 (1)2.2 硬件电路图 (1)3.系统软件设计3.1.密码的设定 (2)3.2.密码的输入 (2)3.3.密码的判断与处理 (3)3.4. 原程序清单 (3)3.5. 程序流程图 (5)4.电路调试4.1.调试过程 (7)参考文献 (8)1.设计的目的和意义1.1 设计的目的:(二级标题和正文为小四号宋体,行距为固定值20磅)(1).根据要求设计PC机的控制电路和程序(2).熟悉模拟实验线路(3).掌握程序的系统调试1.2 设计的内容:(1).密码的设定:在此程序中密码是由我们自己设定的,通过两个按键将三位分别密码保存在20H,21H,22H单元当中。
(2).密码的输入:两个按键来完成密码的输入,其原理和密码设定是一样的,不过就是将他们存贮的单元做了改变,将其分别放入10H,11H,12H单元中。
当完成密码的输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
(3).密码的判断与处理:先将设定的密码20H单元的值与后来用户输入的密码10H单元中的值进行比较,如果正确就进行下一单元的比较,不正确则跳转到计数子程序计数。
如果计数到三次就跳转到喇叭鸣叫子程序。
1.3 设计要求:先用两个按键设定好3个初始密码,再采用二个按键实现3个密码的输入功能,当密码输入正确之后,锁就打开,相应的LED灯亮。
如果输入的三次的密码不正确,就立即引发报警声。
2.硬件电路设计:2.1.电路的连接:(1).将8051的P1.0和P1.1口分别接到两个开关上.(2).将P1.2口和P1.4口分别接到不同颜色的LED灯上.(3).将P1.3口接到喇叭口.2.2.电路硬件图:3.系统软件设计:设计思路如下:3.1---3.33.1.密码的设定:在此程序中密码是由我们自己设定的,通过两个按键将三位分别密码保存在20H,21H,22H单元当中。
基于51单片机的密码锁设计程序_

uchar temp,count,aa,bb,cc。/*一般将这些变量定义在C文件中
当主函数需要时用extern引用*/
bit shu_flag,modify_flag,rst。
bit fun_flag。//功能键Байду номын сангаас志位没使用
bit down_flag,up_flag,open_flag。
write_ds1302_byte(dat)。
T_CLK=1。
T_EN=0。
}
uchar read_ds1302_data(uchar addr)
{
uchar date。
T_EN=0。
T_CLK=0。
T_EN=1。
write_ds1302_byte(addr)。
date=read_ds1302_byte()。
sda=1。
delay1()。
}
void i2c_ack()
{
uchar i。
scl=1。
delay1()。
while((sda==1)&&(i<250)) i++。
scl=0。
delay1()。
}
void i2c_nack()
{
scl=1。
delay1()。
sda=1。
scl=0。
delay1()。
lcd_rs_port=1。
lcd_rw_port =0。
lcd_en_port=0。
P0=dat。
lcd_en_port=1。
lcd_en_port=0。
}
void wtite_lcd_1602_dat(uchar x_pos,uchar y_pos,uchar dat)
毕业设计----基于51单片机电子密码锁设计

基于51单片机电子锁设计摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。
本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。
根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。
而且采用键盘输入的电子密码锁具有较高的优势。
采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。
软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,本系统各项功能已达到本设计的所有要求。
关键词:单片机;密码锁;单片机设计,电子锁。
Electronic Lock Design with 51 SeriresSingle Chip ControllerAbstractAlong with the exaltation of social science and the living level of people, how carry out the family to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subjected to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 51 machines, this is easy to encrypt and protect to the passwords information random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low, Respond quickly,the efficiency deliver is high, work stable credibility etc. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already all request of this design.keyword:singlechip;cryptogram lock;singlechip design; electronics lock.目录1 绪论 (1)1.1 引言 (1)1.2 电子密码锁的背景 (1)1.3 电子锁设计的意义的本设计特点 (2)2.系统设计 (3)2.1系统总设计结构图 (3)2.2.开锁机构设计 (3)2.2.1主控芯片AT89C51单片机的简介 (4)3系统硬件设计 (7)3.1键盘设计 (7)3.2系统电路设计: (8)3.2.1 晶振时钟电路 (8)3.2.2复位电路设计 (9)3.2.3串口引脚功能介绍 (9)3.2.4 其它引脚 (9)3.3电路图的绘制 (9)3.3.1 PROTEL 99 SE简介: (12)3.4原器件采购 (14)3.5电路焊接 (14)4.软件设计 (17)4.1 系统软件设计整体思路 (17)4.2系统软件设计流程图 (18)5 程序调试 (19)5.1 程序调试用到的软件及工具 (19)5.2 KEIL C51简介 (19)5.3 调试过程 (19)6 设计总结与展望 (22)致谢 (23)参考文献 (24)附录 (25)1 绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。
51单片机设计电子锁密码锁含代码

电子锁设计报告一,实验目的1. 学习8051定时器时间计时处理,键盘扫描及LED数码管显示的设计方法。
2. 设计任务及要求利用实验平台上8个LED数码管,设计带有报警功能的可掉电保存的电子密码锁。
3.通过本次实验,加强对所学知识的理解,增强编程能力及实践能力。
二,实验要求A.基本要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。
2:可以自行设定或删除8位密码,能够掉电保存。
3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图B.拓展部分:无三,实验基本原理单片机密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。
本系统考虑到单片机密码锁成本及体积因素,在设计单片机密码锁部分时,以AT89S52单片机为核心,24C04、LED等构成外围电路。
本系统单片机密码锁硬件部分结构简单、成本低,软件部分使用电子加密提高锁的安全性,具有比较好的市场前景。
同时,由于本电子密码锁可以实现掉电保存,而且可以自行设计或者删除8位密码,所以具有较高的实用价值。
本密码锁采用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led 发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led 发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
此项功能方便用户使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子密码锁设计
1.实验任务
根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。
2.电路原理图
图4.32.1
3.系统板上硬件连线
(1).把“单片机系统”区域中的P0.0/AD0用导线连接到“音频放大模块”区域中的SPK IN端子上;
(2).把“音频放大模块”区域中的SPK OUT端子接喇叭和;
(3).把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端子上;
(4).把“单片机系统“区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L1端子上;
(5).把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接到“独立式键盘”
区域中的SP1和SP2端子上;
4.程序设计内容
(1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2).密码的输入问题:
由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按
键为数字键。
在输入过程中,首先输入密码的长度,接着根据密码的长度输入
密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,
才能完成密码的输入过程。
进入密码的判断比较处理状态并给出相应的处理过
程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的
情况下发生的。
5.C语言源程序
#include <A T89X52.H>
unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0) //function key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i<pslen;i++)
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
if((errorflag==1) && (rightflag==0)) {
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0) && (rightflag==1)) {
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}。