基于单片机的电子密码锁的设计与仿真2013_第1页
基于单片机的电子密码锁的设计与仿真2013_第2页
基于单片机的电子密码锁的设计与仿真2013_第3页
基于单片机的电子密码锁的设计与仿真2013_第4页
基于单片机的电子密码锁的设计与仿真2013_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子信息工程课程设计电子综合课程设计报告设计课题:基于单片机的电子密码锁设计专业班级:09级电子1班 组长: 学号:20090813007组员: 学号:20090813005 学号:20090813007 学号:20090813010 学号:20090813013指导教师: 设计时间: 12年11月20日12月20日摘 要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来

2、越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。基于以上思路,本次设计使用ATMEL公司的AT89C52实现一基于单片机的电子密码锁的设计,其主要具有

3、如下功能:1. 设置8位密码,密码通过键盘输入,若密码正确,则将锁打开。2. 密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3. 报警、锁定键盘功能。密码输入错误液晶显示器会出现错误提示。4. 电子密码锁的设计主要由三部分组成:4×4矩阵键盘接口电路、密码锁的控制电路、输出显示电路。另外系统还有LED提示灯,报警蜂鸣器等。密码锁设计的关键问题是实现密码的输入、清楚、更改、开锁等功能:1) 密码输入功能:按下一个数字键,一个“*”就显示在最右边的液晶屏上。2) 密码清除功能:当按下清除键时,清除前面一位输入的

4、密码,并清除对应的“*”。3) 密码更改功能:将输入的值作为新的密码。4) 开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。AbstractIn our daily life, the security of house, company department, documents and finance forms, also some personal information always used the lock to protect them. If use the normal keys to lock out the door, we shoul

5、d taken many keys with ourself.That is so difficult to use. And if we lost the keys with careless, the security looks very easy to break out. As the developing of the technology,peopleask for high security machines.For satisfy this request, the cipher lock is appeared.The cipher has higher security,

6、 lower cost, lower power and easy to use. Base on the thinking of the cipher lock, this design uses AT89C52 of ATMEL COMPANY to carry out the SCM digital cipher lock, its main function as follow:1. set password with 8 words, enter the words via keyboard, if enter the right number, the lock will unlo

7、ck.2. password can set and fix by yourself, you can just fix the password when the lock is keeping unlock. It need to enter the new password twice to avoid the wrong activity.3. alarm function. If enter the wrong password, the mon will show the error message.this lock is made by 3 parts: gob circuit

8、 of 4x4 matrix keyboard , gob circuit of cipher lock, gob circuit of 8 way display output. other wise, the system has LED light, and warning buzzer.the main function of this cipher lock is carried out enter, clear, and change the password, and unlock the door.1. enter the password: press one number

9、button, one signal "*" will show on the digital tube on the right side.2. clear the password: press the clear button to clear the last code you have enter before one by one.3. change the password: use the new enter number as the new password.4. unlock function: press the unlock button, the

10、 system will check up the enter number and password, if yes the lock will open, if not it keep lock.目 录摘 要IIAbstractIII目 录IV第一章 引言11.1 题目背景11.2 电子锁11.3 电子密码锁的特点11.4 电子密码锁的的发展趋势2第二章 系统方案选择32.1 总体方案比较与论证3方案一:基于8D锁存器74LS373的锁存密码电路3方案二:以STC89C52为核心的单片机控制方案32.2 显示方案的选择4方案一:使用LCD1602进行显示4方案二:用数码管来显示52.2 密

11、码输入方式的选择5方案一:指纹输入识别5方案二:矩阵键盘输入识别5第三章 系统总体介绍和主要芯片介绍63.1 系统总体介绍63.2 主要芯片介绍73.2.1 STC89C5273.2.2 存储芯片 AT24C0293.2.3 LCD1602显示器10第四章 硬件电路设计124.1 键盘输入模块124.2 密码存储电路134.3 复位电路134.4 显示电路134.5 报警显示电路144.5 状态显示及继电器控制电路14第五章 软件设计155.1 软件设计方案155.2 软件设计总流程图165.3 具体功能软件实施175.3.1 键盘扫描175.3.2 液晶显示195.3.3 密码保存205.3

