ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:172.42KB ,
资源ID:5922421      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5922421.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的简易密码锁.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的简易密码锁.docx

1、基于单片机的简易密码锁基于单片机的简易密码锁1、实验目的1、熟悉程序的编译、下载方法和过程;2、熟悉利用max7219驱动数码管显示;3、熟悉AT89S51单片机的相关操作;4、熟悉案件的基本功能;2、实验内容1、使用液晶显示模块LCD1602;2、使用max7219驱动数码管显示;3、使用简易密码锁及按键模块;3、实验步骤1、设计硬件电路,焊制电路板,连接相关电路;2、观察给定程序所实现的功能;3、按照设定的功能修改程序编译程序,下载并调试程序;4、实验程序#include #include #define uchar unsigned char#define uint unsigned i

2、ntsbit BEEP = P34;/蜂鸣器sbit ACT=P30;/开锁器 sbit SET=P33;/设置密码指示灯sbit INPUT=P31;/输入密码指示灯sbit FLAG=P32;/密码错误指示灯sbit wei1=P35;sbit wei2=P36;bit ok_flag;uchar passwdnum;/密码位数uchar passwd10;/密码/const uchar tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80;/数码管显示 08/const uchar tab = 0x20,0x76,0x11,0x14,0x46,

3、0x84,0x80,0x36,0x00,0x04,0x02,0xc0,0xa1,0x50,0x79,0x71; /段码控制/const uchar dispbit8=0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F; /位选控制 查表的方法控制const uchar tab = 0xd7,0x84,0xe3,0xe6,0xb4,0x76,0x77,0xc4,0xf7,0xf6,0xf5,0x37,0x53,0xa7; /0D段码控制uchar input;/密码输入次数uchar chaopasswd=0,10,11,12,13,10,11,12,13,0,0;/

4、超级密码uint chaonum,time;uint num,su_flag;void beep();void passwd_set();void passwd_in();void DELAY(uint num);/*/main() P2=0xff;/送数码管显示 P0=0xff; P1=0xff;/读取按键 input=1; ok_flag=1; passwdnum=1; chaonum=1; time=0; ACT=1; SET=0; su_flag=0; FLAG=1; BEEP=0; wei1=0; wei2=1; while(passwdnum=8) passwd_set();/等待

5、设置密码 DELAY(500); passwdnum+; P0=0xff; P1=0xff; P0=0xff; P1=0xff; TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(time!=2)/2秒响铃 P2=tabtime+1; beep(); time=0; ET0=0; TR0=0; BEEP=0; SET=1; passwdnum=1; while(1) while(input=3) INPUT=0;/输入指示灯亮 FLAG=1; while(passwdnum=8)

6、 passwd_in();/等待输入密码 DELAY(500); P0=0xff; P1=0xff; passwdnum+; if(chaonum=9) chaonum=1; FLAG=1; INPUT=1;/输入指示灯灭 /密码正确响铃1秒 TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(time!=1) P2=tabtime+1; beep(); time=0; ET0=0; TR0=0; BEEP=0; DELAY(500); ACT=0; /5秒 TMOD=0x01;

7、TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(time!=5) P2=tabtime+1; time=0; ET0=0; TR0=0; BEEP=0; ACT=1; input=1; passwdnum=1; P0=0xff; P1=0xff; while(passwdnum=8) passwd_set();/等待设置密码 DELAY(500); passwdnum+; P0=0xff; P1=0xff; passwdnum=1; ok_flag=1; chaonum=1; continue; c

8、haonum=1; if(ok_flag=1&input=3)/密码正确 FLAG=1; INPUT=1;/输入指示灯灭 TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(time!=1) beep(); P2=tabtime+1; time=0; ET0=0; TR0=0; BEEP=0; DELAY(500); ACT=0; /5秒 TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR

9、0=1; while(time!=5) P2=tabtime+1; time=0; ET0=0; TR0=0; ACT=1; input=1; passwdnum=1; P0=0xff; P1=0xff; continue; else time=0; FLAG=0; ACT=1; /5秒 TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(time!=5) beep(); P2=tabtime; time=0; ET0=0; TR0=0; DELAY(500); input+; o

10、k_flag=1; passwdnum=1; P0=0xff; P1=0xff; continue; /密码错误处理代码 /密码错误3次响铃1分钟 TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; wei1=1; while(time!=60) BEEP=BEEP; wei2=0; P2=tab(time+1)%10; DELAY(5); wei2=1; P2=0x00; wei1=0; P2=tab(time+1)/10; DELAY(5); wei1=1; P2=0x00; BEEP=0

11、; time=0; ET0=0; TR0=0; DELAY(500); input=1; ok_flag=1; passwdnum=1; P0=0xff; P1=0xff; /*/void passwd_in() uchar key; while(P0=0xff&P1=0xff); DELAY(10); while(P0=0xff&P1=0xff); if(P0!=0xff) key=P0; beep(); switch(key) case 0xfe: P2=tab1;break;/1 case 0xfd: P2=tab2;break; case 0xfb: P2=tab3;break; ca

