《单片机课程设计电子密码锁的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计电子密码锁的设计.doc(18页珍藏版)》请在三一办公上搜索。
1、摘要 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技
2、术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。 基于以上思路,本次设计使用 ATMEL
3、公司的 AT89C51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能: (1)密码通过键盘输入,若密码正确,则将锁打开。 (2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。 电子密码锁的设计主要由三部分组成矩阵键盘接口电路、密码锁的控制电路、LED 提示灯。另外系统还有上锁,报警蜂鸣器等。 1 系统设计1.1系统总设计结构图LED灯显示单片机时钟电路单片机AT89C51密码输入设备报警设备系统总设计结构图 本设计由主控芯片51单片机,单片机时钟电路,键盘,和报警电路组成。单片负责控制整个系统的执行过程。1.2主控芯
4、片AT89C51单片机的简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。主要特性: 与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全
5、静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电
6、流,这是由于内部上拉的缘故。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输
7、入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器
8、时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFF
9、H),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2. 硬件设计 2.1原件清单 打开Proteus ISIS 编辑环境,按下表所列的元件清单添加原件。 元件名称 所属类 所属子类 AT89C51 CAP Capacitors Generic CAP-POL Capacitors Generic CRYSTAL Miscellaneous - RES Resistors Generic BUTTON Switches &rel
10、ays Switches LED-YELLOW Optoelectronics LEDs POT-HG Resistors Variable RES-VAR Resistors Variable BUZZER 2.2硬件电路原件全部提案件后,在Proteus ISIS的编辑区域中,按如下原理图连接硬件电路。 电路原理图3. 程序设计密码锁的控制程序由延时子程序、修改密码子程序、键盘读入子程序、校验密码子程序及主程序组成。锁的初始状态为“锁合”指示灯亮。输入初始密码“0、1、2、3、4、5、6、7”,每输入一位,“键有效”指示灯亮约0.5s;输入8位按“确定”键,锁打开,“锁开”指示灯亮;按“上
11、锁”键,锁又重新上锁,“锁合”指示灯亮。“锁开”状态下,可输入新密码,按“确定”键后更改密码;可重复修改密码。如果输入密码错误,“错误”指示灯亮约0.5s。可重复输入密码。输入密码错误超过3次,蜂鸣器启动发出报警,同时“错误”指示灯亮。注意,密码必须是8位,如需改变密码位数,需修改寄存器R4的值。 开始设置原始密码初始化锁状态,锁合输入密码校验密码正确?是否3次开锁是否重新上锁测试键盘有数字按下?更改密码报警错误提示是是是否否是否否3.1程序流程图3.2源程序;R3输入错误次数;R4密码个数;R7输入密码暂存;R2键值暂存;R6延时参数ORG00HSJMPSTARTORG0BHSTART: ;
12、设置初始密码PASSWORD:MOVR4,#08H;密码个数8个MOVR0,#40H;密码暂存区MOVA,#00H;初始密码0,1,2,3,4,5,6,7PASSNEXT:MOVR0,AINCR0INCADJNZR4,PASSNEXTMLOOP:CLRP3.0;锁合SETBP3.1;锁开SETBP3.2;键有效SETBP3.3;错误SETBP3.4;报警MOVR3,#03H;错误次数3次 ;输入密码GETPW:MOVR4,#08H;密码个数MOVR0,#30H;输入密码暂存区AGAIN:ACALLKEY;输入密码CJNEA,#0AH,CONTIUE ;按确认键无效SJMPAGAINCONTIU
13、E:MOVR0,AACALLDISPLED;按键有效显示INCR0DJNZR4,AGAINAGAIN1:ACALLKEY;按确认键CJNEA,#0AH,AGAIN1ACALLDISPLED ;按确认键有效显示ACALLCOMP;比较密码SETBP3.0;息锁合CLRP3.1;开锁WAIT:MOVC,P3.5;是否重新上锁JNCMLOOP;主循环ACALLTestKey;是否有键按下,是否修改密码JZWAIT;累加器的内容为0,则转移;否则执行下一条指令ACALLCHPSW;修改密码子程序SJMPWAITCOMP:MOVR4,#08HMOVR0,#30HAGAI:MOV50H,R0;取输入密码到
14、50HMOVA,R0ADDA,#010H;40HMOVR0,AMOVA,R0;取密码MOVB,AMOVA,R0SUBBA,#010H;30HMOVR0,AMOVA,BCJNEA,50H,ONCEMORE ;比较INCR0DJNZR4,AGAIRET;正确返回ONCEMORE:CLRP3.3;输入错误MOVR6,#0FFHACALLDELAYMOVR6,#0FFHACALLDELAYSETBP3.3DJNZR3,GETPW;3次错误输入CLRP3.4;声报警CLRP3.3;光报警W:SJMPW ;修改密码子程序CHPSW:MOVR4,#07HMOVR0,#48HACALLKEYCJNEA,#0A
15、H,CONTIUE2 ;按确认键无效LJMPWAIT;返回CONTIUE2:MOVR0,AINCR0ACALLDISPLED;按键有效显示ANOTHER:ACALLKEYCJNEA,#0AH,CONTIUE3 ;按确认键无效SJMPANOTHERCONTIUE3:MOVR0,AINCR0ACALLDISPLED;按键有效显示DJNZR4,ANOTHERAGAIN2:ACALLKEY;按确认键CJNEA,#0AH,AGAIN2ACALLDISPLED;按确认键有效显示MOVR4,#08HMOVR0,#40HMOVR1,#48HCHANGE:;确认后修改密码MOVA,R1MOVR0,AINCR0I
16、NCR1DJNZR4,CHANGERET ;按键有效显示DISPLED:CLRP3.2;按键有效显示MOVR6,#80HACALLDELAYSETBP3.2RETTestKey:MOVP1,#0FHMOVA,P1;读入键状态CPLA;累加器取ANLA,#0F0HRET ;取键值子程序,阵列式键盘KEY:MOVP1,#0F0HMOVA,P1CJNEA,#0F0H,K11K10:AJMPKEYK11:MOVR6,#02HACALLDELAYMOVP1,#0F0HMOVA,P1CJNEA,0F0H,K12SJMPK10K12:MOVB,AMOVP1,#0FHMOVA,P1CJNEA,#0FH,K12
17、2K121:AJMPKEYK122:MOVR6,#02HACALLDELAYMOVP1,#0FHMOVA,P1CJNEA,0FH,K13AJMPK10K13:ANLA,BMOVB,AMOVR1,#11MOVR2,#0MOVDPTR,#K1TABK14:MOVA,R2MOVCA,A+DPTRCJNEA,B,K16MOVP1,#0FHK15:MOVA,P1CJNEA,#0FH,K15MOVR6,#02HACALLDELAYMOVA,R2RETK16:INCR2DJNZR1,K14AJMPK10 ;键码表K1TAB:DB81H,41H,21H,11HDB82H,42H,22H,12HDB84H,44
18、H,24H ;延时子程序DELAY:MOVR6,#80HAA1:MOVR5,#0F8HAA:NOPNOPDJNZR5,AADJNZR6,AA1RETEND4调试与仿真(1) 打开Keil Vision3,新建Keil项目,选择AT89C51单片机作为CPU,新建汇编源文件,编写程序,并将其导入到“Source Group 1”中。在“Options for Target”对话窗口中,选中“Output”选项卡中的“CREAT HEX File”选项和“Debug”选项卡中的“Use:Proteus VSM Simulater”选项。编译汇编程序,改正程序中的错误。(2) 在Proteus IS
19、IS中,选中AT89C51并单击鼠标左键,打开“Edit Component”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“Program File”栏中,选择先前用Keil生成的.HEX文件。在Proteus ISIS的菜单栏中选择“File” “Save Design”选项,保存设计。在Proteus ISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“Use Remote Debug Monitor“选项,以支持与Keil的联合调试。(3) 在Keil的菜单栏中选择“Debug“Start/Stop Debug Session”选项,或者直接单击工具栏中的“Debug
20、Start/Stop Debug Session”图标,进入程序调试环境。按“F5”键,顺序运行程序,调出“Proteus ISIS”界面,验证程序功能,如图所示。程序运行结果 5心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多
21、于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。6参考文献1 李朝青.单
22、片机原理及接口技术(简明修订版)M.北京:北京航空航天大学出版社,19982 李全利.单片机原理及接口技术M.高等教育出版社,20033 PROTEL99 SE电路设计与制板M.机械工业出版社,20074 杨将新,李华军,刘到骏等.单片机程序设计及应用(从基础到实践)J电子工业出版社,2006附录自我评价这次课程设计经过这一周的反复琢磨与修改,终于完成了。从查资料,整理资料到读程序,写程序,改程序,仿真直至通过老师的验收,一切都充满了刻苦与艰辛,其间充满了挫折可是同时又伴随着欢乐。另外,在重复修改与设计的过程中,我又重新把单片机原理与应用技术这本书仔细的看了一下,弄懂了一些以前一知半解的东西,进一次加强和巩固了我的理论知识。在此次课程设计过程中,我们把单片机的理论知识用于实践中,使理论与实践相结合,使我的理论知识的到了巩固,在查资料翻阅资料的过程中也丰富了我的知识跟阅历。