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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电气0703袁利军 单片机课程设计电子密码锁.docx

1、电气0703袁利军 单片机课程设计电子密码锁第1章 系统概述1.1系统功能 本次设计使用ATMEL公司的AT 80C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)默认密码为123456,密码可以由用户自己修改设定(支持不超过6位的任意位密码,也可以不设密码),输入密码正确后才能修改密码。 (3)状态指示、报警、锁定键盘功能。密码输入正确时有GOOD提示信息、密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘,并且相应的有指示灯指明状态。电子密码锁的设计主要由三部分组成:34矩

2、阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等。1.2设计内容及要求 (1)密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“123456”共6位密码。(2)密码的输入: 采用数字键盘来完成密码的输入,其中#号按键为确认键,*号键位取消键,其他按键为数字键。在密码输入完毕并且确认功能键之后,才能完成密码的输入过程。然后进入密码的判断比较处理状态并给出相应的处理过程。(3)按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。第2章 系统方案设计

3、2.1总体方案 本密码锁系统采用80C51做主控制器,控制密码的输入、判断密码的正确与否。首先,系统将允许用户输入密码,用存储单元把输入的密码进行动态的保存,当用户输入完后可以按下“*”表示取消,重新输入密码。当用户输入完后可以按下“#”表示确定,系统将进行密的确认,如果密码正确,则显示GOOD,并且有红灯亮,如果不正确,红灯亮,显示“NO”,用户可以再次进行输入密码,当用户连续三次输入错误时,系统将显示NO,和有报警的声音发出,黄、绿、红灯同时亮,并且把键盘进行锁定,禁止用户进行输入, 扩展功能的实现是在输入了正确的密码之后,如果按“*”键表示放弃对密码的修改。如果按下“#”键,黄灯亮,就可

4、以对默认密码进行修改, 将进入修改密码状态并保存到存储默认密码的单元,按“*”返回再次输入密码。按“#”键确认,显示“GOOD”,密码修改成功,返回主菜单。这样修改功能得以实现。2.2系统组成本系统由单片机80C51系统、矩阵键盘、开关、LED显示和报警系统组成。系统组成原理框图如图2-1所示80C51单片机 复位按钮矩阵键盘控制 一个蜂鸣器LCD六位显示器 2-1 系统组成原理框图第3章 硬件设计3.1按键电路设计 由于设计要求输入数字密码,所以本设计就采用数字键盘,有09共十位数字。检测方法采用线反转法,先检测行后检测列。其原理如图3-1所示。图3-1单片机的键盘接口电路3.2指示灯及报警

5、蜂鸣器的电路设计 指示灯及报警蜂鸣器的电路如图3-2所示,当输入的密码正确时,绿灯亮;当输入的密码错误时,红灯亮;当三次错误输入时,绿灯和蓝灯和红灯同时亮并且报警法名器发出报警。图3-2指示灯及报警蜂鸣器的电路3.3显示电路设计 将P1与显示的数据端相连,使其它能动态的传输要显示的数据,将p3的第六位与位选通端相连,选通相应的位。 接线如图3-3所示图3-3显示电路3.4 复位键的设计当密码输入三次错误,则系统锁定键盘输入,按下复位键后,系统重新开始,如此可以防止系统报废,让系统再次循环使用。其硬件图如图3-4所示。图3-4复位键第4章 软件设计4.1主程序设计 主程序主要完成初始化、检查有无

6、按键按下、以及调用显示、指示灯、密码修改等等,流程图如图4-1所示。具体模块包括:1. 按键识别与编码设计2. 显示程序设计3. 密码修改程序设计图4-1主程序流程图4.2按键识别与编码设计当没有按键按下的时候,单片机循环等待按键按下,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。 每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对

7、按键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。 对照图4-2-1所示的44键盘,说明扫描法原理。首先辨别键盘中有无键按下,有则单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。图4-2-1键盘比如说扫描码送入00001111,前面的0000是代表列,而后面的1111代表行,是让读取的4行接脚先设高,若此时第一行的第一列按键被按下,那读取的结果就