12、.4 密码修改21第六章 仿 真与调 试226.1 硬件调试226.2 软件调试23第七章 结论与心得25参考资料26附 录27附 录27附 录28- 44 -第一章 引言1.1 题目背景随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。目前国内,大部分人使用的还是传统的机械锁。然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。所谓互开率,是各种锁具的一个技术质量标准,也就是1把钥匙能开几把锁的比率。经国家工商局、国家内贸局、中国消协等部门对锁具市场的调查,发现个别产品的互

13、开率居然超标26倍。为何弹子锁的“互开率”会如此之高?据有关专家人士剖析,弹子锁质量好坏主要取决于弹子数量的多少以及弹子的大小,而弹子的多少和大小受一定条件的限制。此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。机械锁的这些弊端为一种新型的锁-电子密码锁,提供了发展的空间。1.2 电子锁电子锁是采取电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的机电一体化锁具,相比传统的机械锁具,电子锁不使用金属钥匙,保密性、精度都有很大提高。 电子锁的发明思路,源自古代发明的自动机械,例如古希腊数学家赫伦的液压自动门,中国古代诸葛亮的木牛流马,它们以重力或蒸汽压力驱动

14、,最广泛的用途乃是用在古代墓道的地下机关。电子工业的诞生,使得以微小电量驱动机械成为可能,于是有了电子锁一日千里的跃进。1.3 电子密码锁的特点电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,主要特点如下:1. 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2. 密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。3. 误码输入保

15、护。当输入密码多次错误时,报警系统自动启动,防止试探密码。1.4 电子密码锁的的发展趋势从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。因此,为了

16、发扬优点、克服弱点,键盘式电子密码也在不断发展中,如“任意设定密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新;而“自动更改密码”技术使得本次输入的密码将自动更改成下次应输入的密码,更改的规律不为他人所知,因而不怕旁观者窥测;独出心裁的“键盘乱序显示”技术使得键盘上的固定键位每次显示出的字符不固定,并且显示的窄小角度只能由操作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码;“多重密码设定”技术使得单组密码不一定有效,适合多人分权使用,需要输入两组以上的密码才被认可,大大提高了保密性,如果限定输入这些密码的先后顺序或时间区段,则保密性还可提高。在输入密码的过程中,为了限

17、制试探密码的企图,通常输入错误码若干次或若干时间内输入不正确,即“封锁”键盘,不再接受输入操作。总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。第二章 系统方案选择2.1 总体方案比较与论证方案一:基于8D锁存器74LS373的锁存密码电路此方案采用两个8D锁存器74LS373用于存储密码和接收输入信号,两者进入比较器进行比较。共设有八个用户输入键,74LS373为密码存储器件。先将74LS373的C和OC端置低电平,使其处于送数状态。当输入密码后将OC置于高电位,则锁存器将密码信号锁存,然后按键复位。当下次开

18、锁时只有在规定时间内,规定次数内输入密码才会发出开锁信号,否则不能开锁。并且,当时间或输入次数到达一定值后,电路会自锁一段时间,并发出警报声。警报结束后,电路回复原状,计时及计数归零,直至下一次开锁动作。第一部分是密码输入部分,由八个开关构成,密码输入共有28=255种输入方式(注:从0000-1111 共256种组合),但能正确开锁的输入方式只有1种,安全性较高。第二部分是由74LS373组成的密码锁存电路,通过控制74LS373的芯片管脚特性来控制芯片的工作状态。第三部分是由74LS85组成的比较器(或者是同或门组成的比较电路),来比较输入信号与寄存密码的相等与否。第四部分是有二极管构成的

