浙江长征职业技术学院
毕业设计(论文)
论文题目: 数字密码锁的设计 系 别: 信息系 专业班级: 07电子信息工程技术 学生姓名: 金沛领 指导教师: 王 芳
二○一○年五月三日
目 录
摘 要 ............................................................................................................................1 引 言 ............................................................................................................................2 1 密码锁的由来..........................................................................................................2
1.1 密码锁的定义 ..............................................................................................2 1.2 电子密码锁的特点 ......................................................................................2 1.3 本设计所要实现的目标 ..............................................................................2 2 总体设计方案..........................................................................................................3 3 主要元器件介绍......................................................................................................4
3.1 主控芯片AT89C51 .......................................................................................4 3.2 存储芯片AT24C01 .......................................................................................4 3.3 LED显示器 ...................................................................................................5 4 密码锁的系统设计..................................................................................................5
4.1 设计原理 ......................................................................................................5 4.2 密码锁的控制电路 ......................................................................................6 4.3 密码锁的控制原理 ......................................................................................6 4.4 密码锁的控制程序 ......................................................................................7 5 系统软件设计........................................................................................................ 11 6 设计总结 ................................................................................................................14 参考文献 ......................................................................................................................16 致 谢 ..........................................................................................................................17
i
数字密码锁的设计
【摘 要】本文设计的是一种由AT89C51单片机编程控制实现的多功能密码锁。这种电路设计具有密码输入有效提示、密码错误指示、控制开锁电平、控制报警电路、密码修改等功能,可在意外泄密的情况下及时修改密码。8位十进制密码共一亿组不重复,保密性强,灵活性高,特别适用于家庭、办公室、学生宿舍及宾馆等场所,具有很强的社会推广价值。 【关键词】AT89S51 AT24C02 电子密码锁 矩阵键盘
1
引 言
锁具是源流千古的社会性用品。随着科技、经济和社会的发展,当今社会公共安全防范系统对锁具的保密性、牢固性、可靠性、耐用性以及安装使用等提出了新的更高的要求。日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。电子密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
1 密码锁的由来
1.1 密码锁的定义
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械。 1.2 电子密码锁的特点
1.保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。
2.密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
3.误码输入保护。当输入密码多次错误时,报警系统自动启动。 4.电子密码锁操作简单易行,一学即会。
5.使用灵活性好,不像机械锁必须佩带钥匙才能开锁。 6.电子密码锁操作简单易行,一学即会。 1.3 本设计所要实现的目标
本设计采用.中一片机为主控芯片,结合外围电路,织成电了密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码、修改密码之前必须一次输入密码,在输入新密码时候需要几次确认,以防误操作。
2
2 总体设计方案
本设计采用以单片机为核心的控制方案
由于单片书上种类繁多,各种型号者尽有其一定的应用环境,因此在选用时要多加比较、合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O扣、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干忧性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。基于以上因素木设计选用单片机AT89C51作为木设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C01芯片用于密码的存储,外接LED显示器用于显示作用。
开机上电后,显示器提示P,此时若开锁的状态下可设置密码,如果在关锁的状态下可开锁。开锁时若密码输入错误,则报警器响起;按复位键,可重新输入密码。用户通过键盘输人密码,确认后系统调用密码比较判断函数,如果密码在规定的时间内输入正确,单片机输出开门信号开锁。如果在规定的时间内没完成密码的输入,系统自动清除所输入的密码,并提示重新输入。用户发现输入错误时,可以清除重输。密码输入后,通过验证和多位校验后,如果密码错误则启动报警系统,当密码错误次数达到3次时,系统将锁定键盘一段时间,时间到后系统自动启动健盘输人。初始密码由系统设定,用户可根据自己的要求设定密码,修改密码时需要首先匹配旧密码,如果输入旧密码错误则系统报警并自动退出密码修改状态。旧密码正确则可以输人新密码,新密码的输人需要两次对比确认。系统设定密码为6位,当输人新密码不为6位或两次输人的新密码不一致时密码修改失败,系统报警并自动退出密码修改状态。如果输人的新密码为6位且两次输入的新密码一致则修改密码成功。
以上可以看出此方案控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要所以采用次设计方案。
3
3 主要元器件介绍
3.1 主控芯片AT89C51
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3-1所示:
图3-1三种单片机的外形图、AT89C51的引脚排列
3.2 存储芯片AT24C01
AT24C01提供电可擦除的串行1024位存储或可编程只读存储器(EEPROM)128字(8位/字)。芯片在低压的工业与商业应用中进行了最优化。AT24C01的封装为8脚PDIP、8脚JEDECSOIC、8脚TSSOP,通过2线制串行接口进行数据传输。另外,整个系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)两个版本。
4
3.3 LED显示器
LED就是light emitting diode ,发光二极管的英文缩写,简称LED。它是一种通过控制半导体发光二极管的显示方式,其大概的样子就是由很多个通常是红色的发光二极管组成,靠灯的亮灭来显示字符。用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。(LED panel):LED就是light emitting diode ,发光二极管的英文缩写,简称LED。它是一种通过控制半导体发光二极管的显示方式,其大概的样子就是由很多个通常是红色的发光二极管组成,靠灯的亮灭来显示字符。用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
4 密码锁的系统设计
4.1 设计原理
本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。其原理框图如图4-1所示。
图4-2电子密码锁原理框图
5
4.2 密码锁的控制电路
多功能密码锁的控制电路如图4-2所示,由下图可以看出,密码锁的控制电路由单片机AT89C51、行列式键盘、复位电路、时钟电路、声光报警几部分组成。
图4 - 2密码锁硬件电路原理图
4.3 密码锁的控制原理 4.3.1 密码设定
密码锁使用13个按键,由P1口控制。键盘扫描使用引脚P1.0~P1.7,其中 P1.7~P1.4用于输出扫描信号,P1.3~P1.0这4个引脚用于检测按键的状态。
在13个按键中,按键0~9用于密码的设置,按键A代表密码设置键,按键B代表开锁确认键,按键F代表复位键。
在程序执行中,先从P1.7~P1.4送出“0111\",然后接收判别P1.3~P1.0的输入,判别0,1,2,3这4个按键是否有按下,如有按下,则P1.3~P1.0中对应线输入为“0”信号;然后从P1.7~P1.4送出“1011\",然后接收判别P1.3~P1.0的输入,判别4,5,6,7这4个按键是否有按下;再从P1.7~P1.4送出“1101\",然后接收判别P1.3~P1.0的输入,判别8,9,A,B这4个按键是否有按下,最后从P1.7~P1.4送出“1110\判别A键是否有按下。 4.3.2开锁控制
开锁控制电路如图4-3所示:
6
图4 - 3开锁控制电路
开锁LOCK信号由图1中的P0.4控制,上电后为“1”状态,密码锁处于封锁状态。 当输入的密码正确时,开锁信号输出为“0”并保持,该信号经光电耦合器后,驱动AT203继电器线圈,继电器K1吸合,其常开触点K1-1闭合外部电磁铁,通过机械动作完成开锁。同时由P0.6输出低电平,点亮绿色发光二极管\"RIGHT”灯,表示开锁。
当密码错误时P0.4保持为“1\",为封锁信号,同时由P0.0输出低电平,点亮红色发光二极管\"ERROR”灯,表示警示。 4.3.3 报警控制
报警电平由P0.7控制,上电后为“1”状态。
工作中在密码输入错误情况下,由P0.0输出低电平,红色发光二极管亮,表示警示。 在3次输入密码错误的情况下P0.7输出低电平,三极管Q1导通,由喇叭报警,鸣音3次,每次3S。
密码错误输入达3次后,由P0.4输出“1\",开锁信号封锁。同时定时器开始计时,1个小时后才能再次输入密码尝试开锁。
P0.1外接时间指示灯。当定时器开始计时的同时,由P0.1输出“0”,黄色计时二极管发光。当计时1个小时时间到后,由程序控制P0.1输出“1\",二极管熄火。 4.4 密码锁的控制程序
其硬件构成见图4-4,其下作流程如下:上电复位后,密码由EEROM24C01中读出送入
7
AT89C51内部RAM,以备密码输入时比较调用,LED显示P,为正常上锁状态,当键盘有输入时,LED呈亮灭交替的P,即闪显状态提示输入,密码全部输入后,如闪显密码3次,则说明密码正确,此时可进行开锁或修改密码,如为开锁,则P3.2置1使三极答导通,使连动锁芯的继电器得电开锁;如为修改密码,则调用键盘扫描程序,输入新密码,并重新写入EEROM中,并刷新RAM。如输入的是误码,蜂鸣器警告提示,如连续三次输入误码,则进入中断服务程序,在中断服务程序中报警井封锁各I/0口,禁止键盘操作。
图4 - 4主程序流程
8
主程序如下:
MODIFYB EQU 00H UNLOCK EQU 01H
ERRB EQU 02H;设置误码标志位
MRD EQU 30H;设置EEROM密码读到内RAM的数据指针,其中30H为写入EEROM的地址;31--37H为密码数据
NUMBYT EQU 3DH;设置要读写EEROM的单元
MTD EQU 3FH;键盘输入的新密码值 SLA EQU 3EH;设置EEROM的控制字 FUNLOCK EQU P3.2 ALAM EQU P3.3 SDAEQU P3.0 SCL EQU P3.1 ORG 0000H LJMP START0 ORG 000BH LJMP INT0 ORG 001BH LJMP INT1 ORG 0020H
STARTO:MOV SP,#50H MOV TMOD,#11H MOV TL0,#00H
MOV TH0#00H T0;作为报警延时控制 SETB PT0;报警中断为最高级中断 MOV TH1,#00H
MOV TL1,#00H;T1作为LED显示时的闪动频率控制 START1:MOV R0,#20H MOV R7,#20H CLR0:MOV A,#00H
MOV A,@R0
9
INC R0 DJNZ R7,CLR0 MOV B,#03H CLR FUNLOCK
CLR ALAM;内存相关单元清零,相关I/O端口初始化 START2:MOV MTD,#00H
MOV SLA,#OAOH MOV NUMBYT,#1 LCALL WRNBYT MOV SLA,#OA1H MOV NUMBYT,#6
LCALL RDNBYT;读出EEROM内密码送内部RAM区 MAINI:LCALL DISP P;显正常上锁状态 LCALL TEST;键盘测试程序,看是否有键按下 JZ MAIN1
MAIN2:LCALL SCAN;调用键盘扫描程序 LCALL CHECK;调用密码比较程序 JB ERRB,ERRF;如误码,转误码处理 MOV B,#3
LCALL DISP_D;闪显三次输入密码,表输入正确 JB MODIFYB,MODIFY;转密码修改 SETB UNLOCK;转开锁 SJMP $
ERRF:LCALL BEE;调用误码输入警告提示声 DJNZ B,MAIN2 二次误码报警; SETB ALAM
SETB ET0;开定时中断T0,进行报警延时控制 SETB EA SETB ET0 SJMP $
10
MODIFY:SETB MODIFYB;置密码修改标志位 LCALLSCAN;从键盘输入新密码 MOV MTD,#00H; MOV SLA,#0A0H
MOV NUMBYT,#7;向EEROM写入新密码 LCALL WRNBYT;
LCALL DISP_D;闪显三次新密码 LJMP START1
其它子程序因篇幅关系,不在此一一列出。
5 系统软件设计
本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。主要程序设计流程图如下图5-1、图5-2、图5-3、图5-4所示:
图5-3主程序流程图
11
图5-2键功能流程图
12
图5 - 3密码设置流程图
13
图5 - 4开锁流程图
6 设计总结
经过几天的努力,我的数字密码锁毕业设计终于完成了。从刚开始不知道如何入手并且困难丛丛,不过最后还是做完了,有种如释重负的感觉。在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次毕业设计我对单片机技术有了更进一步的了解和掌握。从上世纪以来,数字电子技术在迅速的发展。有力的推动了社会生产力的发展和社会信息化的提高,学好单片机这门课有着至关重要的意义。在我编写程序中,让我明白了很多道理。虽然自己能够写出基本要求的代码,可是在代码的很多地方都会出现错误,完全背离了熟练,易懂的原则。让我明白了要多参考别人优秀的程序,借鉴别人的有点,使自己的编写能力得到提高。虽然我在编程中犯了很多错误,但是通过不断的修改,
14
不断的请教别人的经验,终于实现了准确编写了本次毕业设计的代码,并且在解决错误,明白错误中让我受益匪浅。对于单片机这门技术有了更进一步的了解,对于一个陌生的题目也知道了如何下手。总之,只有通过自己的实践才能真正理解上课时的内容,才能真正掌握单片机这门技术。
15
参考文献
[1]余永泉.ATMEL89系列单片机应用技术[M].北京航空航天大学出版社,2002,4 [2]肖洪兵.跟我学用单片机[M].北京航空航天大学出版社,2002,8 [3]叶启明.单片机制作的新型安全密码锁[J].家庭电子,2005,10
[4]郭海英.基于单片机的电子安全密码锁的设计[M].现代电子技术,2005,3 [5]董继成.一种新型安全的单片机密码锁[J].电子技术,2004,3
[6]祖龙起、刘仁杰、孙乃凌.
一种新颖的电子密码锁[J].电子世界,2001,3
16
致 谢
三年的大学生活不知不觉中就要结束了,在这段难忘的生活中,有我许多美好的回忆。在我的心中,除了不舍,还是不舍,我想,有许多人是我要用一辈子去铭记的。
在这份大学的最后一页里,我要感谢的人很多,首先要感谢我的学校,感谢在这三年中教给我的做人道理,一让我从一个懵懂的高中生变成一个成熟的青年。还要感谢我的论文指导老师王老师,在她的指导下我完成了论文,王老师多次为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。王老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,给以终生受益无穷之道。我从心里感谢她。还要感谢的是我们各课任课老师,他们从大一把我们迎进来,到现在把我们送走,在三年来一直照顾我们的学习和生活,所以在这一也一定要特别感谢他们。当然,还要感谢同班的同学们在我完成论文的过程中给予我的帮助和鼓励,也是他们陪我度过这三年的生活最后生活。最后要感谢的就是我的父母、朋友,对于他们我更是有千言力语,还是汇聚成一句话:感谢你们一直都伴随着我。
现在即将挥别我的学校、老师、同学,还有我四年的人学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿!
17
因篇幅问题不能全部显示,请点此查看更多更全内容