完整word版基于51单片机的智能密码锁Word文档格式.docx

上传人:b****2 文档编号:4467203 上传时间:2023-05-03 格式:DOCX 页数:22 大小:656.54KB
下载 相关 举报
完整word版基于51单片机的智能密码锁Word文档格式.docx_第1页
第1页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第2页
第2页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第3页
第3页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第4页
第4页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第5页
第5页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第6页
第6页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第7页
第7页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第8页
第8页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第9页
第9页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第10页
第10页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第11页
第11页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第12页
第12页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第13页
第13页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第14页
第14页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第15页
第15页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第16页
第16页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第17页
第17页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第18页
第18页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第19页
第19页 / 共22页
完整word版基于51单片机的智能密码锁Word文档格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整word版基于51单片机的智能密码锁Word文档格式.docx

《完整word版基于51单片机的智能密码锁Word文档格式.docx》由会员分享,可在线阅读,更多相关《完整word版基于51单片机的智能密码锁Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。

完整word版基于51单片机的智能密码锁Word文档格式.docx

 

摘要:

本文中将要介绍的单片机电子密码锁是一种通过判断密码输入是否正确来控制电路或是芯片的工作状态,进而控制锁的打开和闭合。

本设计是基于STC89C52单片机为控制核心的密码锁设计方案。

在本次基于单片机的电子密码锁设计中,将采用STC89C52单片机作为控制核心,配合相应的电路和软件程序,实现密码的输入和修改、信息的显示、键盘的锁定、系统报警、开锁和闭锁等功能。

在设计中利用识别密码是否正确来开锁或报警,通过串行存储器AT24C02来实现密码的修改和存储。

本文设计的密码锁具有安全性高、功耗低、操作简单等优点。

关键词:

单片机;

密码锁;

矩阵键盘;

掉电存储

第1章绪论

1.1电子密码锁简介

什么是电子密码锁?

“一种通过密码输入来控制电路或者是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

”——XX百科上是这样解释的。

简单来说,电子密码锁就是能够实现密码等信息的设置、存贮、识别和显示,以及报警信号的接收和发送等功能的电子器件。

电子密码锁相对传统机械锁有以下几个优势:

(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.2~24MHz之间选择,一般为11.0592MHz,电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20~100pF之间选择,典型值位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-44x4矩阵键盘

矩阵键盘又叫做行列式键盘。

行列式键盘的硬件结构比较简单,由行输出口和列输出口构成行列式键盘,按键设置在行、列交点上。

图3-4中,P1.0-P1.3是行输出口,P1.4-P1.7是列输出口。

行输出口和列输出口不相交,只有当键被按下时相应的行和列才能相连。

如此,只要检测行和列是否相连就可以知道是否有键按下。

3.3LCD显示模块设计

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。

图3-5是PROTEUS中显示模块的仿真图,由于LCD要正常工作必须提供足够的电流,因此在实际应用为了保证显示器能够正常工作,应在数据端口接一上拉电阻。

图3-5中RP1同时还是P0口的上拉电阻。

图3-5LCD模块仿真图

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键盘扫描程序流程图

从流程图可以看出,此键盘识别程序是通过逐行扫描来确定是否有键按下,当确定某一行有键按下时,再在该行中确定被按下的是哪一个按键。

在本设计中,数字键0~9对应输入数字0~9,功能键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].北京高等教育出版社2005.

[2]彭容修.数字电子技术基础.武汉武汉理工大学出版社2007[3]谭浩强.C程序设计[M].北京清华大学出版社2005

[4]姜志海黄玉清刘连鑫.单片机原理及应用.北京电子工业出版社2009

[5]李华.MCS-51系列单片机使用接口技术.北京航空航天大学出版社,1993

[6]杨欣.王玉凤.51单片机应用实例详解.清华大学出版社,2010

[7]侯宝玉.基于Proteus的51系列单片机设计与仿真[M].北京电子工业出版社2001

附录部分程序源代码

密码初始化:

(初始密码:

111111)

uchardatakong[7]={'

\0'

'

0};

uchardatamima[7]={'

1'

2'

3'

4'

5'

6'

uchardatamima0[7]={'

uchardatamima1[7]={'

uchardatamima2[7]={'

uchardatamima3[7]={'

uchardatatable1[7]={'

报警子程序:

voidwarn()

{P37=1;

NOP3();

P37=0;

}

定时器子函数:

voidtime()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

定时函数,在一定时间没有键按下,关闭显示器:

voidtime_1()interrupt1//

{

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);

}

将输入密码放进数组:

ucharenter(ucharpassword[])

ucharm=0,j,back=0;

for(m=0;

;

j=key_num();

time_50ms=0;

if(j>

='

0'

&

j<

9'

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2