19、开锁信号电路,黄灯处于待开状态,绿灯表示开锁正确,红灯及警报声表示开锁错误或者是锁存状态。第五部分是计时及计数部分,计时表示从准备开锁到开锁完成所规定的时间,以及锁存时期的锁存时间,计数记录的是误操作的次数。方案二:以STC89C52为核心的单片机控制方案选用单片机STC89C52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键09输入密码。密码输完后按下确

20、认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后可以设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接显示器,键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标,而且单片机编程设计灵活、I/O端口丰富、控制的准确性高,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制等附加功能,此外单片机方案有较大的活动空间,不但能实现所要求的功能,还能在很大的程

21、度上扩展功能,而且还可以方便的对系统进行升级。综上分析:方案一虽然设计简单但密码输入控制复杂、实用性不是很强,并且不能实现密码保存。而方案二设计复杂,使用方便,安全性好,功耗低,成本低,而且容易操作保密性强。故在此设计中,我们选用第二种方案,即利用单片机实现密码锁的控制。2.2 显示方案的选择方案一:使用LCD1602进行显示由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,因此液晶显示器画质高;同样液晶屏的功率消耗比较小;液晶是平板型结构,由两片玻璃组成的夹层盒,面积可大可小,安装时占用面积小减小了设备的体积;液晶的信息量大相同的面积上与数码管比可以显示更多的信息;且他本

22、身没有老化问题寿命极长;与数码管相比液晶屏显示的更能够看懂,他能将英文细腻的显示出来是数码管做不到的。然而液晶屏也可在阳光下工作,具有防风、防雨、防水功能。这就说明能够使用在室外。但是液晶在阳光强的时候会反光是视角模糊看不清楚,对于这个现象由于屏幕较小可以用手挡住阳光是自己看的清楚一点。 图21 液晶显示 方案二:用数码管来显示图22 数码管显示与液晶相同也能显示数字和字母,但是在显示字母的时候没有液晶那么细腻很难辨认,而且用数码管显示一个较长的英文就会用到好几个数码管扩大了空间,就显得美观。数码管的优点是在强光下也能看清上面显示的内容。 综合两方案的比较用液晶显示比较合适。2.2 密码输入方

23、式的选择方案一:指纹输入识别指纹识别技术主要设计四个功能:读取指纹图像、提取特征、保存数据和对比。通过指纹读取设备读取到人体指纹的图像,然后对原始图像进行初步的处理,使之更加清晰,再通过指纹识别软件建立指纹的特征数据。软件从指纹上找到被称之为“节点”的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一特征。通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。这些数据通常被称之为模板。通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果,从而判断输入结果的正确与否。方案二:矩阵键盘输入识别由各按键组成的矩阵

24、键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,每当一个按键按下就会由某一条行线与某一条列线接触,只要确定接触的是哪两条I/O口线,就可以确定哪一个按键被触动。行线初始置于高位,通过不断读行线口线,或者中断方式触发键位扫描。当发现有键按下,将列线逐一置低,其他列线置高,读取行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。方案比较:方案一虽然比较安全,不容易忘记密码但是软硬件太过复杂,很难操控且成本很高。而方案二简单易行,可以进行程序控制,成本较低。故选取方案二作为设计的输入部分。第三章 系统总体介绍和主要芯片介绍3.1 系统总体介绍本设计主

25、要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成其中矩阵键盘用于输入数字密码和进行各种功能选择的实现。由用户通过连接单片机的矩阵键盘输入密码后,经过单片机对输入密码与自己保存的密码进行比对,从而判断出密码是否正确,然后控制引脚的高低电平传到开锁电路或者警报电路控制开锁还是报警。实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁吸合线圈即可。系统整体框图如图3-1所示。STC89C52键盘输入复位电路晶振电路显示电路报警电路开锁电路图 3-1 结构框图各模块功能如下:1. 键盘输入模块:分为密码输入按键和几个功能按键,用于完成密码锁输入功能。2. 显示模块:用于完成对系统状态显示及操作

