51单片机设计电子锁密码锁含代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子锁设计报告
一,实验目的
1. 学习8051定时器时间计时处理,键盘扫描及LED数码管显示的设计方法。
2. 设计任务及要求利用实验平台上8个LED数码管,设计带有报警功能的可掉电保存的电子密码锁。
3.通过本次实验,加强对所学知识的理解,增强编程能力及实践能力。二,实验要求
A.基本要求:
1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。
2:可以自行设定或删除8位密码,能够掉电保存。
3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
4:自由发挥其他功能.
5:要求有单片机硬件系统框图,电路原理图,软件流程图
B.拓展部分:
无
三,实验基本原理
单片机密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。本系统考虑到单片机密码锁成本及体积因素,在设计单片机密码锁部分时,以AT89S52单片机为核心,24C04、LED等构成外围电路。本系统单片机密码锁硬件部分结构简单、成本低,软件部分使用电子加密提高锁的安全性,具有比较好的市场前景。同时,由于本电子密码锁可以实现掉电保存,而且可以自行设计或者删除8位密码,所以具有较高的实用价值。本密码锁采用5位数码管组成显示电路提示信息,当输入密码时,只
显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led 发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led 发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。此项功能方便用户使用。
关键字:单片机AT89S52;24C04;电子密码锁
四,实验设计分析
根据实验所要求实现的功能设计实现该项实验设计的软件电路及硬件电路。
五,实验要求实现
A.电路设计
1. 整体设计
2. 分块设计
1.控制模块
AT89S52单片机是美国ATMEL 公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb 的可系统编程的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程的Flash ,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8K 可反复擦
写的程序存储器和12B 的随机存储数据存储器(RAM ),器件采用Atmel 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置24C02 设置密码 AT89S52单片机 LED 显示
数码管显示
通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89S52单片机课灵活应用于各种控制领域。如图2-1
其主要工作特性如下:
①片内程序存储器含8K的Flash程序存储器,可擦写寿命为1000次;
②片内程序存储器256字节的RAM;
③具有32根可编程I/O口线;
④具有3个可编程定时器;
⑤中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结
构;
⑥串行口是具有一个全双工口的可编程串行通信口;
⑦具有一个数据指针DPTR;
⑧低功耗工作模式有空闲模式和掉电模式;
⑨具有可编程的3级程序锁定位;
⑩AT89S52工作电源电压为5(+—0.2)V,且典型值为5V;
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2 显示模块
显示电路采用8位共阴LED数码管,从P0口输出段码,P2口的高四位为位选端。用动态扫描的方式进行显示,这样能有效节省I/O口。
3 报警模块
报警电路采用LED实现报警,用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。4.设置模块
密码的设置采用4*4键盘实现。
B.程序设计
B.1 程序总体设计
本程序共分主程序,键盘扫描程序,及存储程序三个程序B.2 程序主要模块
(1)键盘扫描程序
(2) #include"head.h"
(3)
(4)char KeyScan()
(5){
(6) char temp,temp1,temp2,KeyValue;
(7) KeyValue=0;
(8)
(9) P3=0xf0;
(10) temp=P3;
(11) temp=temp&0xf0;
(12)
(13) if(temp!=0xf0)
(14) {
(15) delay(20);
(16) if(temp!=0xf0)
(17) {
(18) temp1=temp;
(19) }
(20) }
(21) P3=0x0f;
(22) temp=P3;
(23) temp=temp&0x0f;
(24) if(temp!=0x0f)
(25) {
(26) delay(20);
(27) if(temp!=0x0f)
(28) {
(29) temp2=temp;
(30) }
(31) }
(32) temp=temp1|temp2;
(33) switch(temp)
(34) {
(35) case 0xe7:KeyValue=10;break;
(36) case 0xeb:KeyValue=9 ;break;
(37) case 0xed:KeyValue=8 ;break;
(38) case 0xee:KeyValue=7 ;break;