您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于C语言STC89C52单片机电子密码锁的设计
-1-电子密码锁的设计摘要:本设计阐述通过Proteus软件成功仿真的电子密码锁的实现过程,选用STC89C52单片机为核心的系统来实现按键输入、开锁和密码识别。采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602A液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能。关键词:Proteus;密码锁;单片机;C语言DesignofElectronicCodeLockUsingSTC89C52MCUBasedonCLanguageAbstract:ThepaperintroducestheimplementationoftheelectroniccodelockwhichwassuccessfullysimulatedbyProteus.ItusesSTC89C52single-chipmicrocomputertoachievekeyinput,theunlockingandidentificationofthecode.ItadoptsI2CbusbasedE2PROMchiptocompletethecode'sstorage,usingLCD1602Atoprompttheprogram'srunningstateandworkingprocedures,adoptingbuzzertoimitatethealarmandLEDtoimitatetheswitch.ItisconvenienttomodifyandaddfunctionbyusingClanguageprogram,whichismoretransplantableandreliablecomparedtoassemblylanguage.Keywords:Proteus;codelock;single-chipmicrocomputer;Clanguage-2-一、前言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。随着单片机的问世,出现了电子密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户的青睐。电子密码锁通常使用ARM和单片机控制[1],单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的密码锁常使用汇编语言编写程序,数码管做显示器[2]。但本设计使用移植性及可读性强的C语言[3-5]编写;同时采用显示清楚、功率消耗小而且寿命长的1602A液晶显示器。从经济实用的角度出发,采用STC89C52单片机设计出一种具有密码设置、报警等功能的电子密码锁,并通过Proteus[6]软件成功地进行了仿真。二、总体方案设计2.1方案论证与比较方案一:以STC89C52单片机为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A显示器提示程序运行过程和开锁的步骤,利用AT24C02芯片实现掉电存储。图1为单片机控制密码锁的系统原理框图。图1单片机控制密码锁的系统原理框图方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案,如图2。STC89C52单片机AT24C02存储芯片矩阵键盘控制LCD1602A蜂鸣器提示电路电源模块LED密码校验提示-3-图2数字逻辑控制方案电子密码锁原理框图2.2方案选择由于利用单片机灵活的编程设计和强大的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。三、单元模块设计3.1硬件支持使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602A、4×4矩阵键盘、报警蜂鸣器、发光二极管和三极管。3.2功能单元模块设计3.2.1开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。如图3所示,为密码锁开锁电路原理图。当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。本次设计中,基于节省成本考虑,用发光二极管代替电磁锁,信息通过LCD显示,并利用蜂鸣器和二极管声光指示。其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路。输入按扭开关组输入锁存电路密码存储电路开锁控制电路机械动作构件5秒定时电路20秒定时电路声光指示电路-4-图3密码锁开锁电路原理图3.2.2矩阵键盘设计电路每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M×N个按键的键盘。由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。本设计中,矩阵键盘行线和单片机P1.0-P1.3相连,列线与单片机P1.4-P1.7相连。矩阵键盘设计电路图,如图4所示。键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。图4矩阵键盘设计电路图开锁驱动电路STC89C52单片机密码正确超次锁定电磁锁是否1234567890输入密码确认更改密码***-5-3.2.3声音提示电路设计声音提示电路采用小蜂鸣器提示。蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。蜂鸣器电路,如图5所示。图5蜂鸣器电路3.2.4显示模块设计本设计中,显示电路采用1602A液晶显示器显示[7]。如下所示,图6为1602A液晶显示器的接口示意图,表1为接口说明。图61602A液晶显示器的接口示意图表1接口说明管脚序名称电平功能描述1VSS0V接地2VCC5.0V电源输入3V0—LCD驱动电压输入4RSH/L寄存器选择:RS=H,选择数据寄存器;RS=L,选择指令寄存器5R/WH/L读写信号线:R/W=H,读操作;R/W=L,写操作6EH,H→L使能信号7DB0H/L数据线8DB1H/L数据线-6-9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15BLA5.0V背光电源正极16BLK0V背光电源负极本设计中液晶串口一共用到11根导线与单片机相连,具体连接情况如表2显示模块与MCU连接说明所示。表2显示模块与MCU连接说明序号1602A液晶显示器引脚STC89C52单片机引脚1RS引脚P2.5(A13)2R/W引脚P2.6(A14)3E引脚P2.7(A15)4D0引脚P0.0(AD0)5D1引脚P0.1(AD1)6D2引脚P0.2(AD2)7D3引脚P0.3(AD3)8D4引脚P0.4(AD4)9D5引脚P0.5(AD5)10D6引脚P0.6(AD6)11D7引脚P0.7(AD7)3.2.5AT24C02掉电存储单元的设计本设计中掉电存储单元采用AT24C02外部存储器[8-9],其作用是在系统电源断开的时候,存储当前设定的密码数据。AT24C02是一个2K位串行CMOSE2PROM,内部含有256个8位字节,含一个16字节页写缓冲器,具有写保护功能。其采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。如下所示,图7为AT24C02管脚示意图,表3为AT24C02管脚说明。图7AT24C02管脚示意图A0A1A2GNDSDASCLWPVCC12348765C02-7-表3AT24C02管脚说明管脚名称功能管脚名称功能A0A1A2器件地址选择SDA串行数据/地址SCL串行时钟信号WP写保护VCC1.8V-6.0V工作电压VSS接地本设计中,AT24C02的SCL和SDA引脚接上拉电阻后与单片机的P3.4(T0)和P3.5(T1)脚相连,其电路图如图8所示。图8AT24C02掉电存储单元设计图四、程序设计与系统仿真4.1模块介绍与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、1602A液晶显示模块等[10]。系统程序流程如图9所示。-8-图9系统程序流程图开始系统初始化调用E2PROM密码显示主界面输入密码判断密码确定密码开锁模拟声光锁定键盘YN返回Y判断次数N超过N次未超过N次再次输入密码密码设置完毕N设置新密码Y按键N判断按键值返回主界面NY设置解码次数产生随机密码输入密码N=0x84N=0x82N=0x11-9-4.1.1主程序模块主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据;检测按键;调用显示等功能。4.1.2密码比较判断模块该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。其密码输入和比较判决流程图如图10所示。图10密码输入和比较判决流程图4.1.3键盘扫描模块键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。如图11所示,为键盘扫描流程图。输入密码核对键盘锁定,开启报警电路开锁,灯亮,可密码修改NY复位-10-图11键盘扫描流程图4.1.4修改密码模块在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。图12为修改密码流程图。开始延时去抖动计算输入键值键值送入单片机有按键输入?有按键输入?有按键输入?返回NNYY-11-图12修改密码流程图4.1.51602A液晶显示模块此模块包括液晶初始化、命令的输入等。4.2Proteus仿真电路开始输入原密码密码比较比较正确?输入新密码再次输入新密码调用AT24C02中密码比较正确修改成功返回菜单键盘锁定,启动报警电路复位YN-12-图13电子密码锁仿真图五、系统功能本设计中系统可实现功能如下:(1)通过切换,对输入的4位密码进行显示或隐藏;(2)通过发光二极管和蜂鸣器,对解密正确或者错误进行声光报警;(3)4位密码修改;(4)在密码遗失情况下,通过初始密码进行密码再设置;(5)采用AT24C02外部存储器,完成断电密码保护功能;(6)具有1-9次的解锁次数任意设定功能;(7)模拟密码箱随机产生密码,并进行解码。-13-六.设计总结从基本方案的制定,到硬件电路的选择,再到电路的焊接,最后进行程序调试——在此期间我们遇到很多困难,但经过团队的不懈努力,终于击破了各个难点,达到的所需要的效果。在这次设计中,我们深刻认识到自身的不足——缺少实战经验。与此同时,也因为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。由于本次设计时间有限,一些设想没有完全实现,比如说:电子密码锁的网络通信扩展,人机界面智能化等。期待以后有机会对以上设想进行进一步研究实践。参考文献[1]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,28(13):95-97.[2]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2003.[3]谭浩强.C程序设计[M].北京:清华大学出版社,2005[4]杨章伟,韩雪,张浩然.跟我学C程序设计[M].北京:清华大学出版社,2010[5]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社,2002[6]周润景,张丽娜,丁莉.基于PROTEUS的电路及单片机设计与仿真[M].北京:北京航天航空大学出版社,2010[7]2007071
本文标题:基于C语言STC89C52单片机电子密码锁的设计
链接地址:https://www.777doc.com/doc-2569101 .html