26、提示功能。3. 复位电路:完成系统的复位4. 报警电路:用于完成输错密码时候的警报功能5. 密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存6. 开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及显示 3.2 主要芯片介绍3.2.1 STC89C52图3-1AT89C51芯片MCS-51 系列中的各种芯片引脚是互相兼容的,其中STC89C52单片机是高性能的单片机。在不接任何外围电路的情况下可以实现大部分较为复杂的逻辑控制功能,进行外部RAM扩展还可以用于数据采集,点阵显示屏控制等方面应用。对于存储量要求不高的实际应用,STC89C52是一种不可多得高性能的单片机,被广泛应用于

27、各个领域。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、

28、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 STC89C52的引脚图如图32:VCC:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。32 STC89C52引脚图P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“

29、1”,通过内部的上拉电阻把端口拉到高电平。作输入口使用时,因内部有上拉电阻,不需要外接上拉电阻。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P3口:P3口作为一般I/O口线的情况与上述相同。但更重要的用途是它的第二功能。第二功能如下:表3-1 P3端口第二功能说明P3.0 RXD(串行输入

30、口)P3.4 T0(记时器0外部输入)P3.1 TXD(串行输出口)P3.5 T1(记时器1外部输入)P3.2 /INT0(外部中断0)P3.6/WR(外部数据存储器写选通)P3.3 /INT1(外部中断1)P3.7 /RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:地址锁存允许。当单片机方位外部存储器时,该引脚的输出信号ALE用于锁存P0的八位地址。输出频率为时钟频率的1/6。PSEN:程序存储器允许,输出外部程序存储器的选通信号。/VPP:当=0时,单片机只访问外部程序存储器。当=1时,单片机只访问内部程序存储器。

31、  XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。  XTAL2:来自反向振荡器的输出。3.2.2 存储芯片 AT24C02图33 24C02的实物图AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。 24c02引脚说明:图34 24C02的引脚功能图SCL:串行时钟信号引脚 在 SCL 输入时钟信号的上升沿将数据送入 EEPROM器件,并在时钟的下降沿

32、将数据读出。SDA:串行数据输入/输出引脚 SDA 引脚可实现双向串行数据传输。该引脚为开漏输出,可与其它多个开漏输出器件或开集电极器件线或连接。A0,A1,A2地址输入引脚。当使用24C02时最大可级联8个器件,如果只有一个24C02被总线寻址,这三个地址输入脚A0,A1,A2可悬空或拉高。WP写保护,当WP接地时,允许对器件的正常读写操作;当WP接高电平时,写保护,只能进行读操作。VCC,GND电源,接地引脚,1.8-5.5v24c02内部寻址,读/写操作:图35 24C02寻址方式前八位是地址地址信号,从最高位(MSB)开始,其中前四位是固定值1010,后三位有管脚A0、A1、A2的基地

33、情况确定。最后一位是读写控制信号,0表示写,1表示读。若与SDA线发送过来的地址比较一致,则器件输出应答0,否则将返回等待状态。器件内部地址寻址是在器件寻址之后,对256个字节进行寻址,直接传送8位地址信号(00-FF)对应于器件内部的地址。写操作:先由主机发送起始命令,再发送送器件地址,当主机接收到器件的ACK应答后,便继续发送内部字节地址,当接收到ACK应答后继续发送数据,当8位数据发送完毕之后,主机接收到器件的ACK应答,在发送停止信号。图36 24C02写寻址读操作:内部地址计数器存放着上一次访问时最后一个地址加1的值,只要芯片有电,该值就被保存。当读到最后页的最后字节,该地址变为0;

34、当读到某页的页尾时,该地址转向该页页首。图37 24C02读寻址3.2.3 LCD1602显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD液晶显示模块具有体积小,功耗低,显示内容丰富等特点,超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。 可以显示2行16个字符,有8位数据总线D0D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有对字符对比度调节和背光功能。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如

35、大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A。 LCD1602各引脚功能如下表所示:表3-2 LCD1602各引脚功能说明编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 1

