基于单片机的数字密码锁Word下载.docx
《基于单片机的数字密码锁Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字密码锁Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
1.1研究背景及意义
现如今,锁具已形成一个十分庞大的家族,而且正在不断地改进和更新换代,不断地向世界展示着它的神奇。
总而言之,锁具在人类文明社会里发挥着“拘系束缚”的功能,规范着社会行为,捍卫着人们的生命财产安全,维护着社会的稳定。
传统锁具都存在致命的弱点:
第一、锁芯采用常见的铜、铝、锌等材料,抵抗不了强力破坏;
第二、锁具制作工艺,技术落后,无法阻止技术手段的开启。
应人们的要求,智能锁也就出现了它的市场,各种智能锁应运而生,例如:
生物识别的锁(指纹,瞳孔,脸部),数字密码锁,电子密码锁等。
它们都在市场中占有一席之地,人们对于智能锁的开发已经到了一定程度,各种方式也是层次不齐。
基于单片机的数字密码锁是利用电子的原理来实现开锁和闭锁的,电子密码锁的安全性已经大大超出了机械锁的安全性。
基于单片机的数字密码锁的优势有如下几种:
(1)保密性好,远远高于机械锁控制。
随机开锁成功率几乎为零。
(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使控制的保密性下降。
(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。
(4)无活动零件,不会磨损,寿命长。
(6)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。
1.2国内外研究现状
一直以来,市场上的密码锁产品都是基于机械原理的机械密码锁,这种密码锁最大的缺点就是结构简单,安全系数低。
但随着当今社会对家庭财产,公共隐私等保密性要求提高,使得对密码锁系统的安全性提出了更高的要求,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,而随着微电子技术的发展,微处理器与微型计算机得到迅速的发展,单片微型计算机功能强,结构紧凑,体积小,功耗低,抗干扰能力强,稍加一定的外围设备就方便地构成一个应用系统,这正好符合密码锁系统的要求,受到了广大用户的亲睐。
国内外市场上的相关产品也越来越多地使用单片机来加强密码锁的安全性稳定性。
深圳市爱源华电子有限公司生产的AYHL型号的锁是一款适合于公寓,酒店的,深圳市利成兴科技有限公司的8298D型号的锁是一款指纹识别的密码锁,这种利用生物识别的安全性更高。
挪威的vingcard生产的酒店门锁在世界范围内都是普遍被使用的。
Vingcard生产的锁和卡结合在一起能很方便的供认使用,它的造价比较便宜,安全性比较高,最为重要的也是它的开门效率高,能减少开门的时间。
2系统研究内容及要求
2.1密码锁具体设计要求
(1)本设计为了防止密码被窃取,在密码输入时在LCD屏幕上显示*。
(2)设计开锁密码为六位数字组成的电子密码锁。
(3)输入密码错误超过限定的三次时,电子密码锁锁定并报警。
(4)4×
4的矩阵键盘其中包括0-9的数字键,a-d的功能键,*的功能键和#的功能键。
(5)修改密码前必须再次输入原始密码,输入新密码时LCD显示屏上显示输入的密码(用*代替显示),以防止错误的操作。
2.2总体方案的设计
由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,最后获得最佳的性价比。
一般来说在选取单片机时从下面几个方面考虑:
性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、抗干扰性、保密性,除了以上的这些还有一些最基本的,比如:
中断源的数量和优先级、工作温度范围单片机内有无时钟振荡器、有无上电复位功能等。
在开发过程中单片机还受到:
开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。
基于以上因素本设计选用单片机AT89C51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实在基本的密码控制功能。
在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD显示器用于显示作用。
当用户需要开锁时,先按键盘开锁键之后按键盘的数字键0-9和a-c输入密码。
密码输完后按下确认键,如果密码输入正确则开锁,不正确时显示灯不亮,重新输入密码,当第三次密码输入错误则发出报警;
当用户需要修改密码时,基于单片机的密码锁设计,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码,新密码输入后需在显示屏上显示密码以防止误操作,也可以按显示密码键确认是否输入错误。
系统的总框图如图2-1所示。
图2-1数字密码锁系统框图
本次设计的基于单片机的电子密码锁系统主要由核心是AT89C51单片机,LCD显示屏,4x4矩阵式键盘。
主要有矩阵键盘输入电路,LCD显示电路,开锁电路,修改密码电路,掉电存储电路组成。
3硬件系统介绍
3.1总体硬件分析
本系统单片机及其外围电路由AT89C51、振荡电路等构成单片机最小系统,硬件电路的设计主要包括单片机最小系统模块、LCD1602显示模块及报警模块、状态显示模块。
单片机采用AT89C51或其兼容系列。
采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。
系统有时钟振荡电路(12M晶振)。
图3-1电路原理图
3.2键盘电路设计
在单片机应用系统中,一般都会设置键盘,主要为了控制运行状态,输入一些命令或数据,以完成特定的人机交互。
键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来设置控制功能或输入数据,按键的输入状态本质上是一个开关量。
对于简单的开关量的输入可以采用独立式按键,这种方法接口简单,但占用单片机I/O端口资源较多。
由于本设计所用到的按键数量较多而不适合用独立按键式键盘。
采用的是矩阵按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口,本系统采用4*4矩阵式键盘,键盘分布如图3-2所示:
图3-2键盘布局图
分别连接了AT89C51的P1.0-P1.7接口,A,B,C,D分别就52单片机的P1.0,P1.2,P1.3,P1.4四个接口,
这里使用AT89C51的P1口,由于P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
3.3液晶显示电路设计
3.3.1LCD1602显示介绍
图3-3LCD1602引脚图
LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个
点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
接口信号说明:
1602型LCD的接口信号说明如表3-1所示。
表3-1LCD1602接口信号说明
编号
符号
引用说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使用信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
1602型LCD主要技术参数:
显示容量:
16*2字符
芯片工作电压:
4.5-5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95*4.35(W*H)mm
表3-2LCD1602基本操作程序
读状态
输入
RS=L,R/W=H,E=H
输出
D0-D7=状态字
写指令
RS=L,R/W=L,D0-D7=指令码,E=高脉冲
无
读数据
RS=H,R/W=H,E=H
D0-D7=数据
写数据
RS=H,R/W=L,D0-D7=数据,E=高脉冲
3.3.2液晶显示电路介绍
液晶显示器(LCD)是一种功耗很低的显示器,它的使用非常广泛,比如电子表、计算器、数码相机、计算机的显示器和液晶电视等。
电子密码锁中需要显示的信息比较多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式。
本设计采用液晶显示屏LCD1602进行显示,具体连接方式如图3-3所示。
图3-3液晶显示器电路
LCD1602分别连接单片机的P0.0-P0.7,还有P2.5-P2.7这几个接口来实现液晶的显示。
当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。
AC89C51的P0口和P2口的介绍:
(1)P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
(2)P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器SFR区中R2寄存器的内容),在整个访问期间不改变。
3.4单片机模块设计
AT89C51主要的性能参数:
●与MCS51单片机指令和引脚完全兼容器
●4k字节可重擦写Flash闪速存储器
●1000次擦写周期
●全静态操作:
0HZ-24MHZ
●三级加密程序储存器
●128×
8字节内部RAM
●32个可编程I/O口线
●2个16位定时、计数器
●6个中断源
●可编程串行UART通道
●低功耗空闲和掉电模式
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
如图3-4所示单片机最小系统是有单片机AT89C51及晶振电路等组成,其中单片机AT89C51作为主要微控制器,晶振电路采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。
图3-5单片机最小系统
3.4.1振荡器和时钟电路
振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号,AT89C51单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU的时钟源;
也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。
如果使用石英晶体,我们推荐电容使用30pF±
10pF,而如使用陶瓷谐振器建议选择40pF±
10pF。
用户也可以采用外部时钟。
这种情况下,外部时钟脉冲接到XTAL端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
晶振电路如图3-6所示:
图3-6振荡器电路
3.5掉电存储电路设计
AT24C04是ATMEL公司的2KB字节的电可擦除存储芯片,采用两行串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。
其中5脚、6脚接单片机的P3.4和P3.5引脚。
AT24C04中带有片内地址寄存器,每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写,所有字节均以单一操作方式读取。
3.5.1存储芯片AT24C04介绍
AT24C04存储芯片引脚如图3-7所示:
图3-7AT24C04存储芯片引脚图
AT24C02是Ateml公司的2KB得电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。
简而言之,AT24C02是一个在突然掉电的情况下存储数据的芯片,即掉电存储芯片。
表3-3AT24C02引脚定义
引脚定义
说明
1.A0
空引脚
3.GND
4.SDA
数据口
5.SCL
同步时钟口
6.WP
写保护口
7.VCC
电源
特点:
低压和标准电压运行模式
-2.7(VCC=2.7Vto5.5V)
-1.8(VCC=1.8Vto5.5V)
A0为空引脚,A1,A2口为器件地址设定口,通过A1,A2口来设定AT24C04的器件地址。
WP口接低电平时,可以对整个AT24C04器件的512个字节进行读写操作。
当WP口接高电平后,器件前256个地址的数据被保护,只能读,不可写入,后256个字节数据可进行读写操作。
AT24C04的器件地址由两个引脚决定,分别为A1,A2引脚。
AT24C04的数据空间由P0位决定,当P0为“0”时,将对AT24C04的0-255空间的数据进行操作;
当P0为“1”时,将对AT24C04的256-511空间的数据进行操作。
3.5.2掉电存储电路介绍
IC总线(InterIntergrateCircuitBUS)全称为芯片间总线,它在芯片间以两根连线实现全双工同步数据传送,一条数据线(SDA)和一条串行时钟线(SDL),可以很方便地构成外围器件扩展系统。
2IC总线采用两线制,由数据线SDA和时钟线SCL构成,为了对数据进行存储,本系统使用串行EEPROM芯片,AT24C01系列是典型的2IC串行总线的EEPROM,本系统采用此芯片进行数据存储,其电路如图3-8所示:
图3-8断电存储电路
断电存储电路主要依靠芯片AT24C01来进行存储。
其中AT89C51的P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3.4的第二功能T0(定时/计数器0外部输入),P3.5的第二功能T1(定时/计数器1外部输入)。
这就方便了数据额存储以及读取。
3.6报警电路
报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有按键按下时,“滴”声,每按一下,发声一次,密码输入正确时,发声直接开锁,当密码输入错误时,单片机的P2.1引脚为低电平,三极管Q1导喇叭发出噪鸣声报警。
图3-9报警电路
4系统软件设计
4.1主程序流程图
如图4-1所示为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入密码,此系统进行键盘扫描,密码正确,开锁成功,密码错误3次出错报警,选择是否修改密码,若要修改密码,先输入旧密码,密码正确后设置新密码,错误时报警,需要按键确认新密码,确认后,密码修改成功,否则结束最终返回。
然后启动程序,进行保护,再次在键盘上输入密码,系统进行扫描,如果和之前一样,则执行相同程序,如不是,则执行另一种程序。
图4-1主程序流程图
4.2开锁流程图
如图4-2所示为开锁程序流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。
如果输入错误累计达到三次,则执行报警程序。
图4-2开锁流程图
4.3按键功能流程图
如图4-3为按键功能流程图,在按键当中,有于修改密码,重置密码,开锁,关闭锁相对应的按键,并按顺序与输入的数相比较,当输入匹配时,进入密码程序,错误时自动返回再一次的输入密码,输入新密码确认后,可进行重新设置密码,最后确认程序。
我的设计是由0-9和A-D还有*和#16个功能键组成,他们都有自己的用处,
其中,【0-9】为数字键,用于输入相应的密码
【*】号键为取消当前操作
【#】号键为确认
【D】键为修改密码
图4-3键功能流程图
4.4密码设计流程图
如图4-4所示,要修改密码的时候首先要打开锁,才能进行修改,当要进行修改密码的时候首先进行旧密码的确认,然后LCD会显示输入新的密码,当我们输入的两次的密码不一样,LCD显示error表示密码重新设计失败,需要重新设置。
图4-4修改密码流程图
5系统调试
5.1硬件调试
1.开锁:
插上电源后,程序自动调入初始密码,此时依次输入:
000000,然后按【#】
(确认)键,此时锁会打开,可以看到显示open,密码锁打开。
当输入的密码不是存储的密码的时候,则会显示ERROR,还会报警一次(如为自己焊接,请首次使用输入:
131420,对密码进行初始化,当显示出现:
initpassword,证明密码初始化完成,此时初始密码即为:
000000)。
由于设置的是6位密码锁当人胡乱输入密码的时候输入正确的概率是46656分之1。
2.退出并关锁:
按下【*】
(取消)键,此时锁关闭,所有输入清除。
3.修改密码:
在开锁状态下,再次输入正确的密码并按下【#】
(确认)键,此时听到两声提示,输入新的六位密码并按【D】
(重设)键,再重复输入一次新密码并按【D】,会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02。
(如两次输入的新密码不一样,则重设密码失败)。
4.报警并锁定键盘:
当输入密码错误后,报警并锁定键盘3秒,如3秒内又有按键,3秒再启动。
5.当重置新密码时,新密码会保存于AT24C02存储器里。
6结束语
为了能够更好地完成这次的毕业设计的任务,我通过不同的渠道学习了本课题相关的一些知识,这些是我在课堂上无法学到的。
三个月的时间里不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣并让我对专业知识有了更深的理解。
在搞毕业设计的这段时间里,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
电子密码锁国内外发展现状,AT89C52单片机及其引脚说明等,为本次课程设计提供了的资料。
在做毕业设计作品的初期阶段,对于我的难度很大。
通过求助何老师理清了思路。
在图书馆里、网上查阅资料,攻克了毕业设计中的难解决的问题。