基于51单片机电子密码锁的设计.docx

上传人:b****8 文档编号:8994795 上传时间:2023-02-02 格式:DOCX 页数:32 大小:184.17KB
下载 相关 举报
基于51单片机电子密码锁的设计.docx_第1页
第1页 / 共32页
基于51单片机电子密码锁的设计.docx_第2页
第2页 / 共32页
基于51单片机电子密码锁的设计.docx_第3页
第3页 / 共32页
基于51单片机电子密码锁的设计.docx_第4页
第4页 / 共32页
基于51单片机电子密码锁的设计.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于51单片机电子密码锁的设计.docx

《基于51单片机电子密码锁的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机电子密码锁的设计.docx(32页珍藏版)》请在冰豆网上搜索。

基于51单片机电子密码锁的设计.docx

基于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数码管显示电路及连线图

本实验采用共阴极数码管,即将所有发光二极管的阴极接到一起形成公共阴极()的数码管。

共阴数码管在应用时应将公共极接到地线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)

{

case0x0e:

key=4;

break;

case0x0d:

key=5;

break;

case0x0b:

key=6;

break;

case0x07:

key=11;

break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1