基于单片机的电子密码锁毕业设计论文Word格式.docx
《基于单片机的电子密码锁毕业设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁毕业设计论文Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
![基于单片机的电子密码锁毕业设计论文Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/8/cd3bd540-1c34-407c-a71f-97617660d8fa/cd3bd540-1c34-407c-a71f-97617660d8fa1.gif)
★保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
1.1.2电子密码锁的发展趋势
目前的门锁一般使用弹子锁,但是它的钥匙是容易遗失;
一些保险柜使用的机械锁,其结构更加复杂,成本高,高精密制造,容易出现故障,人们往往需要带很多钥匙,使用极为不便,如果钥匙不慎丢失,它的安全性就会大大降低。
为满足人们的需求,使用密码替代钥匙解锁的密码锁应运而生。
由于被电子器件所限,以前开发的电子密码锁,保密性差,种类不多,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是使用EDA来实现的,其电路结构复杂,电子元件繁多。
也有使用早先的20个引角的2051系列的单片机来实现的,但其密码简单,易被破解。
随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,安全保密性更强,使用更加方便,由以前的单密码输入发展到现在的密码加感应元件,用户只有密码或电子钥匙中的一样,是打不开锁的。
出于安全、方便等方面的需要许多电子密码锁已相继问世,但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的门、房间等。
因为数字、字符、人体生物特征、时间和图形图像等要素均可成为钥匙的电子信息,所以组合使用这些信息能够使电子防盗锁获得更高的保密性,比如现在的一些金库,需要使用复合信息密码的电子防盗锁。
组合使用信息也能够使电子防盗锁获得无穷扩展的可能,可以使产品多样化,对用户而言是是再好不过了。
由此可以看出组合使用电子信息是电子密码锁今后发展的趋势。
1.2电子密码锁设计的目标要求
该密码锁设计方法合理,简单易行,成本低,符合用户对一些私人资料信息的加密要求,具有一定的推广价值。
该设计的电子密码锁有如下特点:
★系统设置6位密码,通过键盘输入密码,输入密码后按下确定键。
★密码可以由用户自己设定,在密码输入正确的前提下,按下设置键,出现提示信息”Yourpassword!
“,此时输入新的密码(6位)。
电子密码锁的工作流程图如图1.2-1所示:
图1.2-1电子密码锁的工作流程图
1.3系统主要芯片的选型
1.3.1主控芯片的选型
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.3.1-1所示:
图1.3.1-1AT89C51引脚图
此外,AT89S51单片机还配置了12MHz的晶振并且可以通过软件来设置它的省电模式。
当其处于空闲模式时,CPU可暂停工作,而串行口、外中断、定时计数器以及系统可继续工作,掉电模式下数据保存在RAM中,只有硬件复位或者外中断激活后芯片才又开始工作。
另外该芯片有TQFP、PLCC和PDIP这三种不同的封装形式,以满足不同市场的需求。
1.3.2显示器的选型
采用LCD1602[8]
LCD1602能完整的显示32个英文字符和日文字符,它可以应用在计算器、频率信号发生器、时钟等产品上。
LCD1602主要特性:
能够显示16*2个字符,芯片工作电压为4.5~5.5V,工作电流2MA(5V)包括背光电流,字符尺寸:
2.95*4.35mm,带有英文和日文字符库,使用方便。
LCD1602的端口有8根数据引脚和6根控制引脚以及2根电引脚。
控制灵活、方便。
采用经典的8086总线结构,使编程控制得以变得更为简单。
容易,且不会占用单片机的大量资源。
在选型时,考虑到设计的实际应用以及设计的合理性,LCD1602能显示一些数字和字母,很方便形象,故本设计最终的方案选择的是LCD1602。
1.3.3密码存储芯片AT24C02
由于51单片机掉电后会丢失数据存储器里的数据,因此必须外加掉电存储电路。
并由AT24C02芯片来实现。
美国Atmel公司的低功耗CMOS型E2PROM—AT24C02,其内部存储空间有256×
8位,可擦写次数10000次以上、工作电压宽在2.5~5.5V之间、抗干扰能力强、数据不易丢失、写入速度小于10ms、体积小。
它是采用IIC总线串行对数据进行读写,占用的资源和I/O线很少,支持在线进行编程,能够快速方便地进行数据的实时存取。
AT24C02运用IIC规程,采用主机(通常为单片机)/从机(AT24C02)双向通信,二者均可在发送器和接收器状态下工作。
主机产生一个串行的时钟信号后,通过引脚SCL控制总线的传送方向,产生停止和开始的条件。
主机和从机在接收到一个字节后都必须要发出一个确认的信号ACK。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。
2电子密码锁的硬件设计
2.1硬件设计原理
本系统硬件部分包含电源输入电路、复位电路、晶振电路、按键电路、LCD1602显示电路。
当系统运行时系统电源电路为系统供电。
为了避免系统在不稳定情况下工作所以增加了一个复位电路。
按键电路按键输入要执行的指令,LCD显示电路,为人机交互提供了条件。
具体的硬件框图如下图2.1-1所示:
图2.1-1系统框图
2.2复位电路设计
单片机复位【1】是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。
在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;
外部程序存储器读选通信号PSEN无效。
地址锁存信号ALE也为高电平。
根据实际情况选择如图2.2-1所示的复位电路。
该电路在基本的复位电路上添加了手动复位按钮,在电源接通瞬间,电容C8上的电压很小,复位后R2下拉电阻的电压基本和电源电压相同,RST此时为高电平,随着电容充电,RST端电压将逐渐下降,当电压降到低于某一数值后,CPU不再复位,由于电容C1很大,可以确保RST在高电平的有效时间比24个振荡周期大,CPU能够顺利复位。
为了防止死机时无法顺利复位我增加了手动复位按键加以保障。
图2.2-1复位电路图
2.3晶振电路设计
引脚XTAL1【2】和XTAL2【2】与晶体振荡器及电容C1、C2按图图2.3-1所示方式连接。
此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。
电路中两个电容C1、C2的作用使电路快速振,提高电路的运行速度。
图2.3-1晶振电路图
2.4按键电路设计
因为本设计所用到的按键数量较多所以不适合用独立式按键,因此我们引入了矩阵键盘【3】的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。
在列线和行线的每个交叉点上设置一个按键。
这样矩阵键盘上的按键个数就为16个,这样就能有效地提高系统I/O口的利用率。
在单片机中可以用一个P1口实现16个按键功能,本设计中使用的这个4X4键盘不但能完成密码的输入还能作特别功能键使用。
并且键盘的每个按键功能在程序设计中设置。
由于矩阵键盘中的行、列为多键公用,每个按键都会影响该按键所处的行与列的电平,因此,各按键彼此将相互发生影响,所以必须将行列线信号配合起来,并作适当的处理,这样才能决定闭合键的位置。
其按键结构及与单片机引脚接法如图2.4-1所示。
按键功能键的具体分布如2.4-2所示。
图2.4-1按键电路图
1
2
3
4
5
6
7
8
9
开锁
上锁
输入新密码
保存新密码
重新输入
未定义
图2.4-2按键功能分配图
2.5密码存储电路的设计
如图2.6-1所示,在AT89C51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源,第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51试验开发板上和单片机的P3.3连接,第6脚SCL为串行时钟输入线,在AT89C51试验开发板上和单片机的P3.2连接,第7脚需要接地。
图2.5-124C02密码存储电路图
2.6LCD1602显示电路设计
为了提高密码锁的密码显示效果能力。
本设计的显示部分由液晶显示器LCD1602【5】。
在没有按键时,显示器处于初始状态。
按下开启键显示器就处于开启状态,再按下关闭按键显示器就处于关闭状态。
当需要对密码锁进行开锁时,按下开锁按键后通过键盘上的数字键0-9输入密码,此时每按下一个数字键,显示器上就会显示一个*,最多只能输入六个*。
当密码输入完成时,按下确认键,如果输入的密码正确的话,显示屏显示“四川师范大学成都学院欢迎您”,如果密码不正确,LCD显示屏会显示“ERROR”,P2.0输出的是高电平,电子密码锁不能被打开。
通过LCD显示屏,可以清楚的判断出密码锁所处的状态。
其电路的具体设计如下图2.6-1所示:
图2.6-1LCD1602显示电路图
2.7报警电路
报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,发/叮0声,每按一下,发声一次,单片机的P3.1引脚为低电平,三极管T3导通。
图2.7-1蜂鸣器电路图
2.8系统电路
硬件连接线路:
片机系统”区域中的P0.0~P0.7端口分别连接到“LED1602”区域中的d0—d7”端口上;
2.把“单片机系统”区域中的P2.0~P2.2端口分别连接到“LED1602”区域中的“RS,RW,E”端口上。
3.把“单片机系统”区域中的P1.0~P1.7端口分别依次连接到“矩阵键盘”区域中的“行和列”端口上。
3.把“单片机系统”区域中的P3.2~P3.3端口分别依次连接到“24C02”区域中的“SCK,SDA”端口上。
3.把“单片机系统”区域中的P3.7端口连接到“蜂鸣器”上。
P2.7连接LED灯通过电阻R2接地。
3电子密码锁的软件设计
3.1程序设计思路
本设计软件部分要实现的功能分别为:
键盘扫描,延时【6】,显示器显示【4】,密码存储等。
电子密码锁工作的主要过程是LCD液晶显示器提示“yourpassword:
”,通过键盘输入密码,同时LCD显示密码输入情况,按下确认键后判断密码的正确性,当输入密码多功能电子密码锁的基本要求:
a、通过键盘输入密码。
c、220V供电下,设计系统所需电源,并考虑掉电后原始数据的保存,总的流程图如下图3.1-1所示:
图3.1-1软件总流程图
3.2键盘扫描软件设计
键盘扫描【7】流程图如图3.2-1所示,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,输入两次新密码正确时,可进行重新设置密码,最后确认程序。
按键的检测主要是通过查询的方法来实现的,利用按键进行密码的输入及设置。
图3.2-1按键扫描流程图
图3.2-224C02读写操作的软件算法流程图
图3.2-32修改密码流程图
4、系统功能及仿真
(一)开锁
(二)LCD1602液晶显示
(三)密码修改
(四)报警
(五)还能添加掉电存储
当给单片机上电后,单片机显示如图:
图4-1仿真图1
当输入密码时,单片机显示如图:
图4-2仿真图2
密码错误的情况下修改密码(即输入新密码)显示如图:
图4-3仿真图3
当输入正确密码时单片机显示如图:
图4-4仿真图4
输入新密码之后保存显示:
图4-5仿真图5
图4-6实物图
5总结
以上为本人设计的电子密码锁电路。
该电子密码锁设计实现开关锁和修改密码等功能,并具有结构简单、功耗低、成本低等优点,但是设计电子密码锁需要结合实际综合考虑很多因素,因此该电子密码锁设计需要在实际中进一步完善和改进。
另外,在系统应用程序方面,该设计只实现了修改密码、开关锁、自动报警等功能,要想在现实生活中推广,还必须针对实际应用场合的需要,进一步完善系统功能的程序。
具有防盗报警功能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,密码锁不管在技术上还是在性能上都得到了提高。
其经过多次的整理,是一个比较不错的设计,可以满足人们的基本需求,但是因为水平有限,此电路中也存在一定的问题,的设计并不奢望一定能成功,但一定要对已学的各种电子知识能有一定的运用能力,我做设计的目的是希望能检查下对所学知识的运用能力的好坏,并且开始慢慢走上创造的道路,这是非常可贵的一点。
但是在我们设计和调试的过程中,也发现了一些问题,譬如电子密码锁的设计还不够人性化,比如加上语音的提示功能,可能会更有生命力。
电路的密码不能忘记,一旦忘记,就难以打开,这可以通过增加电路解决,但那过于复杂。
此次程序设计还有一定的漏洞。
也许还有其他的一些不足,还请老师给以支持。
6参考文献
[1]童诗白.华成英:
模拟电子技术基础[第四版].高等教育出版社,2000.3,P3-P7
[2]张毅刚:
单片机原理及应用.高等教育出版社,2003.7,P65-P67
[3]李全利:
单片机原理及接口技术.高等教育出版社,2003.1,P69-P78
[4]李光飞:
单片机课程设计指导.北京航空航天大学出版社,2007.1,P12-P24
[5]蔡朝洋:
单片机控制实习与专题制作.北京航空航天大学出版社,2006.6,P30-P41
[6]陈连坤:
单片机原理及接口技术.北京交通大学出版社,2010.5,P55-P57
[7]李学海:
标准8051单片机基础教程.北京航空航天大学出版,2006.1,P57-P60
附录一:
原理图
附录二:
源程序
//---------------------------Main.c--------------------------------
//名称:
用1602LCD与24C04设计的电子密码锁
//--------------------------------------------------------------------
//说明:
初始密码由24C04.BIN设定为“123456”。
//当输入0~9中的数字时可以输入密码,不超过6位数,输入完成后按下A
//键开锁,密码正确时LED点亮,液晶显示开锁成功。
//其他键功能是:
B上锁C重新输入密码D保存新密码E清除
//重设密码成功时要求先输入正确的密码成功开锁。
//---------------------------------------------------------------------
#include<
reg51.h>
string.h>
#defineucharunsignedchar
#defineuintunsignedint
//上次按键和当前按键序号,该矩阵中序号范围为0~15,16表示无按键
ucharpre_keyNo=16,keyNo=16;
ucharcodeTitle_Text[]="
YourPassword..."
;
//标题字符串
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);
ucharKeys_Scan();
sbitLED_OPEN=P2^7;
//开锁亮灯
sbitBEEP=P3^7;
//蜂鸣器
//-----------------------------------------------------------------------
//延时
voidDelayMS(uintx)
{
uchari;
whlie(x--)for(i=0;
i<
120;
i++);
}
//------------------------------------------------------------------------
//蜂鸣器子程序
voidBeep()
for(i=0;
100;
i++)
{
DelayMS
(1);
BEEP=~BEEP;
}
BEEP=0;
//-------------------------------------------------------------------------
//清除密码
voidClear_Password()
UserPassword[0]='
\0'
DSY_BUFFER[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();
//初始