完美升级版基于单片机的电子密码锁的设计毕业论文.docx
《完美升级版基于单片机的电子密码锁的设计毕业论文.docx》由会员分享,可在线阅读,更多相关《完美升级版基于单片机的电子密码锁的设计毕业论文.docx(31页珍藏版)》请在冰点文库上搜索。
![完美升级版基于单片机的电子密码锁的设计毕业论文.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/60589fd1-a8b3-40e3-a1a8-c9719a529189/60589fd1-a8b3-40e3-a1a8-c9719a5291891.gif)
完美升级版基于单片机的电子密码锁的设计毕业论文
(此文档为word格式,下载后您可任意编辑修改!
)
基于单片机的电子密码锁设计
摘要
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能,从而使密码锁具有很高的安全性、可靠性,受到了广大用户的亲睐。
本系统由AT89C51单片机系统(主要是AT89C51单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改六位用户密码、超次报警、密码错误报警等功能(本设计由P0口控制LCD显示,密码正确显示passwordok!
密码错误显示passworderror!
超过三次输入错误启动报警功能。
经实验证明,该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。
关键词:
AT89C51,LCD1602,电子密码锁,4×4矩阵键盘
目 录
前 言1
第1章概述2
1.1电子密码锁简介2
1.2电子密码锁发展趋势2
1.3本设计所要实现的目标3
1.4电子密码锁设计的具体要求3
1.5总体设计方案选定4
第2章硬件设计5
2.1单片机AT89C51简介5
2.1.1主要特性5
2.1.2引脚功能说明6
2.2液晶显示LCD1602的介绍9
2.3硬件电路的设计11
2.3.1硬件设计原理11
2.3.2最小系统的设计12
2.3.3芯片擦除15
2.3.4开锁机构15
2.3.5键盘设计16
2.3.6显示电路设计18
2.4电路设计总图19
第3章系统软件设计20
3.1系统软件设计总体流程20
3.2主程序模块20
3.3键盘扫描及程序流程图21
3.4系统密码及开锁程序流程图23
第4章程序调试25
4.1系统调试过程25
4.2系统调试结果27
结论29
参考文献30
附 录32
前 言
随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
此外电子技术的飞速发展,给传统的机械锁带来了巨大的变革,现代的电子技术与机械技术相结合,产生了一大批智能锁:
指纹锁、IC卡辨识、遥控锁、声控锁等先进的锁具。
虽然这类产品安全性高,但是这类产品的特点是针对特定指纹或有效卡,只能适用于保密要求高且仅供个人使用的箱、柜、房间等。
而且卡片式IC卡还有易丢失等特点,加上其生产成本高,安装使用不方便,一定程度上限制了这类产品的普及和推广。
由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子密码锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈”。
组合使用信息也能够使电子密码锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。
本文介绍的是一种基于ST89C51单片机和4*4矩阵键盘的硬件设计和软件实现方法,这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。
保密性强,灵活性高,外接各种执行机构,可广泛用于车辆、大门、保险柜等各种需上锁的场合。
第1章概述
1.1电子密码锁简介
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁。
其特点如下:
(1)保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。
(4)无活动零件,不会磨损,寿命长。
(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。
(6)电子密码锁操作简单易行,一学即会。
1.2电子密码锁发展趋势
在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。
由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引角的2051系列单片机来实现的,但密码简单,易破解。
随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真真的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁。
出于安全、方便等方面的需要许多电子密码锁已相继问世。
但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。
由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。
组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。
可以看出组合使用电子信息是电子密码锁以后发展的趋势。
1.3本设计所要实现的目标
本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。
密码可以由用户自己修改设定,锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
1.4电子密码锁设计的具体要求
(1)本设计为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号。
(2)设计开锁密码位六位密码的电子密码锁。
(3)能够LCD显示在密码正确时显示PASSWORDOK,密码错误时显示PASSWORDERROR,输入密码时显示INPUTPASSWORD。
(4)实现输入密码错误超过限定的三次电子密码锁定。
(5)4×4的矩阵键盘其中包括0-9的数字键和A-F的功能键
(6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。
(7)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
1.5总体设计方案选定
采用一种是用以AT89C51为核心的单片机控制方案。
选用单片机AT89C51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,实现基本的密码锁功能。
在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD1602显示器用于显示作用。
其原理如下图1-1所示:
图1-1单片机控制密码锁原理框图
第2章硬件设计
2.1单片机AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C20与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU51是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图2-1AT89C51与AT89C2051
2.1.1主要特性
(1)与MCS-51兼容;
(2)4K字节可编程闪烁存储器;
(3)寿命:
1000写擦循环;
(4)数据保留时间:
10年;
(5)全静态工作:
0Hz-24Hz;
(6)三级程序存储器锁定;
(7)128*8位内部RAM;
(8)32可编程IO线;
(9)两个16位定时器计数器;
(10)5个中断源;
(11)可编程串行通道;
(12)低功耗的闲置和掉电模式;
(13)片内振荡器和时钟电路;
2.1.2引脚功能说明
图2-2单片机引脚图
Vcc:
电源电压
GND:
接地
P0口:
P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
Pl是一个带内部上拉电阻的8位双向IO口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),Flash编程和程序校验期间,Pl接收低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),在访问外部程序存储器或16位地址的外部数据存储器(例如执功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P3口除了作为一般的I0口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
ALEPROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的16输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EAVPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTALl:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
89C51相对于89C51增加的新功能包括:
(1)ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离,是一个强大易用的功能。
(2)最高工作频率为33MHz,89C51的极限工作频率为24MHz,就是说C51具有更高的工作频率,从而具有了更快的计算速度。
(3)具有双工UART串行通道。
(4)内部集成看门狗计时器,不再需要像C51那样外接看门狗计时器单元电路。
(5)双数据指示器。
(6)电源关闭标识。
(7)全新的加密算法,这使得对于89C51的解密变为不可能,程序的保密性大大加强,这样就可以有效地保护知识产权不被侵犯。
(8)兼容性方面:
向下完全兼容51全部字系列产品。
(9)程序存储器写入方式:
二者的写入程序的方式不同,89C51只支持并行写入,同时需要VPP烧写高压。
89C51则支持Isp在线编程写入技术。
串行写入、速度更快、稳定性更好,烧写电压也仅仅需要4~5V即可。
(10)电源范围:
89C51电源范围宽达4~5.5V,而89C51在低于4.8V和高于5.3V的时候则无法正常工作。
(11)烧写寿命更长:
89C51标称的1000次,实际最少是1000~10000次,这样更有利于初学者反复烧写,降低学习成本。
综上所述本设计选定AT89C51。
2.2液晶显示LCD1602的介绍
1.LM1602字符型模块的性能
重量轻:
<100g;
体积小:
<11mm厚;
功耗低:
10—15mW;
显示内容:
192种字符(5×7点字型);
32种字符(5×10点字型);
可自编8(5×7)或许(5×10)种字符;
指令功能强:
可组合成各种输入、显示、移位方式以满足不同的要求;
接口简单方便:
可与8位微处理器或微控制器相联;
工作温度宽:
0—50oC
可靠性高:
寿命为50,000小时(25oC)
2.基本原理
(1)液晶体
液晶板上排列着若干5×7或5×10点阵的字符显示位,每个显示位可显示1个字符,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类。
(2)工作电路
它由KS0066、KS0065及几个电阻电容组成。
KS0065是扩展显示字符用的(例如:
16个字符×1行模块就可不用KS0065,16个字符×2行模块就要用1片KS0065)
接口方面,有8条数据,三条控线。
可与微处理器或微控制相连,通过送入数据和指令,就可使模块正常工作。
(3)LCD驱动器和控制器
A.LCD驱动器KS0065
KS0065是用低功耗CMOS技术制造的大规模LCD驱动IC。
它既可当行驱动用,也可以当列驱动用,由20×2Bin二进制移位寄存器、20×2Bin数据锁存器和20×2Bin驱动器组成
功能:
a.40通道点阵LCD驱动;
b.可选择当做行驱动或列驱动;
c.输入输出信号:
输出,能产生20×2个LCD驱动波型;输入,接受控制器送出的串行数据和控制信号,偏压(V1—V6);
特性:
a.显示驱动偏压低:
静态~15;
b.电源电压:
+5V+10%;
c.显示驱动电源:
-5V;
d.CMOS处理;
e.60引脚、塑封;
B.LCD控制器KS0066
KS0066是用低功耗CMOS技术制造的大规模点阵LCD控制器(兼带驱动器),和4Bin8Bin微处理器相连连,它能使点阵LCD显示大小英文字母、符号。
应用KS0066,用户能有少量元件就可组成一个完整点阵LCD系统。
特性:
a.容易和Bin8BinMpu相连;
b.可选择5×7或5×10点字符;
c.显示数据RAM容量:
80×8Bin(80字符);
d.字符发生器ROM能提供户所需字符库或标准库;字符容量:
192个字符(5×7点字符);32个字符(5×10点字符);
e.DDRAM和CGRAM都能从Mpu读取数据;
f.输出信号:
16个行扫信号(commonsingnal),40个列扫信号(sengmentsingnal)
g.电源复位电路;
bitp2.2;将lcd的en管脚连接到单片机的p2.2口
rwbitp2.1;将lcd的rw管脚连接到单片机的p2.1口
rsbitp2.0;将lcd的rs管脚连接到单片机的p2.0口
displayequp0;将lcd的显示端口连接到p0口上
speakerbitp3.7;蜂鸣器连接到p3.7口
ledbitp2.7;开锁信号连到p2.7口
openbitp2.6;开锁电路的控制端连接到p2.6口
returnbitbit20h.1;
ORG0000h;程序开始地址
LJMPstart;
ORG000bh;
LJMPintermit_t0;
ORG001bh;
LJMPintermit_t1;
ORG0030h;
start:
MOVsp,#60h;
lcallsy
s_initialization;调用子程序sys_initialization
3.3键盘扫描及程序流程图
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
(1)矩阵式键盘的按键识别方法:
确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
行扫描法:
行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
a.判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
b.判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
(2)下面给出一个具体的例子:
单片机的P1口用作键盘IO口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。
列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。
4根行线和4根列线形成16个相交点。
a.检测当前是否有键被按下。
检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。
b.去除键抖动。
当检测到有键按下后,延时一段时间再做下一步的检测判断。
c.若有键被按下,应识别出是哪一个键闭合。
方法是对键盘的行线进行扫描。
P1.4-P1.7按下述4种组合依次输出:
P1.71110
P1.61101
P1.51011
P1.40111
在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。
由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值
其程序流程如图3-2所示:
图3-2键盘扫描程序流程图
3.4系统密码及开锁程序流程图
由于设计是分模块化进行,所以子程序是整体软件系统的组成部分,子程序不但可以使程序化整为零,使其复杂简单化,同时也方便阅读,修改等,每个功能模块都有它自己的子程序,在本设计中是用LCD显示数据,所以就要用到显示子程序,设计中用的是矩阵键盘,所以就用到键盘扫描子程序,例如还有显示初始化子程序、LCD忙检测子程序、关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序等。
如下图3-3为密码修改子程序流程图,图3-4为开锁程序流程图:
图3-3设置密码子
图3-4输入密码开锁流程图
第4章程序调试
4.1系统调试过程
在硬件支持的环境下,用proteus设计好的电路,Keil编好的程序编译成芯片可识别的C51文件,利用PC机写进proteus程序图芯片内进行仿真测试,并对其出现的错误进行修改,由图4-1~图4-3可看出最终调试成功。
图4-1keil编译程序成功
图4-2keil生成hex文件
图4-3proteus调用keil的hex文件进行仿真
4.2系统调试结果
调试结果共有三种状态,第一种状态为上锁状态,此时若要开锁则需输入正确密码。
第二种为输入密码,若密码正确,开锁成功且此时绿灯亮。
第三种状态为输入密码错误,需重新输入密码。
若输入次数达到三次则报警启动。
调试结果如下图所示:
图4-4初始上锁状态
图4-5密码正确绿灯亮
图4-6密码错误启动报警
结论
本学期的课程设计总算完成了,回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次毕业设计使我懂得了理论与实际相结合是很重要的。
刚开始时我不知该从何着手,后来参考了一些文献,我便开始设计自己的课程设计。
我用的是单片机芯片实现主控,LCD显示,矩阵键盘等部件。
我对这些知识掌握的不太好,所以在作设计时遇到一些问题,但通过不断努力,终于把密码锁的思路和模型定了下来,去整理和修改程序。
我们去了图书馆借一些参考书,上网找一些相关资料,并且在指导老师翁老师的指导下,我最终都逐个克服了遇到的难题。
而且我用的是C语言来实现的控制,这次的应用巩固了我的C语言知识。
总之我觉得只有理论知识是远远不够的,必须把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
!
参考文献
[1]杨西明,朱骐主编.单片机编程与应用入门[M].北京:
机械工业出版社.2004(06)
[2]先锋工作室编著.单片机程序设计实例[J].北京:
清华大学出版社.2003
[3]谢宜仁主编.单片机实用技术问答[J].北京:
人民邮电出版社.2003
[4]梁丽.电子密码锁的计算机仿真设计[J].计算机仿真,2005
[5]房小翠,王金凤编著.单片机实用系统设计技术[M].北京:
国防工业出版社.1999(06)
[6]王宽仁.可靠安全的智能密码锁[J].电子技术应用.2001
[7]李捷,陈典涛,陈建华,等.一种基于单片机的电子密码锁的设计[J].农机化研究,200