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

上传人:知****量 文档编号:28105697 上传时间:2022-07-26 格式:DOC 页数:24 大小:703.54KB
返回 下载 相关 举报
基于51单片机的智能密码锁.doc_第1页
第1页 / 共24页
基于51单片机的智能密码锁.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《基于51单片机的智能密码锁.doc》由会员分享,可在线阅读,更多相关《基于51单片机的智能密码锁.doc(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、单片机的电子密码锁 目录第一章 绪论.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 密码输入

2、子程序 .15 4.5 报警子程序 .16总结 . .17 参考文献 . .18 附录 程序源代码 . .19摘要:本文中将要介绍的单片机电子密码锁是一种通过判断密码输入是否正确来控制电路或是芯片的工作状态,进而控制锁的打开和闭合。本设计是基于STC89C52单片机为控制核心的密码锁设计方案。在本次基于单片机的电子密码锁设计中,将采用STC89C52单片机作为控制核心,配合相应的电路和软件程序,实现密码的输入和修改、信息的显示、键盘的锁定、系统报警、开锁和闭锁等功能。在设计中利用识别密码是否正确来开锁或报警,通过串行存储器AT24C02来实现密码的修改和存储。本文设计的密码锁具有安全性高、功耗

3、低、操作简单等优点。关键词:单片机;密码锁;矩阵键盘;掉电存储 第1章 绪论 电子密码锁简介 什么是电子密码锁?“一种通过密码输入来控制电路或者是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。”百度百科上是这样解释的。简单来说,电子密码锁就是能够实现密码等信息的设置、存贮、识别和显示,以及报警信号的接收和发送等功能的电子器件。 电子密码锁相对传统机械锁有以下几个优势: (1)密码可更改。用户可以随时更改密码,以确保密码锁的安全性和可靠性。可以更改密码这一功能同时也防止了人员的更替而使锁的安全性降低,这是传统钥匙锁所不具备的功能。 (2)操作简单。无论是开锁还是更改密码,只要识

4、字的人都能够直接使用,使用方法简单而不繁琐。 (3) 能够报警。报警功能无疑更增加了锁的安全性。 (4) 无法“技术”破解。不知道密码就无法打开锁,即使是惯偷也只能望“锁”兴叹。 电子密码锁设计的背景及意义 在现代文明社会中,随着人们生活水平和自身防范意识的提高,个人财产安全和人身安全的问题也越来越受到人们的重视,拥有一把能够有效保证居民财产安全和人身安全的锁具也越发的重要起来。在这样的大环境下,基于单片机的电子密码锁也应运而生。这种电子密码锁是以单片机为核心,配以相应的硬件电路和软件程序,实现密码的设置、存贮、识别和显示,以及报警信号的接收和发送等功能,具有操作快、修改密码简单、安全性高、功

5、耗低等优点。基于单片机的电子密码锁的出现使人们的自身财产安全有了更多的保障,也使人们出行更为方便。第2章 总体设计 设计分析 一个电子密码锁,应该能实现以下功能: (1)能够从键盘中输入密码,并相应地在显示器上显示*; (2)能够判断密码是否正确,正确则开锁 ,错误则输出相应信息; (3)能够实现密码的修改; (4)断电或者单片机复位后能够保存之前的操作,比方密码的修改; (5)在操作错误到达一定次数后能够报警; (6)在一定时间内没有任何按键操作则关闭显示器,并锁定键盘,禁止键盘输入单片机复位后锁定取消; (7)设置一个备用密码。为了防止用户忘记密码而开不了锁,应该在经常使用的密码外再设置一

6、个备用密码以防万一。此备用密码应该只有少数人知道,比方小区管理员。 根据以上分析,本次电子密码锁设计的主要重点是以下几个部分4x4矩阵键盘设计、LCD信息显示、密码的掉电存储和密码的比较和处理。当然,除了这几个部分外还有定时器/计数器计时中断和报警等功能模块。基于实际情况,在设计中,用发光二极管代替电磁锁,二极管亮则代表锁开,二极管不亮则代表锁关。 系统结构 本设计系统主要由单片机芯片、矩阵键盘、LCD显示模块、掉电存储模块、报警机构和开锁机构组成。如图2-1所示。图2-1 系统总体设计结构图时钟电路给单片机提供晶振频率,复位电路不但使单片机上电复位,还能在使用过程中通过需要通过按键再次手动复

7、位,矩阵键盘提供按键的输入,LCD模块显示信息,掉电存储负责密码的存储,开锁机构和报警机构分别负责开锁和报警功能。设计中,单片机选用STC89C52,LCD显示模块选用LCD1602液晶显示器,串行存储器选用电可擦除存储器AT24C02,开锁机构用发光二极管代替,报警机构选用蜂鸣器。 第3章 硬件电路设计3.1 单片机最小系统设计 单片机最小系统就是指能使单片机工作的最少的器件构成的系统。因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。 3.1.1 时钟电路单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频率的电路。图

8、3-1是时钟电路的PROTEUS仿真图。 图3-1 时钟电路24MHz之间选择,电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20100pF之间选择,典型值位30pF。 3.1.2 复位电路 电脑每次开始工作,CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。图3-2是单片机复位电路仿真图。 图3-2 复位电路单片机RST引脚是高电平有效。单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只要RST断保持两个机械周期大约10ms以上的高电平,单片机就能复位。在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。3.1.3

9、最小系统 单片机加上时钟电路和复位电路就构成了能使其正常工作的最小系统。 图3-3是单片机最小系统的完整仿真图。图3-3 单片机最小系统3.2 矩阵键盘设计 一组键或者一个键盘,需要通过接口电路和CPU相连接,CPU可以采用查询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。无论是查询方式还是中断方式都要用到单片机的I/O口。由于单片机I/O口较少的原因,当系统中需要用到较多按键时,为了能够更合理更有效地利用单片机的I/O口,一般采用矩阵键盘的方式来实现多按键的功能。 图3-4是4x4矩阵键盘在PROTEUS中的电路原理仿真图。 图3-4 4x4矩阵键盘 矩阵键盘又叫做行列式键盘。

10、行列式键盘的硬件结构比较简单,由行输出口和列输出口构成行列式键盘,按键设置在行、列交点上。图3-4中,-,-P1.7是列输出口。行输出口和列输出口不相交,只有当键被按下时相应的行和列才能相连。如此,只要检测行和列是否相连就可以知道是否有键按下。 3.3 LCD显示模块设计 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由假设干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。图3-5是PROTEUS中显示模块的仿真图,由于LCD要正常工作必须提供足够的

11、电流,因此在实际应用为了保证显示器能够正常工作,应在数据端口接一上拉电阻。图3-5中RP1同时还是P0口的上拉电阻。图3-5 LCD模块仿真图3.4 开锁机构 在基于单片机的电子密码锁设计中,用户需要输入密码,密码正确则发出开锁信号开锁。 因为在设计中是以发光二极管代替电磁锁,二极管亮代表锁开,因此可以设计一个简单的可以点亮二极管的电路系统代替电磁锁开锁机构。如图3-9所示。图3-6,二极管电路由于单片机I/O口默认为高电平,故初始时二极管不亮,代表锁是闭着的。当用户输入密码并验证正确时,发出开锁信号,使P3.6=0。 3.5报警机构 在这次基于单片机的电子密码锁设计中,通过控制蜂鸣器的发音来

12、实现系统的报警功能。 蜂鸣器是一种采用直流电压供电的电子讯响器。图3-10是用蜂鸣器模拟的报警机构仿真图。 图3-7,报警机构模拟仿真图,蜂鸣器SPEAKER即会发音。通过控制输入脉冲的频率还能控制蜂鸣器的发音频率。 当用户输入密码错误次数到达预设警告次数时系统调用报警子程序,使蜂鸣器发出报警音,同时禁止键盘输入。 3.6 硬件综合设计 根据电路原理,在PROTEUS中画出各功能模块的仿真图,各个功能模块验证正确后,将所有模块集合到一个电路设计图中,画出具有所有功能的总体硬件仿真图。 图3-11即为本设计的硬件综合设计图。 图3-8基于单片机的电子密码锁设计仿真图 待程序编写好后,将KEIL和

13、PROTEUS联调,观察此电路设计图可以知道各个功能模块和器件的工作情况。届时,根据实际情况可以适当修改电路图或者程序,以到达设计的目的。 第4章 软件设计4.1 软件总体设计 根据电子密码锁的实际应用要求和其应该具有的功能,本次设计的主程序流程图如图4-1所示。图4-1 主程序流程图此次基于单片机的电子密码锁设计的软件设计方面的主要问题是如何实现键盘输入、信息显示、密码的掉电存储以及密码的比较和处理,以下附有部分问题的软件处理。 键盘扫描子程序 矩阵键盘扫描子程序应该具有以下2个基本的功能:(1)能判断是否有键按下;(2)能确定是哪个键被按下。其软件管理主要分为以下三步来完成: (1) 判断

14、整个键盘是否有键按下。 让所有的行为0然后读列的数值。如果列的数值全部为1,说明没有键被按下,否则说明有键被按下。 (2) 识别被按下的键的位置。 采用一行一行的扫描方法,逐行输出0,然后读列的值。如果列的数值全部为1,说明不是这一行的按键被按下,扫描下一行,如果列的数值不全为1,则说明被按下的按键时在这一行。(3) 查键值表,返回键值对应信息,以便确定各按键应该完成的功能。 本设计中各按键对应键值如表3所示。表4-1 按键键值表键盘扫描子程序的流程图如图4-2所示 图4-2 键盘扫描程序流程图从流程图可以看出,此键盘识别程序是通过逐行扫描来确定是否有键按下,当确定某一行有键按下时,再在该行中

15、确定被按下的是哪一个按键。在本设计中,数字键09对应输入数字09,功能键A键是确定键B键是取消键,C键是改密码键,D键位闭锁键,E键和F键闲置不用。 4.3 定时器中断子程序 为了防止户主以外的“借用”户主的密码 当没有任何按键被按下的状态持续一段时间后比方20S内,应该马上关闭显示器屏幕, 同时禁止按键的输入。这样做可以防止因为户主忘记退出系统而使他人有机可乘。图4-7为实现此功能的程序流程图。图4-7 定时关闭屏幕和锁定键盘输入程序流程图 4.4密码输入子程序 当从键盘输入密码时,应当将输入的密码存放,以便用做密码的相关操作、判断、修改和保存等。同时每输入一位密码应相应地在显示器上显示一个

16、“*”号。图4-8是密码输入子程序的流程图。图4-8 密码输入程序流程图 输入密码时,当输入的密码位数小于6位的时候,每按下一次数字键就将此数字存入数组。当输入的密码位数不小于6位时,再次按下数字键,程序就不进行任何处理,继续扫描键盘,此时只有按下确定键或者取消键程序才做出相应反应。取消键的功能是退格。当不小心输错密码时,可以退格将输错的位清除,退格一次密码的位数减一位 同时显示器上的“*”个数也减1。当输入的密码位数变为0时,取消键不再起作用。提示:初始密码为:111111 4.5报警子程序 报警子程序的原理很简单,即当输入密码错误次数超过规定的最高允许次数时,不断给蜂鸣器脉冲使其不断发音。

17、同时由于CPU一直在给蜂鸣器提供脉冲 故无暇处理诸如密码扫描等事件,也就是说,在蜂鸣器报警的同时也屏蔽了键盘的输入。 本次设计中,密码输入错误次数不得高于3次。图4-9为报警子程序流程图。 图4-9 报警子程序流程图总结本次制作终于完成了,所有设计要求具备的功能都得到了实现具体如下: (1)加电后,单片机自动复位,LCD显示提示输入密码的信息。(2)输入密码时,只逐位显示“*”以防止密码泄漏。 (3)在按键输入的过程中,如果不小心输错,可以清除所输入的错误内容,然后继续输入。 (4)当密码输入完毕并按下确认键后,单片机将输入的密码与设定的密码比较,假设密码正确,则打开密码锁,假设密码不正确,则

18、无法打开密码锁。 (5)在密码输入错误次数到达预设值时,启动报警程序报警。 (6)可以在开锁后进行密码的修改,但需要两次输入确认。 (7)修改的密码存入AT24C02,不会因为掉电的原因而丧失。(8)在长时间没有按键输入时,系统锁定显示器,并禁止按键的输入。 由于设计水平有限,此次设计还是存在一些缺陷,比方:1报警系统的报警音量不够大,虽然加了一个三极管作为驱动,使得问题得到了改善,但是问题还是没有得到完美的解决。2本次设计的实物不够美观,器件布局不够紧凑,造成浪费。 参考文献 1 康华光陈大钦.电子技术基础模拟部分M.北京 高等教育出版社2005. 2 武汉理工大学出版社2007 3 谭浩强

19、.C程序设计M.北京 清华大学出版社2005 4 姜志海黄玉清刘连鑫 电子工业出版社 2009 5 李华.MCS-51系列单片机使用接口技术.北京航空航天大学出版社,1993 6 ,2010 7 侯宝玉.基于Proteus的51系列单片机设计与仿真M.北京电子工业出版社2001附录 部分程序源代码 密码初始化:初始密码:111111uchar 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

20、 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

21、 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; tim

22、e_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(

23、); 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(); 学习文档 仅供参考

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com