12、se 0xf7: P2=tab4;break; case 0xef: P2=tab5;break; case 0xdf: P2=tab6;break; case 0xbf: P2=tab7;break; case 0x7f: P2=tab8;break;/8 if(P1!=0xff) key=P1; beep(); switch(key) case 0xfe: key=10;P2=tab10;break;/a case 0xfd: key=11;P2=tab11;break; case 0xfb: key=12;P2=tab12;break; case 0xf7: key=13;P2=tab1

13、3;break;/d if(key=chaopasswdpasswdnum) chaonum+; if(key!=passwdpasswdnum) ok_flag=0; /*/void passwd_set() uchar key; while(P0=0xff); DELAY(10); while(P0=0xff); key=P0; beep(); switch(key) case 0xfe: passwdpasswdnum=key;P2=tab1;break;/1 case 0xfd: passwdpasswdnum=key;P2=tab2;break; case 0xfb: passwdp

14、asswdnum=key;P2=tab3;break; case 0xf7: passwdpasswdnum=key;P2=tab4;break; case 0xef: passwdpasswdnum=key;P2=tab5;break; case 0xdf: passwdpasswdnum=key;P2=tab6;break; case 0xbf: passwdpasswdnum=key;P2=tab7;break; case 0x7f: passwdpasswdnum=key;P2=tab8;break;/8 /*/void beep()/响铃1秒钟 uint i , j; for (i=

15、0;i10;i+) for (j = 0 ; j110 ; j+); BEEP=BEEP; BEEP=0; /关闭蜂鸣器void DELAY(uint num)/延时num毫秒钟 uint i , j; for(i=0;inum;i+) for(j=0;j110;j+);void T0_time() interrupt 1 TH0=(65536-45872)/256; TL0=(65536-45872)%256; num+; if(num=20) num=0; time+; 五、程序编写中遇到的问题与解决方法在这次实验的整个设计以及实际操作过程,我从中学习到了很多知识,当然在整个设计过程中出现

16、了很多问题。其中,困扰了我最久也是最让我担心的一个问题是:在仿真通过的前提下,将程序烧写到单片机后,发现自己做的板子出现的程序跑飞的情况。用万用表测试后发现并没有出现短路或者断路,然后借用创新实验室的数字示波器,对电路板的每个模块进行检测。发现是晶振出现了问题,12MHz的晶振在工作时只有3KHz的频率,这样明显不能让单片机工作,最后,在更换了两个晶振后,单片机也终于可以正常工作了。其次,在制作板子之前的打印工作时,考虑到需要将PCB转印上去造成电路图镜像了一次,但是忽略了焊接时是在反面进行了又一次镜像,所以在打印时也镜像了一次,这样就相当于镜像了三次,结果第一次做出的板子是镜像的。造成的直接

17、后果是单片机两排管脚全部反掉了,也意味着板子的报废,做了一次无用功。当然还有一些其他的小问题,都是可以及时的进行改正的。通过这次课设,除了对51单片机有了更加深入的了解外,还提高了自己的动手实践能力,对整个制板过程有了一个非常熟悉的了解。6、心得体会实验是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机实验,至今我仍感慨颇多,的确,从选题到

18、定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说三极管PNP管脚不懂怎么放置,不懂分得二极管的正负极,对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。这次实验终于顺利完成了,在设计中遇到了很多编程问题,最后在梁强老师的辛勤指导下,终于游逆而解。同时,在梁强老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 原理图 仿真图

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

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