36、4 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 基本操作时序:读状态: 令RS=L,RW=L,E=H 输出:D0D7=状态字读数据: 令RS=H,RW=H,E=H 输出:无写指令: 令RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:D0D7=数据写数据: 令RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无状态字说明STA7D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0STA0-6 当前数据地址指针的数值;STA7 读写操作使能 1:禁止 0:允许1602系列中有11种状态字,对应不同指

37、令,具体见datasheet。第四章 硬件电路设计本系统外围电路包括键盘输入部分、密码存储部分、复位部分、显示部分、报警部分、开锁知识部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。其原理图见附录。4.1 键盘输入模块由于本设计所用到的按键数量较多而不适合用独立按键。采用的是矩阵式按键键盘,由行和列组成,也称行列式键盘。本设计采用4×4触点式键盘,分别有数字键,确定键,清除键和干扰键。在软件设计中,通过对键盘的编程,可实现各按键功能。它与单片机的连接如图如图31所示,图31 按键图具体的功能设计

38、如表3-1所示:表3-1 按键功能按键键名功能说明1-9键数字键输入密码S1开锁键开始输入密码S2闭锁键开锁后,闭锁S3重置密码键重新设定密码清除清除键清除上一位输入确认确认键操作确认S4-4.2 密码存储电路由52单片机掉电后会丢失数据存储器里的数据,因此必须外加掉电存储电路,由AT24C02芯片来实现。图32掉电保护电路图32所示的AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址,此次电路将它们都接地。第4脚和8脚分别为电源、地线。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传输,本电路SDA与单片机P3.1相连。第6脚SCL为串行时钟输入线,与单片机P

39、3.0相连。AT24C02芯片的管脚图如图32所示:4.3 复位电路复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。当8XX51单片机的复位引脚RST出现5ms以上的高电平时单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求复位后能脱离复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位、开关复位。上电复位要求接通电源后,自动实现复位操作。本设计使用常见的上电且开关复位。电路图如图33所示:图33复位电路4.4 显示电路显示部分由液晶显示器1602完成。开锁时,按下键盘上的开锁按键后,利用键盘上的数字键0-9输入密

40、码,没按下一个数字键后在显示器上显示一个“*”,输入多少位就显示多少个“*”。当密码输入完成时,按下确认键,根据输入密码的正确与否,LCD上显示对应的状态。如果密码输入成功,还可进行密码重置,对应的提示信息在LCD上也会显示。通过LCD显示屏,可以清楚地判断出密码锁所处的状态。电路图如图34所示:图34复位电路4.5 报警显示电路报警部分由有源蜂鸣器及外围电路组成,单片机加电后不发声,当有键按下时,“叮”声,每按一下,发声一次。密码输入正确时,不发声直接输出开锁信号。当密码错误次数达到三次时,单片机P2.3口高低电平震荡,蜂鸣器发出警报声,电路其他部分锁死。警报到达一定时间后,自动回到闭锁状态

41、。电路中三极管NPN处在开关状态,受P2.3口控制,当P2.3为低电平时,蜂鸣器无电源,当P2.3为高电平时,三极管导通,蜂鸣器受5V供电。对应电路图如图35所示:图35警报电路4.5 状态显示及继电器控制电路 状态显示及继电器控制电路,主要用于显示密码锁的开锁闭锁状态。本设计中利用两个LED灯显示,由P3.4口控制的绿色LED表示密码锁开锁状态,由P3.5口控制的红色LED表示密码锁闭锁状态。同时,利用P3.3口控制继电器的通断,实现弱点控制强电。P3.3口与P3.4口相同,表示同一含义,这样设计的主要原因是由于在电路中P3.4口外接LED,其电压无法使5V继电器工作。对应电路图如图36所示

