电子密码锁实验报告.docx

上传人:太** 文档编号:96834319 上传时间:2024-03-25 格式:DOCX 页数:8 大小:17.42KB
返回 下载 相关 举报
电子密码锁实验报告.docx_第1页
第1页 / 共8页
电子密码锁实验报告.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《电子密码锁实验报告.docx》由会员分享,可在线阅读,更多相关《电子密码锁实验报告.docx(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、电子密码锁实验报告实验目的1、学习8051定时器时间计时处理、跑马灯、按键扫描及LED数码管显 示的设计方法。2、设计任务及要求利用实验平台上8个LED数码管,按键,跑马灯实 现设置密码,密码锁的功能二,实验要求基本要求:1:用44矩阵键盘组成0 - 9数字键 及确认键和删除键。2:可以自行设定或删除8位密码。3:用5位数码管组成显示电路提示 信息,当输入密码时,只显示8、,当密码位数输入完毕按下确认键时,对输入的密 码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做 为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提 示;若在3秒之

2、内仍有按键按下,则禁止按键输入3秒被重新禁止。三,实验基本原理 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0、05s中断一次并当作一 个计数,设定定时1秒的中断计数初值为20o为了将时间在LED数码管上显示,可采用 静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用 动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该 数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效 应,使数码管看起来总是亮的,从而实现了各种显示。四,实验设计分析针对要实现的功 能,采用AT89S51单片机进行设计,AT89S51

3、单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP )的可反复擦写1000次的Flash只读程序存储 器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引 脚结构。这样,既能做到经济合理又能实现预期的功能。在程序方面,采用分块设计的方 法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为闹钟 的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程 序、定时调整程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模 块不匹配会出现意想不到的错误。首先,在编程之前必须了解硬件结构尤其

4、是各引脚的用 法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前 期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电 路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言 的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是 软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿 真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬 件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电 路,若与设计的完全一样一般

5、能实现想要的功能。最后进行功能扩展,在已经正确的设计 基础上,添加额外的功能!五,实验要求实现A、电路设计1、整体设计此次设计主要是应用单片机来设计电子密码锁,硬件部分 主要分以下电路模块:显示电路用8个共阴数码管显示输入的密码,通过动态扫描进行显 示,从而避免了译码器的使用,同时节约了 I/O端口,使电路更加简单。跑马灯的红绿灯 作指示灯,指示输入密码的正确与否。单片机采用AT89S52系列,这种单片机应用简 单,适合电子密码锁设计。电路的总体设计框架如下:单片机输入部分晶振和复位输出部 分B、程序设计B、程序总体设计本实验用汇编程序完成、主程序开始显示星期,时,分,秒是否有 调转? TO中

6、断秒,分,时等进位闪烁提示显示日期并调整响铃提示时间调整闹铃设置定 时设置铃声测试秒表模式回主程序定时到按。键按0键闹铃到按1键按2键按3键按4 键按5键按7键7键恢复按4键按8键按0键按0键倒计时启动并显示回主程序秒表暂 停秒表清零回主程序按7键程序总的流程图如下:NO YES结合电路图,程序设计的整体 思路为:以下为在该工作方式下模式选择的按键方式,步骤如下:L各模块(CPU,数码 管,跑马灯,键盘)接好线2、第1到10个键代表09这个数字3、进行密码的设 置。随意按下六个键(确保第一位密码不是0),并记住密码。然后按下第二个键(重置 密码键),即完成了密码的设置(此时数码管是不会亮的)4

7、、随意输入6个数,组成新 密码,然后按下第10个键(确认键)。按下后,程序自动进行与原设密码进行对 比。若密码正确,则绿灯亮1秒,然后熄灭。若密码不正确,则红灯亮3秒,且在这三 秒内按下任何数字键无效,按下一个数字键后,会重新计时红灯再亮三秒,三秒后,才能 重新输入密码5、另外,第11个键是删除键,可进行数字的删除,重新输入B、2、3主程序主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若 到则调用相关程序,该段程序如下:#include#define uint unsigned int#define uchar unsigned charlong int shu=l,shul,aa

