单片机 电子密码锁设计全.docx
- 文档编号:12995614
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:29
- 大小:783.72KB
单片机 电子密码锁设计全.docx
《单片机 电子密码锁设计全.docx》由会员分享,可在线阅读,更多相关《单片机 电子密码锁设计全.docx(29页珍藏版)》请在冰点文库上搜索。
单片机电子密码锁设计全
《单片机原理及应用》
课程设计报告
课题名称
电子密码锁
学院
自动控制与机械工程
专业
电气工程及其自动化
班级
xxxx
学号
xxxxx
姓名
xxxxx
时间
xxxxxxxxxxxxxxx
目录
摘要-1-
一、设计任务及要求-1-
1.1、设计任务-1-
1.2、设计要求-1-
二、系统总体结构及工作原理-1-
2.1系统总体结构-2-
2.2系统总体结构及电路图-2-
三、各模块电路设计-3-
3.1AT89C51简介-3-
3.2模块电路-7-
四、软件设计-10-
4.1主程序流程图-10-
4.2、子程序代码-10-
五、调试说明-12-
六、总结-15-
七、参考文献-15-
八、附录源程序源代码清单…………………………-16-
摘要
本次设计介绍了基于单片机电子密码锁的设计,该设计硬件主要由AT89C51最小系统、矩阵电路、LCD显示电路、电源电路和报警电路等几部分组成。
软件主要由C语言编程。
该密码锁由单片机技术,通过矩阵电路设置、修改密码、保护密码,并由LCD显示密码输入,从而实现对密码的设置、保护。
关键词:
AT89S51,电子密码锁,矩阵键盘
一、设计任务及要求
1、设计任务:
基于MCS-51系列单片机AT89C51,设计一个通过按键输入开锁的电子密码锁。
2、设计要求:
(1)通过4×4的矩阵键盘输入或设定开锁密码;
(2)可以通过LCD查看已输入的字符个数[显示为*****];
(3)使用串行EEROM24C02A保存用户设置的密码;
(4)使用LED和蜂鸣器指示密码锁的状态;
(5)@可以通过特殊的按键方法清除用户密码[如同时按下特定的多个键];
(6)☆其他功能。
二、系统总体结构及工作原理
2.1系统总体结构
如图1所示系统框图:
主要由电源电路、矩阵电路、报警电路、显示电路等几部分组成。
图1系统原理图
其流程图如图2所示。
图1系统原理图
2.2系统总体电路图及工作原理
工作原理:
矩阵电路用于输入数字的密码和进行各种功能的实现。
可以通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,当按下B,输入密码时LED1黄灯亮,输入完毕后等灭,确认后,如果密码正确LED4绿灯亮,若密码错误,LED3亮红灯亮,且蜂鸣器发出声音报警;按下A后重置密码则LED2黄灯亮。
然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。
LCD则是显示密码的输入进程的,输入正确则会显示开锁成功,同时发光二级管灯亮。
总体电路图如图3所示。
图3系统总体电路图
三、各模块电路设计
3.1.AT89C51简介
At89c51是美国公司atmel在1944年以EEPROM技术与Inter公司的80C51内核的使用权进行交换,然后将flash技术与80C51内核相结合,形成了片内带有flash存储器的AT89C51系列的单片机。
AT89C51单片机继承了原来单片机的原有功能,而且完全兼容。
并且在此基础上增加了一些新的功能,如看门狗定时器WDT、ISP(在系统编程也叫在线编程)及SPI串行接口技术等。
片内flash存储器允许在线(+5)电擦除。
电写入或使用编程器对其重复编程。
此外AT89C51系列单片机的还有具有功耗小,价格低廉,在线的EEPROM可以实现在线编程且可以重复编程,因此受到很多单片机爱好者欢迎。
3.1.1主要参数
(1)与MCS-51兼容
(2)4K字节可编程闪烁存储器
(3)寿命:
1000写/擦循环
(4)数据保留时间:
10年
(5)全静态工作:
0Hz-24Hz
(6)三级程序存储器锁定
(7)128*8位内部RAM
(8)32可编程I/O线
(9)两个16位定时器/计数器
(10)5个中断源
(11)可编程串行通道
(12)低功耗的闲置和掉电模式
(13)片内振荡器和时钟电路
3.1.2引脚功能说明
单片机引脚如图4所示
图4单片机各引脚图
40个引脚按其功能科分为三类:
(1)电源及时钟引脚--------Vcc、GND;XTAL1、XTAL2。
(2)控制引脚-------/PSEN、ALE//PROG、/EA/Vpp、RST
(3)I/O口引脚---------P0、P1、P2、P3、为四个8为位I/O口的外部引脚
下面结合图2一一介绍各引脚的功能
(1)电源引脚
(1)Vcc(40)脚:
接+5V电源
(2)GND(20):
接地
(2)时钟引脚
(1)XTAL1(19):
片内振荡器反相放大器和时钟发生器电路的输入端,当使用片内振荡器时,该引脚连接外部石英晶体和微调电容,当采用外部接时钟源时,该引脚接外部的时钟振荡器的信号。
(2)XTAL2(18):
片内振荡器的反相放大器的输出端,当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外部时钟源时、该引脚悬空。
(3)控制引脚
此类引脚提供控制信号,有的引脚还具有复用功能。
RST(9):
复位信号输入端,高电平有效。
再次引脚加上持续时间大于2个机器周期的高电平,就可以使单片机复位。
在单片机正常工作时,此引脚应为小于且等于0.5V的低电平。
/EA/Vpp(31):
/EA为该引脚第一功能,既外部程序存储器访问允许控制端。
当/EA引脚接高电平时,在PC值不超过0FFF时,将自动转向读取片外60KB(1000H-FFFFH)程序存储器空间中的程序。
当/EA引脚接低电平时,只读取外部程序存储器中的内容,读取的地址范围为0000H—FFFFH,片内的4KBFlash程序存储器不起作用。
Vpp为该引脚的第二功能,既在对片内的Flash进行编程时,Vpp引脚接入编程变压。
/PROG、ALE(30):
ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号,将低8位地址锁存在片外的地址锁存器中。
/PROG为该引脚的第二功能,即在片内Flash存储器编程时,此引脚作为编程脉冲的输入端。
/PSEN(29):
片外程序存储器的读选通信号,低电平有效。
4.1.2.3并行I/O引脚
P0:
8位,漏极开路的双向I/O口。
当AT89C51扩展外部存储器及I/O接口芯片时,P0口作为地址总线及数据总线的分时复用端口。
P0口也可作为通用的I/O使用,但需加上拉电阻,这时为准双向口。
P1:
8位,Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),Flash编程和程序校验期间,Pl接收低8位地址。
P2:
8位,P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3:
8位,P3口是一组带有内部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P3口除了作为一般的I/0口线外。
此外,P3口还有一些特殊功能,如下所示:
1)P3.0RXD(串行输入口)
2)P3.1TXD(串行输出口)
3)P3.2/INT0(外部中断0)
4)P3.3/INT1(外部中断1)
5)P3.4T0(记时器0外部输入)
6)P3.5T1(记时器1外部输入)
7)P3.6/WR(外部数据存储器写选通)
8)P3.7/RD(外部数据存储器读选通)
3.2模块电路
3.2.1矩阵键盘电路
本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要4条行线和4条列线,即可组成具有4×4个按键的键盘。
工作原理:
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4×4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
扫描原理:
把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
键盘电路如图5所示。
图5键盘电路图
3.2.2LCD显示电路
显示电路设计采用字符型液晶屏显示,显示电路如图6所示。
图6LED显示电路图
3.2.3报警电路
报警电路由5个220Ω电阻、一个NPN型三极管、2个LED-YELLOW、1个LED-RED、1个LED-GERRN及两个电源个接地组成,当按下B,输入密码时LED1黄灯亮,输入完毕后等灭,确认后,如果密码正确LED4绿灯亮,若密码错误,LED3亮红灯亮,且蜂鸣器发出声音报警;按下A后重置密码则LED2黄灯亮。
报警电路图如图7所示。
图7报警电路图
四、软件设计
4.1主程序流程图
电子密码锁设计软件设计主程序流程图如图8所示。
图8主程序流程图
4.2子程序代码
(1)初始化系统,设置初始密码如图9所示。
图9初始化代码
(2)LCD控制指令如图10所示
图10LCD控制指令
(3)键盘编码如图11。
图11键盘编码
(4)从键值表读入键值12
图12从键值表读入键值
五、调试说明
系统启动后,LCD显示如下:
图13LCD显示图
按下操作键A或B操作如下;
1)操作键A:
设置新的5位数字(0~9)密码。
2)操作键B:
输入5位数字(0~9)密码并检查。
当按B时,LED1灯亮显示输入5位数字密码,显示如下:
图14按B键后显示器
输完5位密码时,LED1灯熄灭,表示密码输入完毕,再按确认键,密码开始核对,核对通过后,LED4灯亮,表示锁已经打开。
如下图:
图15密码正确
当密码输入错误时,蜂鸣器发出警报,LED3灯亮,LCD显示:
图16密码错误
当按下A时,LED2灯亮,LCD显示如下:
图17按下A后
输入5位原始密码后LED2灯熄灭,按确认键,密码核对,如果密码错误,报警提示。
如密码正确,LED2灯亮,LCD显示如下:
图18输入密码正确
密码修改完成,恢复到起始显示状态。
六、总结
以上为课程设计期间所设计的基于AT89C51单片机电子密码锁电路,它经过多次修改和整理,以是一个比较不错的设计,可以满足人们的基本要求,但因为水平有限,此电路中也存在一定的问题,譬如说电路的密码不能遗忘,一旦遗忘,就很难打开,这可以通过增加电路解决,但过于复杂,本次设计未其中;
通过这两周的设计,学会找到问题并解决问题,譬如在设计过程中遇到些问题,我们获得巨大收获:
首先,通过学习使自己对课本上的知识可以应用于实际,比如对绘图软件Pritues的实用及其编程软件UV4的使用,使得的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我们团结合作精神,能够充分利用图书馆去查阅资料,增加了许多课本以外的知识,能达到学以致用。
对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。
实践是检验真理的唯一标准,当然也是检验学习成果的标准。
在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。
在冯老师的指导下,我能顺利完成本次课程设计,感谢老师!
七、参考文献
[1]楼然苗,胡佳文,等.51系列单片机原理及设计实例[M].北京:
北京航空航天大学出版社,2010.
[2]何立民.单片机高级教程—应用与设计[M].北京:
北京航空航天大学出版社,2000.
[3]杨旭方.单片机控制与应用实训教程[M].北京:
电子工业出版社,2010.
[4]黄仁欣,马彪副主编.单片机原理及运用技术.[M]北京:
清华大学出版社,2005
[5]杨西明,朱骐主编.《单片机编程与应用入门》[M].北京:
机械工业出版社 .2004.
[6]先锋工作室编著.《单片机程序设计实例》[M].北京:
清华大学出版社 .2003.
[7]陈粤初。
《单片机应用系统设计与实践》[M].北京:
北京航空航天大学出版社,1991
[8]王幸之。
《AT89系列单片机原理与接口技术》[M]。
北京:
北京航空航天大学出版社,2004
[9]张毅刚等主编。
《单片机原理与应用设计》[M]。
北京:
电子工业出版社,2008
八、附件
(1)系统整机电路原理图
图19系统整机电路原理图
(2)程序清单
RSBITP2.2;定义LCD的RS引脚由P2.2引脚控制
RWBITP2.1;定义LCD的RW引脚由P2.1引脚控制
EBITP2.0;定义LCD的E引脚由P2.0引脚控制
ORG0000H
AJMPSTART
ORG0050H
START:
MOVP0,#01H;清除LCD屏幕
ACALLENABLE
MOVP0,#38H;设置LCD为8位点阵方式
ACALLENABLE
MOVP0,#0FH;开显示
ACALLENABLE
MOVP0,#06H;移动光标
MOV50H,#8
MOV51H,#8
MOV52H,#0
MOV53H,#3
MOV54H,#6;设置5位初始密码
MAIN:
LCALLENABLE
LCALLKSXSHI;开始显示
AA:
LCALLKEY;调用键盘扫描程序
CJNEA,#10,BB;若不为A键,则跳转为判断是否为B键
LP:
ACALLANAHX
AJMPMAIN
BB:
CJNEA,#11,AA;若不为B键则重新扫描
ACALLANBHX
LJMPMAIN
ENABLE:
CLRRS;LCD控制指令
CLRRW
CLRE
LCALLDELAY
SETBE
RET
;********键盘编码部分*********
KEY:
MOVP1,#0F0H
KEY0:
MOVA,P1
CPLA
ANLA,#0F0H
MOVR1,A;读取列线数据并存入R1中
JZKEY;若无键按下,则继续扫描
KEY1:
MOVP1,#0FH
MOVA,P1
CPLA
ANLA,#0FH
MOVR2,A;读取列线数据并存入R1中
JZKEY;若无键按下,则继续扫描
TT:
JBCF0,WAIT
SETBF0
LCALLDELAY
SJMPTT
GRET:
RET
;**********确定按键值***********
WAIT:
MOVA,P1;等待按键释放
CPLA
ANLA,#0FH
JNZWAIT
KEY2:
MOVA,R1
MOVR1,#03H
MOVR3,#03H
CLRC
KEY3:
RLCA
JCKEY4
DECR1;修正列编号
DJNZR3,KEY3
KEY4:
MOVA,R2
MOVR2,#00H
MOVR3,#03H
CLRC
KEY5:
RRCA
JCKEY6
INCR2;修正列编号
DJNZR3,KEY5
KEY6:
MOVA,R2
CLRC
RLCA
RLCA
ADDA,R1;将行线和列线相加得到键值
RET
;**********开始显示效果***********
KSXSHI:
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE3
LCALLWRITE1;显示8051PASSWORD
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE2
LCALLWRITE1;显示AORBKEY
RET
;**********按A后的操作部分**********
ANAHX:
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE4
LCALLWRITE1;显示SETPASSWORD
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE5
LCALLWRITE1;显示*****
LCALLXG_PASS
RET
;**********按B后的操作部分**********
ANBHX:
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE6;显示SHURUMIMA
LCALLWRITE1
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE5;显示*****
LCALLWRITE1
LCALLIP_PASS
RET
;**********输入5位密码值***********
IP_PASS:
MOVB,#5
MOVR0,#40H
T:
CLRP2.3
ACALLKEY
SETBP2.3
MOV@R0,A;将从键盘得到的键值依次存入40H,41H,42H,43H,44H单元
INCR0
DJNZB,T;循环5次得到5个键值
ACALLKEY
CJNEA,#12,PT;将键值和12比较,看是否为确认键
MOVA,40H
CJNEA,50H,KK
MOVA,41H
CJNEA,51H,KK
MOVA,42H
CJNEA,52H,KK
MOVA,43H
CJNEA,53H,KK
MOVA,44H
CJNEA,54H,KK;将密码和初始密码比较,看密码是否正确
CLRP2.7;密码正确则LED4绿灯亮
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE11
LCALLWRITE1;密码正确,输出LOCKOPENED!
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE5
LCALLWRITE1;显示*****
MOVB,#100
PR:
LCALLDELAY
DJNZB,PR
SETBP2.7
PT:
RET
;***********输错密码时显示ERROR***********
KK:
CLRP2.6
CLRP2.5;密码错误,报警并LED3红灯亮
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE10
LCALLWRITE1;密码错误,显示PASSWORDERROR!
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE5
LCALLWRITE1;显示*****
MOVB,#50
PK:
LCALLDELAY
DJNZB,PK
SETBP2.5
SETBP2.6
RET
;************修改密码操纵部分**********
XG_PASS:
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE9
LCALLWRITE1;显示INPUTTHE
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE8
LCALLWRITE1;显示OLDPASSWORD
MOVB,#5
MOVR0,#30H
YT:
CLRP2.4;红灯LED2亮,表示可以输入密码,5位输入完毕后,灯灭
ACALLKEY
SETBP2.4
MOV@R0,A;将从键盘得到的键值依次存入40H,41H,42H,43H,44H单元
INCR0
DJNZB,YT;循环5次得到5个键值
ACALLKEY
CJNEA,#12,XT;判断是否为确认键
MOVA,30H
CJNEA,50H,KK
MOVA,31H
CJNEA,51H,KK
MOVA,32H
CJNEA,52H,KK
MOVA,33H
CJNEA,53H,KK
MOVA,34H
CJNEA,54H,KK;将从键盘输入的密码与初始密码比较
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE9
LCALLWRITE1
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE7
LCALLWRITE1;密码正确则显示INPUTTHENEWPASSWORD
MOVB,#5
MOVR0,#50H
XT1:
CLRP2.4;红灯LED2亮,表示可以输入密码,5位输入完毕后,灯灭
ACALLKEY
SETBP2.4
MOV@R0,A;将输入的新密码存入原来的旧密码单元
INCR0
DJNZB,XT1
ACALLKEY
CJNEA,#12,XT;判断是否为确认键
MOVP0,#80H
ACALLENABLE
MOVDPTR,#TABLE1
LCALLWRITE1
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE0;显示PASSWORDXIUGAIPASS
LCALLW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子密码锁设计全 电子 密码锁 设计