42、:图36状态显示及继电器控制电路第五章 软件设计5.1 软件设计方案主要完成,开始时液晶显示初始状态。当有开锁请求时,按下S1,进入密码输入阶段。输入密码输入过程中可以进行退格,输入完成后按下确认键,系统会将所输入与系统密码进行比对。若输入密码正确则显示“*Open*”开锁,输出开锁信号,然后可以选择上锁或者修改密码。按下S2选择上锁,锁重新回到闭锁状态,开锁信号灭,LCD回到初始化状态。选择修改密码则可以对系统进行修改密码操作。在修改密码前要输入正确旧的密码。正确输入旧密码之后,会有提示输入两次新密码,若两次密码一致,则修改成功。期间操作出现失误,如两次新密码输入不相同,或者密码位数不到8位

43、时,系统会返回锁开前即选择重新设密码前的状态。如果密码输入错误,错误警告灯亮,LCD显示错误,并显示输入错误限制次数。一段时间后,进入闭锁状态。若连续操作错误超过3次,一定时间内系统会锁定键盘,并报警用以防止恶意试探密码。如果在规定次数以内密码输入正确,则锁开,且错误次数清空,不会影响到下一次的开锁。软件采用模块化设计,在程序中以一个主函数,多个子函数的方式编写,主要子函数见后续介绍。5.2 软件设计总流程图图51 密码锁的总流程图5.3 具体功能软件实施 5.3.1 键盘扫描键盘设计应用编程式扫描方式,利用CPU完成其它工作的空余时间来调用键盘扫描子程序,响应键盘输入的要求。在执行键功能时,

44、CPU不再响应键输入要求,直到CPU开始重新扫描键盘为止。扫描程序包括:1.判别有无按键按下;2.扫描键盘,取得闭合键的行、列值;3.判断闭合键是否释放,如未释放继续等待;4.将闭合键号保存,同时转去执行该闭合键的功能。键盘扫描程序如下:uchar get_key()uchar row_code;uchar col_code;P1=0xf0;if(P1!=0xf0)delayms(200);if(P1!=0xf0) delayms(2);row_code=0xfe;while(row_code!=0x7f)P1=row_code;if(P1!=row_code)col_code=(P1&

45、;0xf0)|0x0f;beep();return(col_code)|(row_code);row_code=(row_code<<1)|0x01); return(0x00);实现流程图如下:图52 键盘扫描流程图按键消抖设计采用的是机械触点式按键。机械式按键在按下和释放时,图5-3 机械抖动原理由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后起触点才稳定下来。抖动时间的长短与开关的机械特性有关,一般为5 10 ms。在触点抖动期间检测按键的通断状态,可能导致判断错误。既按键一次按下或释放被错误的认为是多次操作,这个是不允许出现的,为了克服按键触点机械抖动所导致的

46、检测误判,必须采取去抖动措施,由于按键多几考虑软件去抖。在检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时,然后确认该按键是否保持闭合状态的电平,若是,则确认该键处于闭合状态;同样,在检测到该键释放后用同样方法确认,从而可消除抖动的影响。5.3.2 液晶显示使用1602的的一般流程基本是:A:初始化初始化里面一般有设置显示行、清屏、设置光标的开关、光标的闪烁、设置起始地址、设定显示屏或光标移动方向指令。B:写命令、写数据写命令是按照那个时序图写的,时序图给低就写低,延时就延时,或写高就写高。基本操作时序:读状态 输入:RS=L,RW=H,E=H 输出:DB0D