8、=0,password;uchar k=0,key=0,bz=0,dk=0,num2;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7 c,0x39,0x5e,Ox 79,0x71,0;long int num,temp,numl;void init();void display();void delay(uint z)延时函数uint x,y;for(x=z;x0;x)for(y=110;y0;y);void keyscan();void main() init();while(l) key

9、scanQ; displayO; void init()初 始 化 函 数num = 17;P:L=0xff;TMOD=0x01;TH0=(65536- 50000)/256;TL0=(65536-50000)%256;EA=l;ET0=l;TR0=0; 键盘扫描函数 void keyscan()P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp= P3;temp=temp&0xf0;while(temp!=0xf0)temp=P3;k+; bz+ +;switch(temp)case Oxee:num=O;break;c

10、aseOxde:num = l;break;case0xbe:num=2;break;case0x7e:num=3;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xfd;te mp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0 ;while(temp!=0xf0)temp=P3;k+;bz4-+;switch(temp)case 0xed:num=4;break;case 0xdd:num = 5;break;case 0xbd:num=6;break;

11、case 0x7d:num=7;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xfb;te mp= P3;temp=temp&OxfO;while(temp!=OxfO)delay ;temp= P3;temp=temp&OxfO ;while(temp!=0xf0)temp=P3;switch(temp)case 0xeb:num=8zk+zbz+;break;case0xdb:num=9/k+,bz+;break;case0xbb:num = 10/num2 = 10;break;case0x7b:num = ll;break;whil

