基于单片机的电子密码锁设计终稿.docx
《基于单片机的电子密码锁设计终稿.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁设计终稿.docx(54页珍藏版)》请在冰豆网上搜索。
基于单片机的电子密码锁设计终稿
基于单片机的电子密码锁设计(终稿)
————————————————————————————————作者:
————————————————————————————————日期:
基于单片机的电子密码锁设计
摘要:
锁,是指加在门、箱子、抽屉等物体上的封缄器,要用专用的钥匙才能打开。
自古以来锁都是人们财产安全乃至生命安全的一种重要保障。
伴随着人类历史的发展和人们对自身财产安全和人生安全的重视,各种各样的多功能的锁具也相继出现,人们使用的锁具也由传统的机械式锁逐渐发展为安全性能更好,功能更多的电子密码锁。
在现代社会,电子密码锁已是一个被大家所熟识的名词。
相信很多人的小区大门上的锁都用的是电子密码锁。
本文中将要介绍的电子密码锁是一种通过判断密码输入是否正确来控制电路或是芯片的工作状态,进而控制锁的打开和闭合,从而完成开锁、闭锁任务的电子锁装置。
本设计是基于AT89C51单片机为控制核心的密码锁设计方案。
在本次基于单片机的电子密码锁设计中,将采用AT89C51单片机作为控制核心,配合相应的电路和软件程序,实现密码的输入和修改、信息的显示、键盘的锁定、系统报警、开锁和闭锁等功能。
在设计中,利用识别密码是否正确来开锁或报警,通过串行存储器AT24C02来实现密码的修改和存储。
本文设计的密码锁具有安全性高、功耗低、操作简单等优点。
关键词:
单片机;密码锁;电子锁;矩阵键盘;掉电存储
TheDesignOfElectronicCodeLockBasedOnSingleChipMicrocomputer
Abstract:
Assealeddevice,thelockaddedtosuchobjectslikedoor,box,draweretc,canbeopenedwithspecifiedkey.Sincetheancienttime,lockisakindofsecurity,guaranteeingpeople’spropertysafetyevenlifesafety.Withthedevelopmentofhumanhistoryandmoreattentionpaidtopropertysafetyandlifesafety,variousmulti-functionallockscanbeseenintheworld.Traditionalmechanicallockspeopleuseinlifearegraduallyreplacedbyelectroniccombinationlockcharacterizedwithbettersafetyperformanceandmorefunctions.
Inthemodernsociety,electroniccombinationlockisanounfamiliartoeveryone.Usually,thedoorofcommunityisequippedwithelectroniccombinationlock.Thispaperwillintroduceanelectroniccombinationlock.Thislockcontrolstheelectriccircuitsandtheperformanceofchipsbyidentifyingpassword.Thus,theopennessandclosenessofthelockcanbecontrolled,andthetaskofelectroniclockdevicecanbecompleted.
Thisdesignisaboutcombinationlock,basedontheAT89C51single-chipmicrocomputerasthecoreofcontrollinggoals.ThisdesigninwhichtheAT89C51single-chipmicrocomputerasthecoreofthecontrollinggoalscooperatedwithrelevantcircuitsandsoftwareprogramscanachievesuchfunctionslikepasswordinputandmodification,informationdisplay,keyboardlocking,warningsystem,andtheopennessandclosenessofthelocketc.Inthisdesign,theopennessoflockandalarmingareaccordingtoidentifyingthepassword,andpasswordrevisionandstorageisachievedbythefunctionoftheAT24C02serialstorage.
Electroniccombinationlockdescribedinthispaperischaracterizedwithhighsecurity,lowpowerconsumption,andsimplicityofoperationetc.
Keywords:
Single-chipmicrocomputer,Combinationlock,Electroniclock,Matrixkeyboard,Powerloststorage
第1章绪论
1.1电子密码锁简介
什么是电子密码锁?
“一种通过密码输入来控制电路或者是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
”——XX百科上是这样解释的。
简单来说,电子密码锁就是能够实现密码等信息的设置、存贮、识别和显示,以及报警信号的接收和发送等功能的电子器件。
电子密码锁相对传统机械锁有以下几个优势:
(1)密码可更改。
用户可以随时更改密码,以确保密码锁的安全性和可靠性。
可以更改密码这一功能同时也避免了人员的更替而使锁的安全性降低,这是传统钥匙锁所不具备的功能。
(2)操作简单。
无论是开锁还是更改密码,只要识字的人都能够直接使用,使用方法简单而不繁琐。
(3)能够报警。
报警功能无疑更增加了锁的安全性。
(4)无法“技术”破解。
不知道密码就无法打开锁,即使是惯偷也只能望“锁”兴叹。
1.2电子密码锁设计的背景及意义
在现代文明社会,虽然人们的道德素质越来越高,“梁上君子”、“三只手”等人群相对旧社会大大减少,但是像“某某小区遭入室行窃,居民损失XXXX”之类的新闻我们还是经常能够在报纸上看到的。
随着人们生活水平和自身防范意识的提高,个人财产安全和人身安全的问题也越来越受到人们的重视,拥有一把能够有效保证居民财产安全和人身安全的锁具也越发的重要起来。
锁具的起源可以追朔到人类社会财产私有化的出现,锁具从其出现到发展至今天的高科技化、信息化,已经有若干年的历史了。
经过若干年的使用和研究,人们对锁具的结构、机理也了解得相当透彻了,因此,不使用钥匙就能将锁打开的方法也层出不穷。
特别是传统的机械锁,由于其构造简单,在惯偷面前,甚至能够只用一根铁丝就直接将其打开,使其失去了保障用户个人财产安全的意义。
那么,如何才能提高锁具保障用户财产安全的有效性呢?
在信息现代化的今天,锁具也应该向高精度、高安全性的智能化、信息化发展。
自20世纪70年代第一块单片机芯片TMS-1000于美国德克萨斯仪器公司面世以来,基于其体积小、价格低廉、个性突出等特点,越来越多的电子产品开始采用单片机芯片作为核心控制部件。
在这样的大环境下,基于单片机的电子密码锁也应运而生。
这种电子密码锁是以单片机为核心,配以相应的硬件电路和软件程序,实现密码的设置、存贮、识别和显示,以及报警信号的接收和发送等功能,具有操作快、修改密码简单、安全性高、功耗低等优点。
基于单片机的电子密码锁的面世使人们的自身财产安全有了更多的保障,同时也促进了安全信息系统的发展,是安全信息系统的一大进步。
基于单片机的电子密码锁的出现,在一定程度上解决了用户私人财产安全的问题。
但是,时代在发展,社会在进步,任何事物只有不断地进步才能适应时代发展的需求。
电子密码锁虽然有安全性高、操作简单等优点,但是却不如机械锁价格低廉,因此,在市场上的主流产品还是机械锁。
电子密码锁要想取代机械锁成为市场上的主流,就必须不断改进,在具有更多功能的同时向更智能化和更低成本化发展。
这就需要我们不断研究电子密码锁的设计方法和实现原理。
因此,研究基于单片机的电子密码锁的设计是很有必要且具有现实意义的。
1.3电子密码锁的现状及发展趋势
目前,和西方发达国家相比,我国的电子密码锁技术还相对落后。
在西方发达国家,电子密码锁的种类已经很齐全,技术也比较先进,且在各个领域得到了广泛应用。
在我国,电子密码锁技术却才相当于国际上七十年代的水平,相对来说还很落后。
20世纪80年代以来,随着各种电子集成电路的出现,特别是单片机的面世,电子密码锁得到了很大的发展。
相对于笨重而构造简单的传统机械锁来说,电子密码锁具有体积小,可靠性高的优势。
但是就目前而言,电子密码锁的价格相对较高且需要有电源提供能量,使得其使用还局限在一定范围,特别是在国内,各种条件的制约使得电子密码锁暂时难以普及。
尽管电子密码锁还存在着一些缺陷,但是其安全性高、方便易用、能够智能报警的优势却是传统钥匙锁取代不了的,而且随着电子信息技术的发展和各种电子器件的价格的不断降低,电子密码锁也将往低成本、多功能的方向发展。
第2章总体设计
2.1设计分析
一个电子密码锁,应该能实现以下功能:
(1)能够从键盘中输入密码,并相应地在显示器上显示‘*’;
(2)能够判断密码是否正确,正确则开锁,错误则输出相应信息;
(3)能够实现密码的修改;
(4)断电或者单片机复位后能够保存之前的操作,比如密码的修改;
(5)在操作错误达到一定次数后能够报警;
(6)在一定时间内没有任何按键操作则关闭显示器,并锁定键盘,禁止键盘输入(单片机复位后锁定取消);
(7)设置一个备用密码。
为了防止用户忘记密码而开不了锁,应该在经常使用的密码外再设置一个备用密码以防万一。
此备用密码应该只有少数人知道,比如小区管理员。
根据以上分析,本次电子密码锁设计的主要重点是以下几个部分:
4x4矩阵键盘设计、LCD信息显示、密码的掉电存储和密码的比较和处理。
当然,除了这几个部分外还有定时器/计数器计时中断和报警等功能模块。
本设计应该按以下步骤去实现:
第一步:
选择材料和器件。
第二步:
根据单片机原理和模拟电子技术基础等理论知识在PROTEUS
中画出仿真图。
第三步:
检查仿真图,确保其能够实现所有功能。
第四步:
根据需要实现的功能逻辑画出程序流程图。
第五步:
根据程序流程图和PROTEUS仿真图,使用KEIL软件进行程序的编写和调试。
第六步:
将KEIL和PROTEUS联合仿真、调试,查看是否实现所有功能。
第七步:
根据PROTEUS仿真图焊接器件。
第八步:
实物调试。
基于实际情况,在设计中,用发光二极管代替电磁锁,二极管亮则代表锁开,二极管不亮则代表锁关。
2.2系统结构
本设计系统主要由单片机芯片、矩阵键盘、LCD显示模块、掉电存储模块、报警机构和开锁机构组成。
如图2-1所示。
图2-1系统总体设计结构图
时钟电路给单片机提供晶振频率,复位电路不但使单片机上电复位,还能在使用过程中通过需要通过按键再次手动复位,矩阵键盘提供按键的输入,LCD模块显示信息,掉电存储负责密码的存储,开锁机构和报警机构分别负责开锁和报警功能。
设计中,单片机选用AT89C51,LCD显示模块选用LCD1602液晶显示器,串行存储器选用电可擦除存储器AT24C02,开锁机构用发光二极管代替,报警机构选用蜂鸣器。
第3章硬件电路设计
3.1单片机接口分配
AT89C51单片机在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O功能部件,具有一台微型计算机的基本结构,按功能可以将其分成八个组成部分:
微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、I/O口、串行口、定时器/计数器及中断系统。
在本设计中,单片机的各个接口我是这样分配的:
P0口接一个上拉电阻后与LCD1602的8位双向数据端D0~D7相接,P1口用作矩阵键盘接口,P2口的P2.0~P2.2和LCD1602的4~6引脚相接,P2.5和P2.6接串行存储器AT24C02,P3口用作开锁电路和报警电路的接口。
3.2单片机最小系统设计
单片机最小系统就是指能使单片机工作的最少的器件构成的系统。
因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。
3.2.1时钟电路
单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频率的电路。
图3-1是时钟电路的PROTEUS仿真图。
图3-1时钟电路
单片机允许的振荡晶体可在1.2~24MHz之间选择,一般为11.0592MHz,电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20~100pF之间选择,典型值位30pF。
3.2.2复位电路
计算机每次开始工作,CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。
图3-2是单片机复位电路仿真图。
图3-2复位电路
单片机RST引脚是高电平有效。
单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只要RST断保持两个机械周期(大约10ms)以上的高电平,单片机就能复位。
在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。
当晶体振荡频率为12MHz时,RC的典型值为C=10μF,R=8.2KΩ。
3.2.3最小系统
单片机加上时钟电路和复位电路就构成了能使其正常工作的最小系统。
单片机最小系统是单片机正常工作的基础,任何一个单片机系统设计都是基于单片机最小系统的基础上来完成的,而在单片机系统实物设计中,最应该首先解决的也应该是单片机最小系统问题,只有保证了单片机最小系统的正确性,才能保证接下来的其他模块的正确设计。
图3-3是单片机最小系统的完整仿真图。
图3-3单片机最小系统
3.3矩阵键盘设计
一组键或者一个键盘,需要通过接口电路和CPU相连接,CPU可以采用查询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。
无论是查询方式还是中断方式都要用到单片机的I/O口。
由于单片机I/O口较少的原因,当系统中需要用到较多按键时,为了能够更合理更有效地利用单片机的I/O口,一般采用矩阵键盘的方式来实现多按键的功能。
图3-4是4x4矩阵键盘在PROTEUS中的电路原理仿真图。
图3-44x4矩阵键盘
矩阵键盘又叫做行列式键盘。
行列式键盘的硬件结构比较简单,由行输出口和列输出口构成行列式键盘,按键设置在行、列交点上。
图3-4中,P1.0~P1.3是行输出口,P1.4~P1.7是列输出口。
行输出口和列输出口不相交,只有当键被按下时相应的行和列才能相连。
如此,只要检测行和列是否相连就可以知道是否有键按下。
由于按键设置在行、列线交点上,行、列分别连接到按键开关的两端,平时无键按下时,行线处于高电平,假设列线为低电平,当有键按下时,按下的键就会将相应的行和列连通,使得对应的行线被列线拉低,也变为低电平。
这就是识别矩阵键盘是否有键被按下的关键。
当确定有键被按下时,通过逐行扫描,读出I/O口的值可以知道哪一行的值被改变了,被改变了的行即是被按下的按键所在行。
同时,由于每个键都有它的行值和列值,行值和列值得组合就是这个按键的编码,当算法一定时,每个按键的编码是固定的,且各个按键的编码互不相同,所有通过读I/O的值还能具体知道是哪一个键被按下,这样就实现了键盘的识别。
3.4LCD显示模块设计
在单片机应用系统中,常用的显示设备有单个发光二极管、八段LED显示器、液晶显示器(LCD)、屏幕显示器(CRT)等。
在本次设计中,基于设计所要实现的功能和节约成本等实际情况,我采用LCD1602作为本次设计的显示器。
LCD1602是一种字符型液晶显示器,是一种专门用于显示字母、数字、符号等的点阵式液晶显示器。
LCD1602的显示容量为16x2个字符(可以显示2行,每行显示16个字符),芯片工作电压为4.5~5.5V,工作电流为2.0mA(5.0V),模块最佳工作电压是5.0V。
LCD1602具有16个引脚,如表3-1所示。
在LCD1602的有关设计中,主要是通过编写程序控制LCD1602的4、5、6引脚来实现数据或者指令的写入和执行,再通过数据或者指令的写入和执行来进一步实现LCD1602的显示功能。
表3-1是LCD1602的16个引脚和引脚对应功能。
表3-1LCD1602引脚说明
引脚号
引脚名
功能
1
VSS
电源地
2
VCC
电源(+5V)
3
VEE
对比调整电压
4
RS
0:
输入指令;1:
输入数据
5
R/W
0:
向LCD写指令或者数据;1:
从LCD读取信息
6
E
使能信号,1:
读取信息,1→0:
执行命令
7
DB0
数据总线(最低位)
8
DB1
数据总线
9
DB2
数据总线
10
DB3
数据总线
11
DB4
数据总线
12
DB5
数据总线
13
DB6
数据总线
14
DB7
数据总线(最高位)
15
A
LCD背光电源正极
16
K
LCD背光电源负极
作为一个字符型液晶显示器,LCD1602内部自带有一个字符发生存储器,此字符发生存储器就相当于一个字符集。
LCD1602的字符集中存有160个不同的字符,这些字符包括了英文大小写字母、阿拉伯数字、标点符号等一些经常用到的字符。
字符集中的每一个字符都对应有一个固定的ASCII码值,通过显示ASCII码对应的字符图像就能够实现对应字符的显示。
图3-5是PROTEUS中显示模块的仿真图。
由于LCD要正常工作必须提供足够的电流,因此在实际应用为了保证显示器能够正常工作,应在数据端口接一上拉电阻。
图3-5中RP1同时还是P0口的上拉电阻。
图3-5LCD模块仿真图
3.5掉电存储模块
3.5.1I2C总线
I2C总线为同步串行数据传输总线,用于单片机的外围扩展。
I2C总线上所有的外围器件都有规范的器件地址,器件地址有7位组成,它和1位方向为构成了I2C总线器件的寻址字节。
寻址字节格式如下:
表3-2I2C寻址格式
D7
D6
D5
D4
A2
A1
A0
R/
D7~D4是I2C总线的器件地址,由厂家在器件出厂时给定,对于AT24C系列固定为1010。
A2~A0根据电路中A2,A1,A0引脚接电源或者接地而不同,接地则相应位为0,接电源则相应位为1。
R/
位为I2C总线的数据方向位,决定I2C总线的数据传送方向,高电平为接收,低电平为发送。
图3-6为I2C总线的数据传送时序。
图3-6I2C总线数据传送时序
起始信号:
时钟线SCL为高电平,数据线SDA出现由高向低的负跳变时,启动I2C总线。
停止信号:
时钟线SCL为高电平,数据线SDA出现由低向高的正跳变时,停止I2C总线。
应答信号位ACK:
I2C总线进行数据传送时,每成功传送一个字节的数据后,接收器件都必然产生一个应答信号,即在第9个时钟周期时将SDA线拉低,表示其已经成功接收到一个8个数据。
图3-6中的第9个时钟脉冲对应于应答位。
应答位对应的数据线SDA上是低电平时为应答信号,是高电平则为非应答信号。
为非应答信号时,证明器件没有成功接收到一个8位数据。
数据传送位:
图3-6中的第1~8个时钟脉冲为一个字节的8位数据传送位。
脉冲为高电平时,串行传送数据;脉冲为低电平时,不传送数据,允许总线上数据线SDA的电平发生变化。
在I2C数据传输过程中,只有当SCL为低电平时才允许SDA变化,当SCL为高电平时,不允许SDA电平改变。
当然,起始信号和停止信号是例外。
因此,当SCL为高电平时,SDA的变化被看成是起始信号或者停止信号。
3.5.2AT24C02简介
AT24C02是Atmel公司生产的AT24CXX系列串行E2PROM中的一种,是具有I2C总线接口功能的电可擦除串行存储器。
AT24C02内部含有256个字节,通过I2C总线接口进行操作,有一个专门的写保护功能(WP=1时即为写保护)。
图3-7是AT24C02的引脚排列图。
其引脚功能如下:
A0~A2:
器件地址输入端。
在本设计中,A0~A2都接地,故其值都为0。
Vcc:
+1.8~6.0V工作电压。
Vss:
地或电源负极。
图3-7AT24C02引脚
SCL:
串行时钟输入端。
数据发送或者接收的时钟从此引脚输入。
SDA:
串行/数据地址线。
用于传送地址和发送或者接收数据,是双向传送端口。
WP:
写保护端。
WP=1时,只能读出,不能写入;WP=0时,允许正常的读写操作。
图3-8为PROTEUS中E2PROM的仿真图。
图3-8AT24C02仿真图
P2.5为串行时钟输入线接口,P2.6为数据线接口。
A0,A1,A2接地,所以单片机在读AT24C02时,器件地址为:
10100001B=0A1H;在写AT24C02时,器件地址为:
10100000B=0A0H。
WP=0,允许单片机进行读写操作。
3.6开锁机构
在基于单片机的电子密码锁设计中,用户需要输入密码,密码正确则发出开锁信号开锁。
因为在设计中是以发光二极管代替电磁锁,二极管亮代表锁开,因此可以设计一个简单的可以点亮二极管的电路系统代替电磁锁开锁机构。
如图3-9所示。
图3-9二极管电路
由于单片机I/O口默认为高电平,故初始时二极管不亮,代表锁是闭着的。
当用户输入密码并验证正确时,发出开锁信号(使P3.6=0)。
3.7报警机构
在这次基于单片机的电子密码锁设计中,通过控制蜂鸣器的发音来实现系统的报警功能。
蜂鸣器是一种采用直流电压供电的电子讯响器。
图3-10是用蜂鸣器模拟的报警机构仿真图。
图3-10报警机构模拟仿真图
当P3.7口有脉冲信号输入时,蜂鸣器SPEAKER即会发音。
通过控制输入脉冲的频率还能控制蜂鸣器的发音频率。
当用户输入密码错误次数达到预设警告次数时,系统调用报警子程序,使蜂鸣器发出报警音,同时禁止键盘输入。
3.8硬件综合设计
根据电路原理,在PROTEUS中画出各功能模块的仿真图,各个功能模块验证正确后,将所有模块集合到一个电路设计图中,画出具有所有功能的总体硬件仿真图。
图3-11即为本设计的硬件综合设计图。
图3-11基于单片机的电子密