47、B7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无C:送显示根据LCD1602 datasheet 编写以下LCD显示相关控制及显示程序:void Write_LCD_Command(uchar cmd)/*送指令RS = 0;RW = 0;EN = 0;P0 = cmd;Delaymms(1);EN = 1;Delaymms(1);EN = 0;void Write_LCD_Data(uchar dat)

48、/*送数据RS = 1;RW = 0;EN = 0;P0 = dat;Delaymms(1);EN = 1;Delaymms(1);EN = 0;void Initialize_LCD()/*初始化 Write_LCD_Command(0x38);Write_LCD_Command(0x0c);Write_LCD_Command(0x06);Write_LCD_Command(0x01);void lcm_setxy(uchar x,uchar y)/*选择显示位置if(y=1) Write_LCD_Command(x|0x80);if(y=2) Write_LCD_Command(x|0xc

49、0);void lcm_write_string(uchar *string)/*输入显示内容uchar i=0;while(stringi!='0')Write_LCD_Data(stringi);i+;5.3.3 密码保存本次设计密码保存使用的是EPROM 24C02进行密码保存。24C02通过SDA和SCL两根口线可以实现与单片机的I2C通信。主要工作情况:以启动信号START来掌管总线,以停止信号STOP来释放总线; 每次通讯以START开始,以STOP结束; 启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R. /W位

50、为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据; 当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;写通讯过程: 1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线; 2. 发送一个地址字节(包括7位地址码和一位R/W); 3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4. 主控收到ACK后开始发送第一个数据字节; 5. 被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束; 6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;读通讯过

51、程: 1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线; 2. 发送一个地址字节(包括7位地址码和一位R/W); 3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4. 主控收到ACK后释放数据总线,开始接收第一个数据字节; 5. 主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束; 6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;本次设计过程中,参考24C02的数据手册,基于其基本的读写过程,编写了能够实现本次设计要求的程序。如密码读取,密码存入等,由于程序过多,具体程序见附录程序中24

52、C02相关程序。5.3.4 密码修改用户能根据自己的需要修改密码,按下选择键用户进行密码的修改。密码输入成功之后,锁开,根据LCD提示选择回到锁定状态或者重新设置密码。如果选择S3,即重置密码,则进入密码修改程序。首先输入旧密码一次,如果正确便进行密码的修改再输入新的密码两次,两次的密码进行比较,如果两次密码相同密码修改成功,不同就会从新输入新的密码,再进行比较,相同之后提示密码设置成功。具体的流程图见总流程图,程序见附录passwordchg()子程序。第六章 仿 真与调 试6.1 硬件调试1.液晶显示模块的硬件调试利用proteus画好相应的硬件流程图,注意液晶显示器LCD1602的各个引

53、脚,尤其与单片机的接口,在硬件调试的测试软件中要对它的控制引脚进行定义。他的硬件调试电路如图5-1所示图61硬件显示调试图实际电路中,注意LCD1602数据口、控制口与单片机的交互,注意背光源正极和负极的连接以及背光调节旋钮的正确安装。此次制作中,画出PCB板后,将LCD插入对应位置,通电后发现LCD显示非常不明显,通过调节VEE端口的可变电阻器调节液晶显示偏压达到比较好的效果。2. 按键测试此次电路中采用的是4×4矩阵键盘输入,这种接口方式适用于按键数量较多的场合。也正是因为有16个按键,所以他们之间的连接线比较多,行线、列线的交点是这部分的关键。矩阵键盘搭建好之后,用万用表测试过

54、各条行线和列线,均为导通状态。出于方便经济和可移植性考虑,实际操作过程中我们选择的是外接成品的键盘电路。不仅价格便宜,可移植性高,而且制作比手工要好一些,直接利用排线和对应的I/O口相连即可。3. 蜂鸣器测试此次电路中采用有源蜂鸣器用于按键声和报警功能。为确保实验成功,需使蜂鸣器满足要求。有源蜂鸣器应注意其+ 、-管脚。焊接前,先搭线测试,使蜂鸣器的+端接震荡信号,-端接地,看蜂鸣器是否能够正常发出声音。4. 其它元器件测试检测其它元器件的性能是否能够正常工作,如电阻、电容、LED、7805、继电器,开关等器件。5. 整机安装调试本电路的各个模块的设计及最终效果都是在Proteus仿真软件的辅助下得以形成的,都在在Proteus中仿真得以通过了,达到了预期效果,也就是说电路在逻辑上是行的通的。由于电路模拟的结果并不能完全准确的模拟实际电路,所以这里的调试主要就是针对实际电路中出现的问题或不稳定情况进行调试。在样品加电前,根据硬件设计图,数字万用表等工具仔细检

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论