12、e(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xf7;te mp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0 ;while(temp!=0xf0)temp=P3;switch(temp)case0xe7:num = 12;break;case0xd7:num = 13;break;case0xb7:num = 14;break;case0x77:num = 15;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;if(key=0)

13、每输入一个数,执行一次if(shu = = k) dk=k; shu + +; if(num10)只可以输入 0- -9 numl=10*numl + num; /numl即为输入的密码的数值(由于程序的问题,密码的第一位不可以为零)if(num2 = = 10)确认键(接下来进行密码的对比) shul=numl; 将输入数字赋给shul if(shul= = password)输入密码正确,执行下面语句 TRO=1; 开定时器if(aa=20)绿灯亮一秒Pl=0x7f; 具体是不是绿灯亮需根据自己的跑马灯调整else Pl=Oxff; 一秒后熄灭 else 密码输入错误,则执行下面语句 TR

14、O=1; 开启定时器 if(aa=60) key=l; 禁止输入 Pl=0xfb; 红灯亮 if(dk= = k)再次禁止输入 aa=0; 重新计时,红灯亮三秒TH0=(65536-50000)/256; TL0=(65536-50000)%256;dk=99; /使 dk 不等于 k 跳出止匕 if 语句 else Pl=Oxff; / 大于3秒后,灯全灭key=0; /何以重新输入密码if(num = = ll)删除键 num=20; bz; numl=numl/10; num2=0; key=0; if(num = = 13)/重设密马 password=numl; num=20; nu

15、ml=0; num2=0; bz=0;void timerOQinterruptl 定时器 TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;void displayO显示程序if(bz=O)没有输入时,数码管全熄灭 P0=0x00; P2=0xff; if(bz= = l)输入一位时,一个 数码管亮P0=0xff;P2=0xfe;delay(5);if(bz=2)输 入 两 位 时 , 两 个 数 码 管 亮 P0=0xff;P2=0xfe;delay ;P0=0xff;P2=0xfd;delay ;if(bz=3)*P0=0x ff;P2=0x

16、fe;delay(5);P0=0xff;P2=0xfd;delay(5);P0=0xff;P2=0xfb;delay(5);if(bz=4)*P0=0xff;P2=0xfe;delay ;P0=0xff;P2=0xfd;delay ;PO=Oxff; P2=0xfb;delay(5);P0=0xff;P2=0xf7;delay(5);if(bz= = 5)P0=0xff;P2=0xfe;delay(5);P 0=0xff;P2=0xfd;delay(5);P0=0xff;P2=0xfb;delay(5);P0=0xff;P2=0xf7;delay(5);P0=0 xff;P2=0xef;del

17、ay(5); if(bz=6)P0=0xff;P2=0xfe;delay(5);P0=0xff;P2=0xfd;delay(5);P0=0xff;P2=0xfb;delay(5) ;P0=0xff;P2=0xf7;delay(5);P0=0xff;P2=0xef;delay(5); P0=0xff;P2=0xdf;delay; if(bz=7)P0=0xff;P2=0xfe;delay(5);P0=0xff;P2=0xfd;delay(5);P0=0xff;P2=0xfb;delay(5) ;P0=0xff;P2=0xf7;delay(5);P0=0xff;P2=0xef;delay(5);P

18、0=0xff;P2=0xdf;delay(5);P0=0xff;P2=0xbf;delay(5); if(bz=8)P0=0xff;P2=0xfe;delay(5);P0=0xff;P2=0xfd;delay(5);P0=0xff;P2=0xfb;delay(5) ;P0=0xff;P2=0xf7;delay(5);P0=0xff;P2=0xef;delay(5);P0=0xff;P2=0xdf;delay(5);P0=0xff;P2=0xbf;delay(5);P0=0xff;P2=0x7f;delay(5);C、程序调试及仿真本程序通过Keil单片机开发平台实现程序的编译,链接,生成 HE

19、X文件。程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使错误被扼杀在摇篮中。通过Keil和硬件仿真平台Proteus的联合,可以将设计效果仿真出 来,根据效果,有目的的改变设计,优化程序。c、1利用Keil软件实验过程截图:1 , 建一个工程,并设定与Proteus仿真相关的参数2 , c语言程序,并生成HEX文件c、2 利用Proteu画原理图:五、实验总结及感想学习单片机是我们小学期的任务,刚接到课 题的时候有点迷茫,感觉单片机这种东西,很高深不是几天就能够学好的,信心不足。可 是之后我们以小组为单位,以小组学习的方式一同学习,共同分享探讨学习单片机,发现 单片机并没有想象的

20、那么难。它是以keil为软件平台,以AT89S52单片机为硬件平台, 经过编程控制单片机实现各种功能。一分耕耘一分收获,我们搜索了大量的资料,网上的 教学视频,图书馆的单片机的教程等等。对单片机渐渐有了柳暗花明又一村的效果,也收 集了大量关于密码锁的资料。随着涉猎的点滴积累,我对电子密码锁的设计方案已经慢慢 酝酿而成。有了方向和不少知识储备后,在接下来的几天,几乎每天都有突破,虽然有时 只是一句程序的修改或诞生,但那种收获的感觉很暖人心。通过自主学习,从实践中真正 学到了知识,也认识到了自己的学习能力的缺陷,对今后的学习积累了经验。同时,也对 单片机功能的强大有了更深的理解,产生了浓厚的兴趣。

21、每一次的进步,即使是小小的跑 马灯按照自己的意愿亮了,受自己控制了,也让自己颇有成就感。因为,付出获得了收获 是人生之快事。当然在实践中也遇到了不少的问题,接下来总结一下,共同探讨:L按 键问题在密码锁的设计中,按密码的功能选择是通过按键开关实现的。实际在按按键时, 有时按键反应太快,按一次,跳了几下,很是纠结。后来通过学习知道开关可以通过使用 软件消抖和硬件消抖来避免这种情况发生。后来,我采取了软件消抖。硬件消抖并不适 合,板子已经固定无法使用硬件消抖,所以,在编程时多了几行代码(延时函数等)成功 解决了这个问题。在实际电路调试中,按键反应没有出现过于灵敏的问题,基本可控制。2、密码设定问题这也是该程序的一个缺陷,就是输入的第一个数字密码不能是0 ,否则 会出错。因为在编程中把输入的密码看成是一个多数字(这是从计算器的实现移植过来的 方法),比较容易实现。所以造成了这样的缺陷。要是把密码看成是一组数组,就可以成 功解决这个问题,由于时间的原因,就没去实践了。以上便是此次学习的一些心得。虽然 在学习中遇到了不少问题,基本上都找到了相应的解决之道,也还存在未解决的问题。不 过整个实验的过程就是一个解决问题的过程,每天都解决一些问题,我的实验也就解决 了,当然结果不重要,功利化的追求结果,会使人浮躁,还是享受那份疑难迎刃而解的快 感吧!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com