智能电子密码锁设计.docx
- 文档编号:8974732
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:34
- 大小:600.10KB
智能电子密码锁设计.docx
《智能电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《智能电子密码锁设计.docx(34页珍藏版)》请在冰点文库上搜索。
天津大学网络教育学院
专科毕业论文
题目:
智能电子密码锁设计
完成期限:
2016年1月8日至2016年4月20日
学习中心:
嘉兴
专业名称:
电气自动化技术
学生姓名:
姚建林
学生学号:
132092433147
指导教师:
刘伯颖
天津大学网络教育学院专科毕业论文
智能电子密码锁设计
1引言
随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。
锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又使用方便,这也是制锁者长期以来研制的主题。
随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。
据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。
这种锁是通过键盘输入一组密码完成开锁过程。
研究这种锁的初衷,就是为提高锁的安全性。
电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。
电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,因而被越来越多的人所欣赏。
电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等,但较实用的还是按键式电子密码锁。
20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。
目前,在西方发达国家,密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全、可靠的技术实现大门的管理。
在我国密码锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。
但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。
国内的不少企业也引进了世界上先进的技术,发展前景非常可观。
希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。
2系统方案论证
2.1主控部分的选择
方案一:
采用数字电路控制
用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,将密码保存在JK触发器中,与输入密码通过比较器比较,判断结果是否相符合。
采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故不采用。
方案二:
采用以单片机为核心的控制方案
选用单片机作为系统的核心部件,实现控制与处理的功能。
单片机具有资源丰富、速度快、编程容易等优点。
利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接数码管显示(LED),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标,因此综合考虑,本系统采用方案二。
2.2密码输入方式的选择
方案一:
指纹输入识别
指纹识别技术主要涉及四个功能:
读取指纹图像、提取特征、保存数据和比对。
通过指纹读取设备读取到人体指纹的图像,然后要对原始图像进行初步的处理,使之更清晰再通过指纹辨识软件建立指纹的特征数据。
软件从指纹上找到被称为“节点”(minutiae)的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。
通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。
这些数据,通常称为模板。
通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果,从而判断输入结果的正确与否。
考虑到本方案软硬件太过复杂,而且成本也高,故不采用。
方案二:
矩阵键盘输入识别
由各按键组成的矩阵键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。
行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。
通过不断读行线口线,或者中断方式触发键位扫描。
当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。
当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。
每个按键都可通过程序赋予功能,从而完成密码识别。
本方案简单易行,故采用。
3系统总体设计和主要芯片介绍
3.1系统总体设计
本设计主要由单片机、矩阵键盘、数码管显示以及开锁报警等部分组成。
其中矩阵键盘用于输入数字密码和进行各种功能的实现,由用户通过连接单片机的矩阵键盘输入所设定的密码,驱动芯片驱动数码管显示输入的数字,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁(黄灯亮)还是报警(红灯亮)。
系统整体框图如图3-1
AT89S52
晶振电路
键盘输入模块
复位电路
密码存储模块
驱动模块
开锁报警模块
显示模块
所示。
图3-1系统结构框图
各模块具体功能如下:
1.键盘输入模块:
分为密码输入的数字按键与几个功能按键,用于完成密码的输入功能。
2.复位电路:
完成系统的复位。
3.密码存储模块:
用于完成掉电存储功能,使密码断电后仍能保存。
4.驱动电路:
用于驱动数码管对键盘所输入的数字进行实时显示。
5.显示模块:
用于完成对系统状态的显示及操作提示功能。
6.报警电路:
应用发光二极管模拟报警,用于完成密码输入错误时候的指示。
7.开锁电路:
应用发光二极管模拟开锁,完成开锁及开锁提示。
3.2主要芯片介绍
3.2.1主控芯片AT89S52
AT89S52单片机是一个低功耗,高性能CMOS8位单片机,片内含8KBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52的管脚分布如图3-2。
图3-2AT89S52芯片管脚
其各引脚功能如下:
(29引脚):
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
/VPP(31引脚):
外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1(19引脚):
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2(18引脚):
振荡器反相放大器的输出端。
ALE/PROG(30引脚):
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
RST(9脚):
当振荡器运行时,在此引脚上出现两个机器周期的高电平,使得单片机复位。
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)——下载线
P1.6MISO(在系统编程用)——下载线
P1.7SCK(在系统编程用)——下载线
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P3口作为AT89S52的一些特殊功能管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2(外部中断0)
P3.3(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6(外部数据存储器写选通)
P3.7(外部数据存储器读选通)
AT89S52主要特性如表1所示。
表1AT89S52主要特性
兼容MCS-51指令系统
8k可反复擦写(>1000次)ISPFlashROM
32个双向I/O口
4.5-5.5V工作电压
3个16位可编程定时/计数器
时钟频率0-33MHz
全双工UART串行中断口线
256x8bit内部RAM
2个外部中断源
低功耗空闲和省电模式
中断唤醒省电模式
3级加密位
看门狗(WDT)电路
软件设置空闲和省电功能
灵活的ISP字节和分页编程
双数据寄存器指针
3.2.2存储芯片AT24C1024
AT24C1024是美国Atmel公司的低功耗CMOS型E²PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。
而且他是采用了I²C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。
AT24C1024中带有的片内地址寄存器。
每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。
所有字节均以单一操作方式读取。
为降低总的写入时间,一次操作可写入多达8个字节的数据。
I²C总线是一种用于IC器件之间连接的二线制总线。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。
AT24C1024正是运用了I²C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C1024)均可工作于接收器和发送器状态。
主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。
无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK(确认应答)。
AT24C1024的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。
具体管脚描述如下:
SCL为串行时钟(SerialClockInput):
串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚。
串行时钟上升沿时,数据输入芯片(写入);串行时钟下降沿时,数据从芯片输出(读出)。
SDA为串行数据/地址(SerialDAta):
双向串行数据/地址管脚用于器件所有数据的发送或接收SDL,该端为漏极开路驱动,可与任意数量的其他漏极开路或集电极开路器件“线或”。
A1为器件/页面地址输入端(DevicPageAddresses):
当使用24C1024时最大可级联8个器件,如果只有一个24C1024被总线寻址,地址输入脚A1可悬空或连接到Vss。
WP为写保护:
如果WP管脚连接到Vcc所有的内容都被写保护只能读当WP,管脚连接到Vss或悬空,允许器件进行正常的读/写操作。
管脚图如图3-3所示。
图3-3AT24C1024芯片管脚
3.2.3驱动芯片74LS138
74LS138用于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。
将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。
74LS138基本功能:
74LS138为3线-8线译码器,共有54/74S138和54/74LS138两种线路结构型式,其工作原理如下:
当一个选通端(E1)为高电平,另两个选通端(/(E2)和/(E3))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
74LS138的作用:
利用E1、/(E2)和/(E3)可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器以及与非门组成的3线-8线译码器74LS138等。
其引脚功能如下:
A、B、C译码地址输入端
E1选通端/(E2)和/(E3)选通端(低电平有效)
Y0—Y7译码输出端(低电平有效)
其功能表如表2所示。
表23线-8线译码器74LS138的功能表
74LS138的八个输出管脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出管脚全为高电平1。
如果出现两个输出管脚在同一个时间为0的情况,说明该芯片已经损坏。
74LS138有三个附加的控制端,当输出为高电平(S=1),译码器处于工作状态。
否则,译码器被禁止,所有的输出端被封锁在高电平,如功能表所示。
这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。
带控制输入端的译码器又是一个完整的数据分配器。
在电路中如果把作为“数据”输入端(同时),而将作为“地址”输入端,那么从送来的数据只能通过所指定的一根输出线送出去。
图3-4是74LS138译码器芯片引脚图,图中小圆圈表示低电平有效。
图3-474LS138芯片管脚
4系统硬件设计
本系统外围电路包括键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、驱动部分,开锁以及报警等部分组成。
根据实际情况键盘输入部分选择4×4矩阵键盘,显示部分选择字符型8位七段数码管显示,密码存储部分选用芯片AT24C1024,驱动部分选用74LS138芯片来完成,报警及开锁部分由LED灯模拟来控制。
4.1键盘输入模块
由于本设计所用到的按键数量较多而不适合用独立按键式键盘。
采用的是矩阵式按键键盘,它由行和列组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,能减少键盘与单片机连接时所占用的I/O线的数目。
本设计中使用的这个4×4键盘不但能完成密码的输入还能作特别功能键使用。
其行线和单片机P1.0~P1.3相连,列线与单片机P1.4~P1.7相连,共有16个按键。
本设计用到了其中的12个,如图4-1所示,包括0~9十个数字键,确认和清除两个控制键(作为密码输入时的确定和清除键),本设计中的键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。
图4-1键盘输入模块
具体的按键功能设置如下
按键
键名
功能说明
0-9键
数字键
输入密码
清除键
功能键
清除数字
确认键
功能键
确认密码的输入
+键
功能键
使显示器清零
4.2密码存储模块
密码存储采用AT24C1024传输方式I2C总线式,占用的单片机端口少,它能掉电存储数据。
掉电存储单元的作用是在系统电源断开的时候,存储当前设定的密码数据。
密码读写存储模块当比较密码的时候,需要将存储在AT24C1024的数据读到RAM中,然后和输入的密码相比较。
图4-2所示AT24C1024的2脚是地址线,用于确定芯片的硬件地址。
在AT89S52试验开发板上接地,第5脚SDA为串行数据输入/输出,数据通过这条双向I²C总线串行传送,在AT89S52试验开发板上和单片机的P2.6连接。
第6脚SCL为串行时钟输入线,在AT89S52试验开发板上和单片机的P2.5连接。
SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。
第7脚接地。
AT24C1024中带有片内地址寄存器。
每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。
所有字节均以单一操作方式读取。
为降低总的写入时间,一次操作可写入多达8个字节的数据。
图4-2密码存储电路
4.3复位和晶振模块
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。
该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。
增加手动复位按键是为了避免死机时无法可靠复位。
当复位按键按下后电容C3通过R10放电。
R10的作用在于限制按键按下瞬间电容C3的放电电流,避免产生火花,以保护按键触电。
AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图4-3所示方式连接。
晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在5~30pF之间。
根据实际情况,本设计中采用12MHZ作为系统的外部晶振。
电容取值为10pF。
复位和晶振电路图如图4-3所示。
图4-3复位和晶振电路
4.4显示模块
显示部分由一组八个LED数码管来完成。
当单片机上电后,从左到右第八位数码管会闪亮,说明显示屏已经接通电源正等待密码的输入。
开锁时,利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个数字,输入多少位就显示多少个数字。
当密码输入完成时,按下确认键,如果输入的密码正确的话,LED显示屏第八位数码管闪亮且不再显示以后输入的数字,单片机其中P2.0引脚会输出高电平,电子密码锁被打开(黄灯亮);若输入密码错误,显示屏无任何显示,单片机其中P2.1引脚会输出高电平,电子密码锁不能打开且报警(红灯亮),错误确认密码不能超过三次,超过三次,显示屏将不再显示输入的任何数字,键盘自动锁定。
通过LED显示屏,可以清楚地判断出密码锁所处的状态。
显示电路如图4-4所示。
图4-4显示电路
4.5开锁和报警模块
开锁和报警部分各由一个LED灯来完成,当单片机上电后可自动识别密码。
若输入密码与设定的密码相同时,即可开锁(黄灯亮);当输入密码与设定的密码不相同时,即可报警(红灯亮);该密码锁有三次输入密码的机会:
若一次就确认密码输入正确,则开锁(黄灯亮)且显示器不再显示以后任何输入的数字;若三次都确认输入错误密码,则报警(红灯亮)三次且显示器不再显示任何输入的数字,即键盘自动锁定。
单片机断电后即可清除原有记录,上电后可再次输入密码进行有关操作。
开锁和报警部分电路如图4-5所示。
图4-5开锁和报警电路
5系统软件设计
系统软件设计与硬件电路相关联,本电子密码锁系统的软件设计分为以下几个模块:
主程序模块,键盘扫描模块,密码读写存储模块,LED显示模块,报警模块等等。
软件设计思路:
电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
当输入密码连续输入错误3次时,锁定键盘10s。
A.主程序模块在主程序模块中要完成系统初始化,检测按键,调用存储模块以及调用显示模块等功能。
B.键盘扫描子程序模块该模块在主程序中调用,具备判断键盘上有无键按下、逐列扫描键盘以确定被按键的位置即行列号、形成键值并将键值存入指定的数据缓冲区等功能。
键盘扫描子程序中采用行扫描法,扫描方式为查询方式,当键盘无键按下时,程序一直在该模块中循环,当有键按下时,程序立即计算键值并在LED显示相应的值。
C.密码读写存储模块当比较密码的时候,需要将存储在AT24C1024芯片内的数据读到RAM中,然后和输入的密码相比较。
D.显示子程序模块实现显示子程序的关键是编写LED的串口驱动程序。
在想要显示数值的时候,只要在程序中写好要显示的数字,然后直接调用LED的串口驱动程序就可以实现在数码管上显示的数字。
有多位需要同时显示时,可以采用动态刷新的方法,就可以得到稳定的输出。
5.1系统总程序流程图
初始化
开始
调用显示
全部输完?
比较密码?
开门
Y
N
N
Y
密码输入
识别按键
确定输入
输入密码
结束
返回
调用显示
存入缓冲
调用24c1024
手动清除
重新输入
N
N
Y
Y
比较密码
主程序主要完成初始化,有无按键按下以及调用显示等等。
主程序的流程图如图5-1所示。
图5-1主程序流程图
5.2密码比较及开锁流程图
开始
比较第一位
八位比较完
比较下一位
清零
清屏显示
报警
记录错误次数
三次锁定键盘
返回
N
N
N
Y
Y
Y
正确开锁
图5-2密码比较及开锁流程图
6软件调试及性能分析
6.1软件介绍
6.1.1KeilC51简介
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展。
Keil是目前最流行的51单片机开发软件,它提供了一个集成开发环境uVision,它包括C编译器,宏汇编,连接器,库管理和一个功能强大的仿真调试器。
这样在开发应用软件的过程中,编辑、编译、汇编、连接、调试等各阶段都集成在一个环境中,先用编辑其编写程序,接着调用编译器进行编译,连接后即可直接运行,可以缩短开发周期。
6.1.2Proteus介绍
Proteus软件是一块功能强大的电路设计分析软件。
它组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统,它和KeilC51结合起来就可以实现软硬件的联调仿真。
ISIS是Proteus系统的中心,它远不仅是一个
表库。
Proteus的ISIS是一款Lab-center出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机。
元件库齐全,使用方便,是不可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 电子 密码锁 设计