8、会变成00001110(注意1111变成1110),其中LSB的第一个bit会由1变成0,这是因为这个按键被按下之后,会被垂直的扫描码电位短路接通,而把读取的LSB的bit电位拉到0,如此我们就知道是第一行有按键按下,然后再送入扫描码11110000,同理可以得出是第一列有按键按下,2次半段后就可以知道结果是按键“1”被按下。此即为扫描原理。其流程图如图4-2-2所示。 图4-2-2键盘识别子程序流程图4.3显示程序设计 显示设计采用动态扫描。显示程序流程图如图4-3所示显示程序流程图如图4-3 数码显示板上一共有8 个数码管,如果按照传统的数码管驱动方式(静态扫描方式),则需要8 个七段译码

9、器进行驱动,这样既浪费资源,有时电路工作也不可靠。所以现在最常见的数码管驱动电路已经不用上述的静态扫描方式了,而是采用动态扫描显示的方式,这种方式只需一个译码器就可以实现电路正常、可靠的工作,这样大大节省资源。动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序(从左至右或从右至左)进行点亮,当点亮的频率(即扫描频率)不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个

10、计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右肯定可以满足上述两个要求。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。在C51指令中,延时子程序是相当简单的,并且延时时间也很容易更改,可参见程序清单中的DELAY延时子程序。

11、如果显示数字,要为LED显示器提供字型代码。我用的是共阳极的显示器。LED显示器的字形代码如下表所示: LED显示器共阴极十六进制数的字型代码0123456789C0HF9HA4HB0H99H92H82HF8H80H90H主要有三个显示程序组成,分别为按键后的输入密码正确的提示程序,密码输入错误后的提示子程序。询问是否修改密码子程序.图43 a 等待密码输入及修改显示状态图43 b输入密码正确的显示状态图43 c输入密码错误的显示状态 图44 d 输入密码正确后询问是否修改密码状态图44 显示状态4.4密码修改程序设计修改密码的功能,是自己扩展的功能,再输入了正确的密码之后,按下“#”键就可以

12、进行密码的修改了,输入新密码完毕后,再按“#”确认,则密码修改成功,在屏幕上显示GOOD信息,则已经修改成功了。 密码修改子程序流程图4-4所示修改子程序流程图4-4第五章 系统调试5.1软件模拟调试首先,在wave里面写的程序进行编译,唉,编译通不过,不过这也是意料之中的事,把一个一个提示的错误给改正过来,重新进行编译,终于没有错误提示信息了,接着,进行软件仿真,在proteus里面把硬件原理图画好,把在wave里面写的程序装进80C51,进行仿真,唉,命途多舛啊!按下任何的键都没有反应,只好回到程序上进行修改了,把程序分成各个小的子程序逐一进行调试。对显示子程序进行调试,发现能够正确的显示

13、,则表示此程序一切都OK。在把键盘识别和编码的子程序添加进去,发现不能显示了,说明是这个子程序存在问题,接下来重点就是键盘编码部分了,由于我用的是顺序的判断是否有键按下和具体到底是哪个键被按下,思路特别的清晰,所以查找起来比较的方便。由于没有任何的反应,最有可能的就是进入了死循环。所以,先检查一下编码识别后面的程序,果真是进入了死循环,本来是应该编码之后就根据R7的值相应进行查表,进行显示。但由于我的粗心,把一个变量没有归零所以一直在里面循环,把所有类似的错误改过来,发现就能够正确的显示了(按下哪个数字键就相应的显示它的值)。当我把显示子程序改为扫描方式,让其动态的显示多位,按键之后却发现全屏

