基于51单片机的智能密码锁

上传人:痛*** 文档编号:129156873 上传时间:2022-08-02 格式:DOC 页数:24 大小:703KB
返回 下载 相关 举报
基于51单片机的智能密码锁_第1页
第1页 / 共24页
基于51单片机的智能密码锁_第2页
第2页 / 共24页
基于51单片机的智能密码锁_第3页
第3页 / 共24页
点击查看更多>>
资源描述
单片机的电子密码锁 目录第一章 绪论.21.1电子密码锁简介.21.2电子密码锁设计的背景及意义.3第2章 总体设计.3 2.1设计分析.3 2.2系统构造.4第3章 硬件电路设计.5 3.1单片机最小系统设计.5 3.1.1时钟电路.5 3.1.2 复位电路 .6 3.1.3 最小系统 .6 3.2 矩阵键盘设计 . 7 3.3 LCD显示模块设计 .8 3.4 开锁机构 . .9 3.5 报警机构 . .10 3.6 硬件综合设计 . .10第4章 软件设计 . .11 4.1 软件总体设计 .11 4.2 键盘扫描子程序 . .12 4.3 定期器中断子程序 . .14 4.4 密码输入子程序 .15 4.5 报警子程序 .16总结 . .17 参照文献 . .18 附录 程序源代码 . .19摘要:本文中将要简介的单片机电子密码锁是一种通过判断密码输入与否对的来控制电路或是芯片的工作状态,进而控制锁的打开和闭合。本设计是基于STC89C52单片机为控制核心的密码锁设计方案。在本次基于单片机的电子密码锁设计中,将采用STC89C52单片机作为控制核心,配合相应的电路和软件程序,实现密码的输入和修改、信息的显示、键盘的锁定、系统报警、开锁和闭锁等功能。在设计中运用辨认密码与否对的来开锁或报警,通过串行存储器AT24C02来实现密码的修改和存储。本文设计的密码锁具有安全性高、功耗低、操作简朴等长处。核心词:单片机;密码锁;矩阵键盘;掉电存储 第1章 绪论 1.1 电子密码锁简介 什么是电子密码锁?“一种通过密码输入来控制电路或者是芯片工作,从而控制机械开关的闭合,完毕开锁、闭锁任务的电子产品。”百度百科上是这样解释的。简朴来说,电子密码锁就是可以实现密码等信息的设立、存贮、辨认和显示,以及报警信号的接受和发送等功能的电子器件。 电子密码锁相对老式机械锁有如下几种优势: (1)密码可更改。顾客可以随时更改密码,以保证密码锁的安全性和可靠性。可以更改密码这一功能同步也避免了人员的更替而使锁的安全性减少,这是老式钥匙锁所不具有的功能。 (2)操作简朴。无论是开锁还是更改密码,只要识字的人都可以直接使用,使用措施简朴而不繁琐。 (3) 可以报警。报警功能无疑更增长了锁的安全性。 (4) 无法“技术”破解。不懂得密码就无法打开锁,虽然是惯偷也只能望“锁”兴叹。1.2 电子密码锁设计的背景及意义 在现代文明社会中,随着人们生活水平和自身防备意识的提高,个人财产安全和人身安全的问题也越来越受到人们的注重,拥有一把可以有效保证居民财产安全和人身安全的锁具也越发的重要起来。在这样的大环境下,基于单片机的电子密码锁也应运而生。这种电子密码锁是以单片机为核心,配以相应的硬件电路和软件程序,实现密码的设立、存贮、辨认和显示,以及报警信号的接受和发送等功能,具有操作快、修改密码简朴、安全性高、功耗低等长处。基于单片机的电子密码锁的浮现使人们的自身财产安全有了更多的保障,也使人们出行更为以便。第2章 总体设计 2.1 设计分析 一种电子密码锁,应当能实现如下功能: (1)可以从键盘中输入密码,并相应地在显示屏上显示*; (2)可以判断密码与否对的,对的则开锁 ,错误则输出相应信息; (3)可以实现密码的修改; (4)断电或者单片机复位后可以保存之前的操作,例如密码的修改; (5)在操作错误达到一定次数后可以报警; (6)在一定期间内没有任何按键操作则关闭显示屏,并锁定键盘,严禁键盘输入(单片机复位后锁定取消); (7)设立一种备用密码。为了避免顾客忘掉密码而开不了锁,应当在常常使用的密码外再设立一种备用密码以防万一。此备用密码应当只有少数人懂得,例如社区管理员。 根据以上分析,本次电子密码锁设计的重要重点是如下几种部分4x4矩阵键盘设计、LCD信息显示、密码的掉电存储和密码的比较和解决。固然,除了这几种部分外尚有定期器/计数器计时中断和报警等功能模块。基于实际状况,在设计中,用发光二极管替代电磁锁,二极管亮则代表锁开,二极管不亮则代表锁关。 2.2 系统构造 本设计系统重要由单片机芯片、矩阵键盘、LCD显示模块、掉电存储模块、报警机构和开锁机构构成。如图2-1所示。图2-1 系统总体设计构造图时钟电路给单片机提供晶振频率,复位电路不仅使单片机上电复位,还能在使用过程中通过需要通过按键再次手动复位,矩阵键盘提供按键的输入,LCD模块显示信息,掉电存储负责密码的存储,开锁机构和报警机构分别负责开锁和报警功能。设计中,单片机选用STC89C52,LCD显示模块选用LCD1602液晶显示屏,串行存储器选用电可擦除存储器AT24C02,开锁机构用发光二极管替代,报警机构选用蜂鸣器。 第3章 硬件电路设计3.1 单片机最小系统设计 单片机最小系统就是指能使单片机工作的至少的器件构成的系统。由于单片机已经涉及了数据存储器和程序存储器,因此只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。 3.1.1 时钟电路单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频率的电路。图3-1是时钟电路的PROTEUS仿真图。 图3-1 时钟电路单片机容许的振荡晶体可在1.224MHz之间选择,一般为11.0592MHz,电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20100pF之间选择,典型值位30pF。 3.1.2 复位电路 计算机每次开始工作,CPU和系统中的其她部件都必须要有一种拟定的初值,即复位状态。图3-2是单片机复位电路仿真图。 图3-2 复位电路单片机RST引脚是高电平有效。单片机在上电瞬间C1充电,RST引脚端浮现正脉冲,只要RST断保持两个机械周期(大概10ms)以上的高电平,单片机就能复位。在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。3.1.3 最小系统 单片机加上时钟电路和复位电路就构成了能使其正常工作的最小系统。 图3-3是单片机最小系统的完整仿真图。图3-3 单片机最小系统3.2 矩阵键盘设计 一组键或者一种键盘,需要通过接口电路和CPU相连接,CPU可以采用查询接口或者中断的方式理解有无键被按下,并检查是哪个键被按下。无论是查询方式还是中断方式都要用到单片机的I/O口。由于单片机I/O口较少的因素,当系统中需要用到较多按键时,为了可以更合理更有效地运用单片机的I/O口,一般采用矩阵键盘的方式来实现多按键的功能。 图3-4是4x4矩阵键盘在PROTEUS中的电路原理仿真图。 图3-4 4x4矩阵键盘 矩阵键盘又叫做行列式键盘。行列式键盘的硬件构造比较简朴,由行输出口和列输出口构成行列式键盘,按键设立在行、列交点上。图3-4中,P1.0-P1.3是行输出口,P1.4-P1.7是列输出口。行输出口和列输出口不相交,只有当键被按下时相应的行和列才干相连。如此,只要检测行和列与否相连就可以懂得与否有键按下。 3.3 LCD显示模块设计 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位构成,每个点阵字符位都可以显示一种字符,每位之间有一种点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。图3-5是PROTEUS中显示模块的仿真图,由于LCD要正常工作必须提供足够的电流,因此在实际应用为了保证显示屏可以正常工作,应在数据端口接一上拉电阻。图3-5中RP1同步还是P0口的上拉电阻。图3-5 LCD模块仿真图3.4 开锁机构 在基于单片机的电子密码锁设计中,顾客需要输入密码,密码对的则发出开锁信号开锁。 由于在设计中是以发光二极管替代电磁锁,二极管亮代表锁开,因此可以设计一种简朴的可以点亮二极管的电路系统替代电磁锁开锁机构。如图3-9所示。图3-6,二极管电路由于单片机I/O口默觉得高电平,故初始时二极管不亮,代表锁是闭着的。当顾客输入密码并验证对的时,发出开锁信号,(使P3.6=0)。 3.5报警机构 在这次基于单片机的电子密码锁设计中,通过控制蜂鸣器的发音来实现系统的报警功能。 蜂鸣器是一种采用直流电压供电的电子讯响器。图3-10是用蜂鸣器模拟的报警机构仿真图。 图3-7,报警机构模拟仿真图当P3.7口有脉冲信号输入时,蜂鸣器SPEAKER即会发音。通过控制输入脉冲的频率还能控制蜂鸣器的发音频率。 当顾客输入密码错误次数达到预设警告次数时系统调用报警子程序,使蜂鸣器发出报警音,同步严禁键盘输入。 3.6 硬件综合设计 根据电路原理,在PROTEUS中画出各功能模块的仿真图,各个功能模块验证对的后,将所有模块集合到一种电路设计图中,画出具有所有功能的总体硬件仿真图。 图3-11即为本设计的硬件综合设计图。 图3-8基于单片机的电子密码锁设计仿真图 待程序编写好后,将KEIL和PROTEUS联调,观测此电路设计图可以懂得各个功能模块和器件的工作状况。届时,根据实际状况可以合适修改电路图或者程序,以达到设计的目的。 第4章 软件设计4.1 软件总体设计 根据电子密码锁的实际应用规定和其应当具有的功能,本次设计的主程序流程图如图4-1所示。图4-1 主程序流程图本次基于单片机的电子密码锁设计的软件设计方面的重要问题是如何实现键盘输入、信息显示、密码的掉电存储以及密码的比较和解决,如下附有部分问题的软件解决。 4.2 键盘扫描子程序 矩阵键盘扫描子程序应当具有如下2个基本的功能:(1)能判断与否有键按下;(2)能拟定是哪个键被按下。其软件管理重要分为如下三步来完毕: (1) 判断整个键盘与否有键按下。 让所有的行为0然后读列的数值。如果列的数值所有为1,阐明没有键被按下,否则阐明有键被按下。 (2) 辨认被按下的键的位置。 采用一行一行的扫描措施,逐行输出0,然后读列的值。如果列的数值所有为1,阐明不是这一行的按键被按下,扫描下一行,如果列的数值不全为1,则阐明被按下的按键时在这一行。(3) 查键值表,返回键值相应信息,以便拟定各按键应当完毕的功能。 本设计中各按键相应键值如表3所示。表4-1 按键键值表键盘扫描子程序的流程图如图4-2所示 图4-2 键盘扫描程序流程图从流程图可以看出,此键盘辨认程序是通过逐行扫描来拟定与否有键按下,当拟定某一行有键按下时,再在该行中拟定被按下的是哪一种按键。在本设计中,数字键09相应输入数字09,功能键A键是拟定键B键是取消键,C键是改密码键,D键位闭锁键,E键和F键闲置不用。 4.3 定期器中断子程序 为了避免户主以外的“借用”户主的密码 当没有任何按键被按下的状态持续一段时间后(例如20S内),应当立即关闭显示屏屏幕, 同步严禁按键的输入。这样做可以避免由于户主忘掉退出系统而使她人有机可乘。图4-7为实现此功能的程序流程图。图4-7 定期关闭屏幕和锁定键盘输入程序流程图 4.4密码输入子程序 当从键盘输入密码时,应当将输入的密码寄存,以便用做密码的有关操作、判断、修改和保存等。同步每输入一位密码应相应地在显示屏上显示一种“*”号。图4-8是密码输入子程序的流程图。图4-8 密码输入程序流程图 输入密码时,当输入的密码位数不不小于6位的时候,每按下一次数字键就将此数字存入数组。当输入的密码位数不不不小于6位时,再次按下数字键,程序就不进行任何解决,继续扫描键盘,此时只有按下拟定键或者取消键程序才做出相应反映。取消键的功能是退格。当不小心输错密码时,可以退格将输错的位清除,退格一次密码的位数减一位 同步显示屏上的“*”个数也减1。当输入的密码位数变为0时,取消键不再起作用。提示:初始密码为:111111 4.5报警子程序 报警子程序的原理很简朴,即当输入密码错误次数超过规定的最高容许次数时,不断给蜂鸣器脉冲使其不断发音。同步由于CPU始终在给蜂鸣器提供脉冲 故无暇解决诸如密码扫描等事件,也就是说,在蜂鸣器报警的同步也屏蔽了键盘的输入。 本次设计中,密码输入错误次数不得高于3次。图4-9为报警子程序流程图。 图4-9 报警子程序流程图总结本次制作终于完毕了,所有设计规定具有的功能都得到了实现具体如下: (1)加电后,单片机自动复位,LCD显示提示输入密码的信息。(2)输入密码时,只逐位显示“*”以避免密码泄漏。 (3)在按键输入的过程中,如果不小心输错,可以清除所输入的错误内容,然后继续输入。 (4)当密码输入完毕并按下确认键后,单片机将输入的密码与设定的密码比较,若密码对的,则打开密码锁,若密码不对的,则无法打开密码锁。 (5)在密码输入错误次数达到预设值时,启动报警程序报警。 (6)可以在开锁后进行密码的修改,但需要两次输入确认。 (7)修改的密码存入AT24C02,不会由于掉电的因素而丢失。(8)在长时间没有按键输入时,系统锁定显示屏,并严禁按键的输入。 由于设计水平有限,本次设计还是存在某些缺陷,例如:(1)报警系统的报警音量不够大,虽然加了一种三极管作为驱动,使得问题得到了改善,但是问题还是没有得到完美的解决。(2)本次设计的实物不够美观,器件布局不够紧凑,导致挥霍。 参照文献 1 康华光陈大钦.电子技术基本模拟部分M.北京 高等教育出版社. 2 彭容修.数字电子技术基本.武汉 武汉理工大学出版社 3 谭浩强.C程序设计M.北京 清华大学出版社 4 姜志海黄玉清刘连鑫 .单片机原理及应用.北京 电子工业出版社 5 李华.MCS-51系列单片机使用接口技术.北京航空航天大学出版社,1993 6 杨欣.王玉凤.51单片机应用实例详解.清华大学出版社 , 7 侯宝玉.基于Proteus的51系列单片机设计与仿真M.北京电子工业出版社附录 部分程序源代码 密码初始化:(初始密码:111111)uchar data kong7=0,0,0,0,0,0,0;uchar data mima7=1,2,3,4,5,6,0; uchar data mima07=0,0,0,0,0,0,0; uchar data mima17=0,0,0,0,0,0,0;uchar data mima27=0,0,0,0,0,0,0; uchar data mima37=0,0,0,0,0,0,0; uchar data table17=1,1,1,1,1,1,0; 报警子程序: void warn() P37=1;NOP3();NOP3();NOP3();P37=0;NOP3();NOP3();NOP3();定期器子函数:void time( ) TMOD = 0x01; TH0 = (65536-50000)/256;TL0 = (65536-50000)%256; EA = 1;ET0 = 1;TR0 = 1; 定期函数,在一定期间没有键按下,关闭显示屏:void time_1( )interrupt 1 / TH0 = (65536-65536)/256; TL0 = (65536-65536)%256; time_50ms+; if(time_50ms=20) time_1s+;time_50ms=0; if(time_1s=20) write_1602com(0x01); write_1602com(0x0c); time_1s=0; while(1); 将输入密码放进数组:uchar enter(uchar password) uchar m=0,j,back=0; for(m=0;) j=key_num(); time_50ms=0; time_1s=0; if(j=0&j=9&m0) write_1602com(0x11); write_1602dat(0x20); write_1602com(0x11); passwordm=0;m-; 主函数:void main() uchar k=0,j=0; / Write_nums(mima); mima0=Read_add(0x00);mima1=Read_add(0x10); mima2=Read_add(0x20);mima3=Read_add(0x30); mima4=Read_add(0x40); mima5=Read_add(0x50); time(); initinal(); for(k=0;k6;k+) mima0k=kongk; for(;strcmp(mima,mima0)!=0;) enter_password();enter(mima0); if(strcmp(mima,mima0)=0|strcmp(table1,mima0)=0) welcome(); P36=0; delay1(20); if(strcmp(table1,mima0)=0) break; else password_error(); for(k=0;k=5) write_1602com(0x01); write_1602com(0x0c); while(1)warn();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!