基于51单片机电子密码锁的设计.docx
- 文档编号:5877661
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:33
- 大小:188.11KB
基于51单片机电子密码锁的设计.docx
《基于51单片机电子密码锁的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机电子密码锁的设计.docx(33页珍藏版)》请在冰豆网上搜索。
基于51单片机电子密码锁的设计
文理学院机械电子工程系
专业课程设计报告
专业班级
课程
题目
学号
学生
指导教师
年月
基于51单片机电子密码锁的设计
摘要
在这个信息和科技高速发展的时代,人们的生活水平越来越高,随之应运而生的人们的安全意识也越来越强,然而传统的机械锁由于设计和工艺简单,操作和携带不便,已经不能满足人们对于安全保证和生活便利的需求,于是电子密码锁本着它自身的性高、操作简单、灵活好用等特性逐渐进入人们的视野,并已被广大群众接纳和使用。
此次设计是以AT89C51单片机实现密码锁监控装置的检测和控制核心,实现密码信息的设定、加密、更改和错误输入发出警报等功能。
分为键盘输入(此处采用4×4矩阵键盘),显示输出(此处用LED显示屏),密码比对,实现开锁或警报的过程。
该设计根据51单片机之间的串行通信原理,便于对密码信息的随机加密和保护。
软件设计则是采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,该系统已达到本设计的各项功能的所有要求。
关键词:
单片机;密码锁;4*4矩阵键盘;显示屏。
第一章绪论
1.1引言
在这个信息和科技高速发展的时代,人们的生活水平越来越高,随之应运而生的人们的安全意识也越来越强,然而传统的机械锁由于设计和工艺简单,操作和携带不便,已经不能满足人们对于安全保证和生活便利的需求,于是电子密码锁本着它自身的性高、操作简单、灵活好用等特性逐渐进入人们的视野,并已被广大群众接纳和使用。
锁是用以关住某个确定的空间或围或某种器物的,必须以钥匙或密码打开的器件。
锁,从古至今,发展到现在已有近千年的历史了,人们对它的结构、原理也随着时间的增加研究的近乎透彻,因此,开锁的方法和工具早已不仅仅局限于配套的钥匙,种类也层出不穷。
现代社会中,由于各种矛盾冲突十分剧烈,人们的思想道德观念,价值观念,文化修养水平等参差不齐,人们的思想境界良莠不齐,善良、正直的人们能够自觉规自已的行为,不是自己的东西不会眷恋,没有钥匙就不会乱闯乱动。
但是,生活中同样还存在着一些道德观念较差的人,总有着不劳而获的“梦想”,他们在受到诱惑的时候,往往会想方设法利用各种手段撬门开锁,使广大居民防不胜防。
之所以出现这种情况,除了人们的道德观外,还有一个很重要的原因,就是传统锁具都存在致命的弱点,例如,锁芯采用常见的铜、铝、锌等材料,抵抗不了强力破坏;再者,锁具制作工艺,技术落后,无法阻止先进技术手段的开启。
目前,市场上的锁具各种各样,形状千变万化,然而都是小异,技术原理简单,实际使用上却都不具备真正安全的防盗功能。
面对这一残酷的现状,锁具也进入了必须革新的时代。
1.2电子密码锁的背景
随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。
(如指纹、眼底视网膜等)来控制锁的开启。
从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。
当今安全信息系统应用越来越广泛,特别在保护、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
1.3键盘式电子密码锁的特点
电子锁可以在日常生活和现代办公中,住宅与办公室的安全防、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。
大大提高了主人物资的安全性,安全可以代替老式机械锁。
目前使用的密码锁种类繁多,各具特色。
从目前的技术水平和市场认可程度看,使用最为广泛的电子密码锁是键盘是电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。
键盘式电子密码在键盘上输入,与打差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。
在输入密码的过程中,为了限制试探密码的企图,通常输入错误码若干次或若干时间输入不正确,即“封锁”键盘,不再接受输入操作。
总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁仍然在自己的基础上发展,不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。
第二章系统设计
2.1系统总设计结构图
图2.1系统总设计结构图
本设计由主控芯片51单片机,键盘,LED显示屏和开锁电路组成。
单片负责控制整个系统的执行过程。
2.2开锁机构的设计
通过单片机送给开锁执行机构(本设计用LED灯和扬声器代替继电器打开电磁阀的开锁执行机构)实现开锁或警报的表示过程。
图2.2密码锁开锁结构示意图
当用户输入的密码正确而且是在规定的时间及次数输入之,单片机便输出开锁信号送到开锁驱动电路,达到开门的目的(此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声)。
2.2.1主控芯片(AT89C51单片机)的简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片振荡器和时钟电路
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口:
P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
P2口:
P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。
P3口:
P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。
注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。
XTAL1:
反向振荡放大器的输入及部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
图2.3AT89C51芯片图
第三章系统硬件设计
3.1键盘设计
本实验采用4×4行列式矩阵键盘,用数字键输入密码,ENTER键确认;如果密码输入错误,用DEL键清除;密码输入完毕并且确认后,如果需要重新输入,先按Esc退出,然后重新输入;若用户想要自行更改密码,需要先正确输入密码并确认后,按ALT进行修改,再按ENTER进行确认,密码更改完毕。
4×4行列式键盘的按键功能分布如图3.1所示。
图3.1键盘按键功能分布图
3.2系统电路设计
本系统电路主芯片AT89C51(含晶振和复位电路),外接上拉电阻,数码管显示器,扬声器、LED灯和外接电阻组成开锁电路。
3.2.1键盘电路及连线图
每一条行线和列线交叉处通过一个按键来连接,利用这种行列式矩阵结构只需要N条行线和M条列线就可组成N*M个按键。
在这种行列式矩阵键盘非键盘编码的单片机中,键盘处理程序先执行等待按键并有无键盘按下的程序段。
确认有键盘按下后,下一步执行识别哪一个键按下。
对照4*4键盘,首先识别键盘中有无键盘按下,然后判断键盘中哪一个键被按下,使通过将列线逐列置低电平后,检查行输入状态来实现的。
方法是:
依次给列线送低电平,然后检查行输入状态来实现。
如果全为1,则所按下键不在此列,如果不全为1则按下的键必在此列。
而且是与零电平线相交的交点上的键。
理想的按键信号是一个标准脉冲,但键的按下和释放都需要一个过程来实现,在这一过程中是处于高低电平之间一种不稳定状态,称为抖动。
抖动时间的长短,频率的高低与按键机械特征有关,一般在5到10ms之间。
这就有可能造成CPU对一次按键过程进行多次处理。
为了避免这种情况应采取措施消除抖动。
消抖常见有两种方法,硬件消抖:
如用滤波器,双稳态电路等。
另一种用软件来实现,即当发现有键按下时,间隔10ms以上时间,才能进行下一次查询,这样就让过了抖动过程,键的释放进行同样处理。
本设计为减少电路复杂程度,减少成本。
采用软件消抖的方法。
图3.2键盘电路
如图左上角为AT89C51的P3口,与键盘电路相连,构成键盘输入电路。
3.2.2数码管显示电路及连线图
本实验采用共阴极数码管,即将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
图3.3数码管显示电路
为了增加单片机的驱动,数码管上拉电阻,然后再接AT89C51的P3口,输入任何密码时都以显示“8”表示输入的位数(如图表示输入3位密码)。
3.2.3开锁和报警电路及连线图(由LED灯和扬声器电路代替)
AT89C51单片机的P1.0口连接LED灯和一个外接电阻,P1.7口连接提示和警报的扬声器(如图所示,LED灯亮表示密码正确,并且同时扬声器发出“叮咚”提示音)。
图3.4开锁电路
3.3整体电路图的绘制
用Prteus软件绘制完整的电路图。
(1)密码正确并且确认之后的整体电路及显示情况,如图3.5。
图3.5密码正确系统电路及显示图
(2)密码错误后的整体电路及显示情况,如图3.6。
图3.6密码错误系统电路及显示图
第四章软件设计
4.1系统软件设计思路
任何应用系统的正常工作和使用,除去需要完整的硬件设备外,还需要一套与之相对应的、设计合理的软件相配合。
随着电子信息的发展,微机应用早已普遍,许多原来的硬件工作都可以通过软件编程来代替,从而使一些复杂的硬件电路简单化。
电子密码锁工作的主要过程是通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,做出开锁或报警处理。
当输入密码输入错误时,系统报警。
初始设定密码之后,如果按下密码的位数超过设置的密码位数时,若只超过一位,数码管以最后一位显示不全给出提示,若继续输入,系统扬声器报警。
(本设计中初始密码为12345五位,当按下的密码为6位时,还,未按下Enter确认,数码管就会以不全七段码显示给出警报,若继续按下,系统就会发出“滴滴滴”的警报声)。
按键按其功能分为两种,其中一种为功能键另一种为数字键。
输入密码后,直到所有密码输入完毕按下确认功能键之后,才完成密码输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
如图4.1为输入密码超出原始设定位数时的数码管的显示。
图4.1密码超出设定时数码显示图
4.2系统软件设计总流程图
图4.1系统软件设计总流程图
第五章程序调试
把写好的C语言程序载入软件调试工具,检查软件是否有设法错误,再根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码,再用Prteus工具把机器码导入单片机进行实际的程序调试,根据实际情况再对程序的不足加以修改,直到满足设计要求。
5.1程序调试需要用到的软件和工具
调试改程序用到Keil软件和Prteus工具。
5.2调试过程
打开KEILC51主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后汇编,生成51单片机可执行的HEX文件。
然后用Prteus工具软件把HEX文件写入单片机。
第六章设计总结
经过这次课程设计的整个过程,我们深刻的体会到了实践是检验和巩固我们学习成果最有力的标准。
在一段理论学习之后,我们需要我们需要把自己的理论框架应用于实践,因为任何知识都来源于实践,又归于实践,只有通过实践我们才能更好地掌握所学到的知识。
在这次课程设计期间,我们每一个人通过这个过程的努力都有了不小的发展和收获。
在学习中,我们不再只是盲目的用笔练习、用脑记忆,而是用实际操作来验证和体验所学到的东西。
同样的,在精神上,我们学会了勇往直前,不因挫折而后退,面对问题学会了自己去寻找解决方法,而不是搁置不理或者一味求助于人。
通过实践,我们不仅巩固了课本知识,而且也获得了一些书本上无法教给我们的经验,对软硬件的设计和组合都有了前所未有的新的认识。
致
在本次设计中,老师和老师对于我们的选题讲解给予了悉心教导,为我们争取实验设备和场地,中途的评定和建议更是给了我们肯定和支持,让我们更有信心,使我们能顺利地完成此次设计,在此衷心的表示感。
另外,在完成课程设计的过程中,还得到众多朋友和同学的关心支持和帮助,尤其是同组组员周敏同学,始终能够跟我密切合作,共同解决问题,给了我莫大的帮助,在此,谨向老师同学和朋友致以衷心的感和崇高的敬意!
参考文献
[1]徐惠民、安德宁:
《单片微型计算机原理接口与应用》第1版,邮电大学,1996
[2]夏继强:
《单片机实验与实践教程》,航空航天大学,2001
[3]王毓银.数字电路逻辑设计.高等教育,2005年12月
[4]将新,华军,到骏等.单片机程序设计及应用(从基础到实践)[J].电子工业,2006
[5]周立功.LPC900系列Flash单片机应用技术[J].航空航天大学,2004
附录
软件程序
#include
unsignedcharps[]={1,2,3,4,5};
unsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,
0x00,0x40,0x73,0xff};
unsignedchardispbuf[8]={18,16,16,16,16,16,16,16};
unsignedchardispcount;
unsignedcharflashcount;
unsignedchartemp;
unsignedcharkey;
unsignedcharkeycount;
unsignedcharpslen=5;
unsignedchargetps[6];
bitkeyoverflag;
biterrorflag;
bitrightflag;
unsignedintsecond3;
unsignedintaa,bb;
unsignedintcc,dd,ee;
bitokflag;
bitalarmflag;
bithibitflag;
unsignedcharoka,okb;
voidmain(void)
{
unsignedchari,j;
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while
(1)
{if(ee&&(key==15))
{ee=0;
dispbuf[0]=18;
dispbuf[1]=16;
dispbuf[2]=16;
dispbuf[3]=16;
dispbuf[4]=16;
dispbuf[5]=16;
dispbuf[6]=16;
dispbuf[7]=16;
keycount=0;
}
if(dd){P3_3=0;
P3_5=1;
P3_4=1;
while
(1)
{if(!
P3_5)
{dispbuf[0]=18;
dispbuf[1]=16;
dispbuf[2]=16;
dispbuf[3]=16;
dispbuf[4]=16;
dispbuf[5]=16;
dispbuf[6]=16;
dispbuf[7]=16;
keycount=0;
dd=0;
break;}
if(!
P3_4)
{ee=1;
dd=0;
dispbuf[0]=18;
dispbuf[1]=16;
dispbuf[2]=16;
dispbuf[3]=16;
dispbuf[4]=16;
dispbuf[5]=16;
dispbuf[6]=16;
dispbuf[7]=16;
keycount=0;
break;
}
}
}
P3=0xff;
P3_4=0;
temp=P3;
temp=temp&0x0f;
if(temp!
=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
temp=P3;
temp=temp&0x0f;
if(temp!
=0x0f)
{
temp=P3;
temp=temp&0x0f;
switch(temp)
{
case0x0e:
key=7;
break;
case0x0d:
key=8;
break;
case0x0b:
key=9;
break;
case0x07:
key=10;
break;
}
temp=P3;
P1_1=~P1_1;
if((key>=0)&&(key<10))
{
if(keycount<6)
{
getps[keycount]=key;
if(ee)
{ps[keycount]=key;
}
dispbuf[keycount+2]=19;
}
keycount++;
if(keycount==6)
{
keycount=6;
}
elseif(keycount>6)
{
keycount=6;
keyoverflag=1;//keyoverflow
}
}
elseif(key==12)//deletekey
{
if(keycount>0)
{
keycount--;
getps[keycount]=0;
dispbuf[keycount+2]=16;
}
else
{
keyoverflag=1;
}
}
elseif((key==15)&&(!
ee))//enterkey
{
if(keycount!
=pslen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i { if(getps[i]! =ps[i]) { i=keycount; errorflag=1; rightflag=0; second3=0; gotoa; } } errorflag=0; rightflag=1; a: i=keycount; } } temp=temp&0x0f; while(temp! =0x0f) { temp=P3; temp=temp&0x0f; } keyoverflag=0; } } P3=0xff; P3_5=0; temp=P3; temp=temp&0x0f; if(temp! =0x0f) { for(i=10;i>0;i--) for(j=248;j>0;j--); temp=P3; temp=temp&0x0f; if(temp! =0x0f) { temp=P3; temp=temp&0x0f; switch(temp) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子 密码锁 设计