基于单片机的电子密码锁正文.docx
《基于单片机的电子密码锁正文.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁正文.docx(32页珍藏版)》请在冰豆网上搜索。
![基于单片机的电子密码锁正文.docx](https://file1.bdocx.com/fileroot1/2023-6/3/5793fc9e-ab3f-4003-a47b-95ee4ad85242/5793fc9e-ab3f-4003-a47b-95ee4ad852421.gif)
基于单片机的电子密码锁正文
前言
在咱们的日常生活和工作中,住宅、工作单位的平安方法、公司的档案资料、财务报表和个人相关资料的保管大体上都是用加锁的方式来解决的。
若是采纳传统机械式的钥匙来开锁,人们出门就需携带许多把钥匙,超级地不方便,而且若是钥匙不警惕被丢失了,那平安性就会大打折扣。
目前,在西方发达国家,电子密码锁技术相对较先进,种类齐全,电子密码锁也已被普遍应用于智能门禁系统中,通过量种加倍平安,加倍靠得住的技术实现大门的治理。
在我国,随着社会科技的进步,锁已进展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
在传统钥匙的基础上,增加了一组或多组密码,通过不同磁场、光束光波、声波、声音和不同的图像来操纵锁的开启,从而大大提高了锁的平安性,使非法之徒无可乘之机,人们也就能够对自身财产平安的有了更多保障。
随着人们对平安的重视和科技的进展,许多电子智能锁(指纹识别、IC卡识别)已在国内外接踵面世。
可是这些产品的特点是针对特定的指纹和有效卡,只能适用于需保密的箱、柜、门等。
而且指纹识别器在公开场合利用容易机械损坏,IC卡也丢失或损坏,而且它们其本钱较高,在必然程度上限制了这种产品的推行和普及。
鉴于目前的技术水平与市场的同意程度,加上电子密码锁它具有本钱价钱低、低功耗、简单容易操作、平安性高等优势,因此电子密码锁成了这种电子防盗产品的主流。
在平安技术的领域范围,具有防盗兼报警功能的电子密码锁已慢慢替代了传统机械式的密码锁,它克服了机械锁密码可设密码量少,平安性不高的缺点,使得密码锁不论在性能上仍是在技术上都有了专门大的提升。
随着大规模集成电路技术的进展,尤其是单芯片,微处置器智能锁的显现,它除具有电子密码锁的功能外,还引入了专家分析系统和智能化的治理,使得密码锁具有更高的靠得住性和平安性,它的应用也愈来愈普遍,因此研究它具有重大的现实意义。
1电子密码锁的介绍
电子密码锁的简介
电子密码锁运用电子电路操纵机械部份,使二者紧密结合,从而幸免了因为机械部份被破坏而致使开锁功能失常的问题,而且持续输入密码错误时还有报警声,大大增加了密码锁的防盗功能。
随着人们生活水平的提高,如何实现家庭防盗的问题也显得尤其的突出,传统的锁由于其构造简单,容易被撬,而电子锁由于具有保密性高、利用灵活性好、平安系数高等优势,受到了很多用户的青睐。
电子密码锁的特点
电子密码锁是一种通过输入密码来操纵芯片或是电路工作,从而操纵机械的开关是关仍是开,来完成锁定和解锁任务的产品。
它的种类有很多,例如:
简易的电子产品、基于芯片的高性价比产品等。
此刻普遍应用的电子密码锁是以芯片为核心,通过编程来实现功能的。
它的平安性和性能大大超过了传统的机械锁。
其特点如下:
★无活动零件,可不能磨损,寿命长;
★利用灵活性好,不像机械锁必需佩带钥匙才能开锁;
★电子密码锁操作简单易行,一学即会;
★密码可变,用户能够随时更改密码,避免密码被盗,同时也能够幸免因人员的更替而使锁的密级下降;
★保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
电子密码锁的进展趋势
目前的门锁一样利用弹子锁,可是它的钥匙是容易遗失;一些保险柜利用的机械锁,其结构加倍复杂,本钱高,高周密制造,容易显现故障,人们往往需要带很多钥匙,利用极为不便,若是钥匙不慎丢失,它的平安性就会大大降低。
为知足人们的需求,利用密码替代钥匙解锁的密码锁应运而生。
由于被电子器件所限,以前开发的电子密码锁,保密性差,种类不多,最大体的确实是只依托最简单的模拟电子开关来实现的,制作简单但很不平安,在后为多是利用EDA来实现的,其电路结构复杂,电子元件繁多。
也有利用早先的20个引角的2051系列的单片机来实现的,但其密码简单,易被破解。
随着电子元件的进一步进展,电子密码锁也显现了很多的种类,功能日趋壮大,平安保密性更强,利用加倍方便,由以前的单密码输入进展到此刻的密码加感应元件,用户只有密码或电子钥匙中的一样,是打不开锁的。
出于平安、方便等方面的需要许多电子密码锁已接踵问世,但这种产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程操纵,只能适用于保密要求高且供个人利用的门、房间等。
因为数字、字符、人体生物特点、时刻和图形图像等要素都可成为钥匙的电子信息,因此组合利用这些信息能够使电子防盗锁取得更高的保密性,比如此刻的一些金库,需要利用复合信息密码的电子防盗锁。
组合利用信息也能够使电子防盗锁取得无穷扩展的可能,能够使产品多样化,对用户而言是是再好只是了。
由此能够看出组合利用电子信息是电子密码锁尔后进展的趋势。
电子密码锁设计的目标要求
该密码锁设计方式合理,简单易行,本钱低,符合用户对一些私人资料信息的加密要求,具有必然的推行价值。
该设计的电子密码锁有如下特点:
★系统设置6位密码,通过键盘输入密码,输入密码后按下确信键。
★密码能够由用户自己设定,在密码输入正确的前提下,按下设置键,显现提示信息”Yourpassword!
“,现在输入新的密码(6位)。
电子密码锁的工作流程图如下图:
初始状态
设定初始密码
输入密码:
******
密码是否正确?
N
Y
进入系统
图电子密码锁的工作流程图
系统要紧芯片的选型
主控芯片的选型
AT89C51单片机介绍[1]
AT89C51是一类具有低功耗,高性能CMOS8位的单片机,其片内含有4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采纳ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用的ISPFlash存储单元和8位中P央处置器,很多的嵌入式操纵应用系统也在利用AT89S51为它们提供的性价比比较高的解决方案。
AT89C51具有很多的特点,它有40个引脚、4kBytesFlash片的内程序存储器、128bytes的随机存储器(RAM)、32个外部输入/输出(I/O)口而且是双向的、5个中断优先级、16位的可编程按时计数器有两个、2个串行全双工通信口和一个看门狗(WDT)电路。
片内时钟振荡器AT89C51提供以下标准功能:
4k字节的Flash闪速存储器,128字节的内部RAM,32个I/O口线,1个看门狗(WDT),有两个数据指针和两个16位按时/计数器,有一个5向量两级中断结构,还有一个全双工串行通信口,片内振荡器及时钟电路。
同时AT89C51可降至0Hz的静态逻辑操作,而且支持两不同软件可选的节电工作模式。
空闲方式能够停止CPU的工作,但仍然许诺RAM,按时/计数器,串行通信口及中断系统等继续工作。
掉电方式保留RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件的复位。
AT89C51引脚图如以下图-1所示:
图-1AT89C51引脚图
另外,AT89S51单片机还配置了12MHz的晶振而且可以通过软件来设置它的省电模式。
当其处于空闲模式时,CPU可暂停工作,而串行口、外中断、按时计数器和系统可继续工作,掉电模式下数据保留在RAM中,只有硬件复位或者外中断激活后芯片才又开始工作。
另外该芯片有TQFP、PLCC和PDIP这三种不同的封装形式,以知足不同市场的需求。
显示器的选型
采纳LCD1602[8]
LCD1602能完整的显示32个英文字符和日文字符,它能够应用在计算器、频率信号发生器、时钟等产品上。
LCD1602要紧特性:
能够显示16*2个字符,芯片工作电压为~,工作电流2MA(5V)包括背光电流,字符尺寸:
*,带有英文和日文字符库,利用方便。
LCD1602的端口有8根数据引脚和6根操纵引脚和2根电引脚。
操纵灵活、方便。
采纳经典的8086总线结构,使编程操纵得以变得更为简单。
容易,且可不能占用单片机的大量资源。
在选型时,考虑到设计的实际应用和设计的合理性,LCD1602能显示一些数字和字母,很方便形象,故本设计最终的方案选择的是LCD1602。
密码存储芯片AT24C02
由于51单片机掉电后会丢失数据存储器里的数据,因此必需外加掉电存储电路。
并由AT24C02芯片来实现。
美国Atmel公司的低功耗CMOS型E2PROM—AT24C02,其内部存储空间有256×8位,可擦写次数10000次以上、工作电压宽在~V之间、抗干扰能力强、数据不易丢失、写入速度小于10ms、体积小。
它是采纳IIC总线串行对数据进行读写,占用的资源和I/O线很少,支持在线进行编程,能够快速方便地进行数据的实时存取。
AT24C02运用IIC规程,采纳主机(一样为单片机)/从机(AT24C02)双向通信,二者都可在发送器和接收器状态下工作。
主机产生一个串行的时钟信号后,通过引脚SCL操纵总线的传送方向,产生停止和开始的条件。
主机和从机在接收到一个字节后都必需要发出一个确认的信号ACK。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并依照地址识别每一个器件。
2电子密码锁的硬件设计
硬件设计原理
本系统硬件部份包括电源输入电路、复位电路、晶振电路、按键电路、LCD1602显示电路。
当系统运行时系统电源电路为系统供电。
为了幸免系统在不稳固情形下工作因此增加了一个复位电路。
按键电路按键输入要执行的指令,LCD显示电路,为人机交互提供了条件。
具体的硬件框图如以下图所示:
图系统框图
复位电路设计
单片机复位【1】是使CPU和系统中的其他功能部件都处在一个确信的初始状态,并从那个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。
不管是在单片机刚开始接上电源时,仍是断电后或发生故障后都要复位。
在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。
地址锁存信号ALE也为高电平。
依如实际情形选择如下图的复位电路。
该电路在大体的复位电路上添加了手动复位按钮,在电源接通刹时,电容C8上的电压很小,复位后R2下拉电阻的电压大体和电源电压相同,RST现在为高电平,随着电容充电,RST端电压将慢慢下降,当电压降到低于某一数值后,CPU再也不复位,由于电容C1专门大,能够确保RST在高电平的有效时刻比24个振荡周期大,CPU能够顺利复位。
为了避免死机时无法顺利复位我增加了手动复位按键加以保障。
图复位电路图
晶振电路设计
引脚XTAL1【2】和XTAL2【2】与晶体振荡器及电容C一、C2按图图所示方式连接。
此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率要紧由石英晶振的频率决定。
电路中两个电容C一、C2的作用使电路快速振,提高电路的运行速度。
图晶振电路图
按键电路设计
因为本设计所用到的按键数量较多因此不适合用独立式按键,因此咱们引入了矩阵键盘【3】的应用,采纳四条I/O线作为行线,四条I/O线作为列线组成键盘。
在列线和行线的每一个交叉点上设置一个按键。
如此矩阵键盘上的按键个数就为16个,如此就能够有效地提高系统I/O口的利用率。
在单片机中能够用一个P1话柄现16个按键功能,本设计中利用的那个4X4键盘不但能完成密码的输入还能作专门功能键利用。
而且键盘的每一个按键功能在程序设计中设置。
由于矩阵键盘中的行、列为多键公用,每一个按键都会阻碍该按键所处的行与列的电平,因此,各按键彼此将彼此发生阻碍,因此必需将行列线信号配合起来,并作适当的处置,如此才能决定闭合键的位置。
其按键结构及与单片机引脚接法如下图。
按键功能键的具体散布如所示。
图按键电路图
0
1
2
3
4
5
6
7
8
9
开锁
上锁
输入新密码
保存新密码
重新输入
未定义
图按键功能分派图
密码存储电路的设计
如下图,在AT89C51实验开发板上它们都接地,第8脚和第4脚别离为正、负电源,第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51实验开发板上和单片机的连接,第6脚SCL为串行时钟输入线,在AT89C51实验开发板上和单片机的连接,第7脚需要接地。
图24C02密码存储电路图
LCD1602显示电路设计
为了提高密码锁的密码显示成效能力。
本设计的显示部份由液晶显示器LCD1602【5】。
在没有按键时,显示器处于初始状态。
按下开启键显示器就处于开启状态,再按下关闭按键显示器就处于关闭状态。
当需要对密码锁进行开锁时,按下开锁按键后通过键盘上的数字键0-9输入密码,现在每按下一个数字键,显示器上就会显示一个*,最多只能输入六个*。
当密码输入完成时,按下确认键,若是输入的密码正确的话,显示屏显示“四川师范大学成都学院欢迎您”,若是密码不正确,LCD显示屏会显示“ERROR”,输出的是高电平,电子密码锁不能被打开。
通过LCD显示屏,能够清楚的判定出密码锁所处的状态。
其电路的具体设计如以下图所示:
图LCD1602显示电路图
报警电路
报警部份由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,发/叮0声,每按一下,发声一次,单片机的P3.1引脚为低电平,三极管T3导通。
图蜂鸣器电路图
系统电路
硬件连接线路:
片机系统”区域中的~端口别离连接到“LED1602”区域中的d0—d7”端口上;
2.把“单片机系统”区域中的~端口别离连接到“LED1602”区域中的“RS,RW,E”端口上。
3.把“单片机系统”区域中的~端口别离依次连接到“矩阵键盘”区域中的“行和列”端口上。
3.把“单片机系统”区域中的~端口别离依次连接到“24C02”区域中的“SCK,SDA”端口上。
3.把“单片机系统”区域中的端口连接到“蜂鸣器”上。
连接LED灯通过电阻R2接地。
3电子密码锁的软件设计
程序设计思路
本设计软件部份要实现的功能别离为:
键盘扫描,延时【6】,显示器显示【4】,密码存储等。
电子密码锁工作的要紧进程是LCD液晶显示器提示“yourpassword:
”,通过键盘输入密码,同时LCD显示密码输入情形,按下确认键后判定密码的正确性,当输入密码多功能电子密码锁的大体要求:
a、通过键盘输入密码。
c、220V供电下,设计系统所需电源,并考虑掉电后原始数据的保留,总的流程图如以下图所示:
初始化
调用显示
识别按键
有按键按下?
全部按完?
比较密码
开始
LED灯亮
开始
N
N
保存
修改密码
Y
Y
密码正确?
图软件总流程图
键盘扫描软件设计
键盘扫描【7】流程图如下图,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相较较,当输入正确时,进入密码程序,错误时进行清除,输入两次新密码正确时,可进行从头设置密码,最后确认程序。
按键的检测主若是通过查询的方式来实现的,利用按键进行密码的输入及设置。
开始
行列端口赋值0xf0
读端口,结果相等?
延时10毫秒
保存首次赋值
读端口,两次赋值运算
读端口,结果相等?
查表发出键模
行列端口赋值0x0f
返回
图按键扫描流程图
图24C02读写操作的软件算法流程图
按下输入新密码
输入密码
存入缓冲
再输入一
调用24C02
比较密码
重新输入
调用显示
图2修改密码流程图
4、系统功能及仿真
(一)开锁
(二)LCD1602液晶显示
(三)密码修改
(四)报警
(五)还能添加掉电存储
当给单片机上电后,单片机显示如图:
图4-1仿真图1
当输入密码时,单片机显示如图:
图4-2仿真图2
密码错误的情形下修改密码(即输入新密码)显示如图:
图4-3仿真图3
当输入正确密码时单片机显示如图:
图4-4仿真图4
输入新密码以后保留显示:
图4-5仿真图5
图4-6实物图
5总结
以上为本人设计的电子密码锁电路。
该电子密码锁设计实现开关锁和修改密码等功能,并具有结构简单、功耗低、本钱低等优势,可是设计电子密码锁需要结合实际综合考虑很多因素,因此该电子密码锁设计需要在实际中进一步完善和改良。
另外,在系统应用程序方面,该设计只实现了修改密码、开关锁、自动报警等功能,要想在现实生活中推行,还必需针对实际应用处合的需要,进一步完善系统功能的程序。
具有防盗报警功能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、平安性能差的缺点,密码锁不管在技术上仍是在性能上都取得了提高。
其通过量次的整理,是一个比较不错的设计,能够知足人们的大体需求,可是因为水平有限,此电路中也存在必然的问题,的设计并非奢望必然能成功,但必然要对已学的各类电子知识能有必然的运用能力,我做设计的目的是希望能检查下对所学知识的运用能力的好坏,而且开始慢慢走上制造的道路,这是超级宝贵的一点。
可是在咱们设计和调试的进程中,也发觉了一些问题,譬如电子密码锁的设计还不够人性化,比如加上语音的提示功能,可能会更有生命力。
电路的密码不能忘记,一旦忘记,就难以打开,这能够通过增加电路解决,但那过于复杂。
这次程序设计还有必然的漏洞。
或许还有其他的一些不足,还请教师给以支持。
6参考文献
[1]童诗白.华成英:
模拟电子技术基础[第四版].高等教育出版社,,P3-P7
[2]张毅刚:
单片机原理及应用.高等教育出版社,,P65-P67
[3]李全利:
单片机原理及接口技术.高等教育出版社,,P69-P78
[4]李光飞:
单片机课程设计指导.北京航空航天大学出版社,,P12-P24
[5]蔡朝洋:
单片机操纵实习与专题制作.北京航空航天大学出版社,,P30-P41
[6]陈连坤:
单片机原理及接口技术.北京交通大学出版社,,P55-P57
[7]李学海:
标准8051单片机基础教程.北京航空航天大学出版,,P57-P60
附录一:
原理图
附录二:
源程序
.";//标题字符串
ucharDSY_BUFFER[10]="";//显示缓冲
ucharUserPasssword[10]="";//用户输入的密码
voidLCD_Init();//液晶初始化
voidDisplay_String(uchar*str,ucharLineNo);//在液晶指定行显示字符串
voidIIC_24C04_Init();//IIC初始化
voidBeep();//蜂鸣器
ucharRecString(ucharSlave,ucharSubaddr,uchar*Buffer,ucharN);//从IIC读取数据
ucharSendString(ucharSlave,ucharSubaddr,uchar*Buffer,ucharN);//从IIC读取数据
ucharKeys_Scan();
sbitLED_OPEN=P2^7;//开锁亮灯
sbitBEEP=P3^7;//蜂鸣器
//-----------------------------------------------------------------------
//延时
//-----------------------------------------------------------------------
voidDelayMS(uintx)
{
uchari;
whlie(x--)for(i=0;i<120;i++);
}
//------------------------------------------------------------------------
//蜂鸣器子程序
//------------------------------------------------------------------------
voidBeep()
{
uchari;
for(i=0;i<100;i++)
{
DelayMS
(1);BEEP=~BEEP;
}
BEEP=0;
}
//-------------------------------------------------------------------------
//清除密码
//-------------------------------------------------------------------------
voidClear_Password()
{
UserPassword[0]='\0';
DSY_BUFFER[0]='\0';
}
//--------------------------------------------------------------------------
//主程序
//--------------------------------------------------------------------------
voidmain()
{
uchari=0;
ucharIIC_Password[10];
ucharIS_Valid_User=0;
P0=P1=0xFF;
TMOD=0X02;//TO设置为8位自动重装模式
TH0=175;
TL0=175;
TR0=1;//启动TO
DelayMS(10);
LCD_Init();//初始化LCD
IIC_24C04_Init();//初始化24C04
Display_String(Title_Text,0x00);
//24C04的内容已由初始化BIN文件导入
//将24C04中预先写入的密码读入IIC_Password
RecString(0xa0,0,IIC_Password,6);
IIC_Password[6]='\0';
while
(1)
{
P1=0xF0;
if(P1!
=0xF0)KeyNo=Keys_Scan();//扫描键盘获取键序号KeyNo
if(Pre_KeyNo!
=KeyNo)
{
if(i<10)
{
switch(KeyNo)
{
case0:
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
//若是i为0那么执行一次清屏
if(i==0)Display_String("",0x40);
UserPassword[i]=KeyNo+'0';
UserPassword[i+1]='\0';
DSY_BUFFER[i]='*';
DSY_BUFFER[i+1]='\0';
Display_String(DSY_BUFFER,0x40);
i++;
break;
case10:
//按A键开锁
if(strcmp(UserPassword,IIC_Password)==0)
{
LED_OPEN=0;//点亮LED
Clear_Password();
Display_String("Unlockok!
",0x40);
IS_Valid_User=1;
}
else