14、幕显示相同的数,看到如此的现象,心应该是按一次键,却执行了很多的次数,所以最后全屏幕上都上相同的数,如此一来就应该加一个判断是否已经放下键了,但是需要在每个判断是否有键按下后面都要加一个判断,这样太麻烦,但是我们也可以在每次判断之后把相应的编码用完,立即清零也可以达到如此的效果,按照思路对程序进行相应的修改,在进行仿真,真的问题就迎刃而解了(按下哪个数就在屏幕上显示哪个值,按几个就显示几个(小于6)。接下来要做的就是,对所输入的密码进行比较,把CHECK子程序添加进去,如果不出现意外的话,屏幕上会有GOOD的提示信息,并且红色的指示灯亮,密码的比较有两个方面,一是对输入密码的个数进行比较,二是

15、对密码的数值依次进行比较,只有全部通过猜是密码正确。在PROTEUS里面进行仿真,发现不管你输入的密码是正确还是错误的密码都错误的提示信息,真有想放弃的感觉,其实真的要有耐心和毅力的,心想这么容易的话,还有学的必要吗,呵呵,慢慢的心又平静下来了啊,投入到了程序之中,再次仿真,令人欣慰的是,如我所思考的,问题解决了,再把对密码的每一位进行比较加去,打击人的是,又不对了啊,呵呵,真的是可笑我居然把一个编码键值与直接的显示数值相比较,那肯定是不会相等的啊,对此做了相应的改动之后,一切都正确了。接着就是如果输入的密码错误次数连续超过三次,则应该显示NO的错误提示信息,前两次只有绿灯亮,三次错误之后,绿

16、灯和蓝灯都亮,呵呵,这次还好,一试就成功了,感觉这个模块是我做的最理想的一个模块了啊。工夫不负有心人,至此,老师分配给我们的基本任务就完成了,心里感觉特别的爽啊!我自己还想再里面加上修改密码的功能,用“#”来充当确定键。到此软件的调试就结束了!5.2硬件接线及调试虽然软件设计是非常重要的,但是还是纸上谈兵啊,真正要到了调试的时候,这又是一个另一个比设计还头痛的事,我们说它令人头痛事有原因的,按理是通的,但调试不一定可以出来,甚至于设计是错误的,调试是设计的试金石啊!对单片机系统的实验室,我们在之前已经做了几个实验,对它有了初步的了解,使我们在这次做单片机课程设计不至于对单片机试验台太陌生。我们

17、大概发了不到两天的时间就把源程序写出来了,并且调试成功了,但由于老师不方便,所以推迟到了第二个星期才到实验室正式调试了,到了实验室,真的是头晕,一看实验台的元器件,与我们设计的完全的不同,最突出的两点是键盘和I/O端口,我们在寝室模拟仿真用的是3*4的键盘,而学校是不规则的3*8的键盘,另外,在I/O的问题也比较的严俊,只能用p1口,所以只能用8255的芯片来扩展了,以在之前的程序基础之上进行改动.还好,算是比较的顺利,只是稍微做了一下调试,功能就基本上对了.呵呵,付出了努力,还是有回报的,最终所有的功能都能在试验台上操作成功!设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决

18、实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能

19、真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进之功能不断完善,成为自己的东西。 俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的

20、预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。 软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。 当然,这其中也有很多问题,第一、不够细心比如由于粗心大意错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课程设计是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就

21、是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师那里我学得到很多实用的知识。在此对汪超老师以及给过我帮助的所有同学再次表示忠心的感谢!参 考 文 献1、微型计算机原理及应用许立梓编 机械工业出版社 20022、微型计算机接口技术及应用刘乐善编 华中理工大学出版社 2000 3、计算机硬件技术基础试验教程邹

22、逢兴编 高等教育出版社 20004、16位微型计算机原理接口及其应用周佩玲编 中国科学技术大学出版社2000 5、微型计算机原理与接口技术吴秀清编 中国科学技术出版社 20016、微型计算机接口技术邓亚平编 清华大学出版社 20017、单片机原理及及应用王迎旭编 机械工业出版社 20018、单片机应用程序设计技术 周航慈 著 北京航空航天大学出版社 20029、单片机实用技术问答 谢宜仁 主编 人民邮电出版社 2002附 录硬件原理图源程序:ORG 0000HSTART:MOV R7,#03HMOV 50H,#82H ;密码付初值MOV 51H,#92HMOV 52H,#99HMOV 53H,

23、#0B0HMOV 54H,#0A4HMOV 55H,#0F9H MOV 60H,#01H ;显示付初值 MOV 61H,#03H MOV 62H,#07H MOV 63H,#0FH MOV 64H,#1FH MOV 65H,#3FHMAIN: ;主程序MOV R0,#60HMOV R1,#20HMOV R2,#0HMOV P0,#0FFH ;开机显示_MOV P3,#7FHMOV P1,#0F7HLOOP: LCALL KEY CJNE A,#89H,MAIN1 JMP MAINMAIN1:CJNE A,#9CH,MAIN2 LCALL CHECK JMP MAINMAIN2:LCALL DI

24、SPLAYINC R0INC R1INC R2CJNE R2,#06H,LOOPLOOP2:LCALL KEY CJNE A,#89H,MAIN3 JMP MAINMAIN3:CJNE A,#9CH,MAIN4 LCALL CHECK JMP MAINMAIN4:JMP LOOP2KEY:MOV P2,#0FH ;键盘输入子程序JNB P2.0,Y1JNB P2.1,Y2JNB P2.2,Y3JNB P2.3,Y4JMP KEYY1:MOV P2,#0FFH MOV P2,#0F0H JNB P2.4,Y11 JNB P2.5,Y12 MOV A,#0B0H RET Y11:MOV A,#0F

25、9H RET Y12:MOV A,#0A4H RETY2:MOV P2,#0FFH MOV P2,#0F0H JNB P2.4,Y21 JNB P2.5,Y22 MOV A,#82H RET Y21:MOV A,#99H RET Y22:MOV A,#92H RETY3:MOV P2,#0FFH MOV P2,#0F0H JNB P2.4,Y31 JNB P2.5,Y32 MOV A,#90H RET Y31:MOV A,#0F8H RET Y32:MOV A,#80H RETY4:MOV P2,#0FFH MOV P2,#0F0H JNB P2.4,Y41 JNB P2.5,Y42 MOV

26、A,#9CH RETY41:MOV A,#89H RETY42:MOV A,#0C0H RETDISPLAY:MOV R1,A ;显示子程序 MOV P1,#0BFH MOV P3,R0 RETCHECK:DEC R1 ;检查密码子程序 MOV A,R1 CJNE A,50H,DOWN DEC R1 MOV A,R1 CJNE A,51H,DOWN DEC R1 MOV A,R1 CJNE A,52H,DOWN DEC R1 MOV A,R1 CJNE A,53H,DOWN DEC R1 MOV A,R1 CJNE A,54H,DOWN DEC R1 MOV A,R1 CJNE A,55H,D

27、OWN MOV P0,#82H LCALL GOOD MOV P1,#58H MOV P3,#7FH C2:LCALL KEY CJNE A,#89H,C1 JMP MAIN C1:CJNE A,#9CH,C2 MOV P1,#0F7H MOV P0,#02H LCALL GAIMI RETDOWN: DJNZ R7,DOWN1 MOV P0,#00H LCALL BAD DOWN2:CPL P3.7 JMP DOWN2DOWN1:MOV P0,#8DH LCALL BAD MOV P3,#7FH RETGAIMI:MOV P3,#7FH ;修改密码子程序MOV P1,#0F7HMOV R0,

28、#60HMOV R1,#20HMOV R2,#0HLOOP3:LCALL KEY CJNE A,#89H,GAIMI1 JMP GAIMIGAIMI1:CJNE A,#9CH,GAIMI2 LCALL XIUGAI RETGAIMI2:LCALL DISPLAYINC R0INC R1INC R2CJNE R2,#06H,LOOP3LOOP4:LCALL KEY CJNE A,#89H,GAIMI3 JMP GAIMIGAIMI3:CJNE A,#9CH,GAIMI4 LCALL XIUGAI RETGAIMI4:JMP LOOP4XIUGAI:DEC R1 MOV 50H,R1 DEC R1

29、 MOV 51H,R1 DEC R1 MOV 52H,R1 DEC R1 MOV 53H,R1 DEC R1 MOV 54H,R1 DEC R1 MOV 55H,R1 LCALL GOOD RETGOOD:MOV 3AH,#0C2H ;显示GOOD子程序 MOV 3BH,#0A3H MOV 3CH,#0A3H MOV 3DH,#0A1H MOV 30H,#02H MOV 31H,#04H MOV 32H,#08H MOV 33H,#10H MOV R0,#3AH MOV R1,#30H MOV R2,#04H MOV R3,#0FFH LOOP1:MOV A,R1 MOV P3,A MOV A

30、,R0 MOV P1,A ACALL YANCHI MOV P1,#0FFH INC R0 INC R1 DJNZ R2,LOOP1 MOV R0,#3AH MOV R1,#30H MOV R2,#04H DJNZ R3,LOOP1 RETBAD: MOV 3AH,#0C8H ;显示NO子程序 MOV 3BH,#0C0H MOV 30H,#04H MOV 31H,#08H MOV R0,#3AH MOV R1,#30H MOV R2,#02H MOV R3,#0FFH LOOP5:MOV A,R1 MOV P3,A MOV A,R0 MOV P1,A ACALL YANCHI MOV P1,#0FFH INC R0 INC R1 DJNZ R2,LOOP5 MOV R0,#3AH MOV R1,#30H MOV R2,#02H DJNZ R3,LOOP5 RETYANCHI: MOV R6,#6H ;延时程序YC1: MOV R5,#0FFH

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2