资源描述
课 程 设 计 任 务 书课程名称 单片机原理及应用 课 题 基于单片机的密码锁设计专业班级 测控技术与仪器0601班 任务书下达日期 2014 年 2 月 24 日任务完成日期 2014 年 3月 7 日设计内容与设计要求设计内容:1、 密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。2、 密码的输入: 采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。然后进入密码的判断比较处理状态并给出相应的处理过程。3、 按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。 4、设计要求:1、 设计方案要合理、正确;2、 系统硬件设计及焊接制作;3、 系统软件设计及调试;4、 系统联调;5、 写出设计报告。主 要 设 计 条 件1、 MCS-51单片机实验操作台1台;2、 PC机及单片机调试软件;3、 单片机应用系统板1套;4、 制作工具1套;5、 系统设计所需的元器件。说 明 书 格 式1. 封面2. 课程设计任务书3. 目录4. 系统总体方案设计5. 系统硬件设计6. 软件设计(包括流程图)7. 系统的安装调试说明8、 总结 9、参考文献10、附录(源程序清单及硬件原理图等);11、课程设计成绩评分表。 进 度 安 排设计时间为两周第一周星期一、上午:布置课题任务,讲课及课题介绍 下午:借阅有关资料,总体方案讨论星期二、确定总体设计方案星期三、硬件模块方案设计星期四、软件模块方案设计星期五、设计及调试第二周星期一、设计及调试星期二、设计及调试星期三、总调星期四、写说明书星期五、上午:写说明书,整理资料下午:交设计资料,答辩参 考 文 献1、微型计算机原理及应用许立梓编 机械工业出版社 20022、微型计算机接口技术及应用刘乐善编 华中理工大学出版社 2000 3、计算机硬件技术基础试验教程邹逢兴编 高等教育出版社 20004、16位微型计算机原理接口及其应用周佩玲编 中国科学技术大学出版社2000 5、微型计算机原理与接口技术吴秀清编 中国科学技术出版社 20016、微型计算机接口技术邓亚平编 清华大学出版社 20017、单片机原理及及应用王迎旭编 机械工业出版社 20018、单片机应用程序设计技术 周航慈 著 北京航空航天大学出版社 20029、单片机实用技术问答 谢宜仁 主编 人民邮电出版社 2002目录第1章 系统概述1.1系统功能.11.2设计内容及要求.1第2章 系统方案设计2.1总体方案22.2系统组成.2第3章 硬件设计3.1按键电路设计.93.2指示灯及报警蜂鸣器的电路设计.93.3显示电路设计.10第4章 软件设计4.1主程序设计114.2按键识别与编码设计.114.3显示程序设计134.4密码修改程序设计.15第5章 系统调试5.1软件模拟调试165.2硬件接线及调试.17第6章 总结6.1课程设计总结18.附: A、硬件图B、主程序流程图C、程序清单第1章 系统概述1.1系统功能本次设计使用ATMEL公司的AT 80C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。(3)状态指示、报警、锁定键盘功能。密码输入正确时有GOOD提示信息、密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘,并且相应的有指示灯指明状态。电子密码锁的设计主要由三部分组成:44矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等。1.2设计内容及要求(1)密码的设定,此密码是固定在程序存储器ROM中,假设预设的密为“12345”共5位密码。(2)密码的输入: 采用两个按键来完成密码的输入,其中一个按键为功能键另一个按键为数字键。在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。然后进入密码的判断比较处理状态并给出相应的处理过程。(3)按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。第2章 系统方案设计2.1总体方案 本密码锁系统采用80C51做主控制器,控制密码的输入、判断密码的正确与否。首先,系统将允许用户输入密码,用存储单元把输入的密码进行动态的保存,当用户输入完后可以按下“”表示确定,系统将进行密的确认,如果密码正确,则显示GOOD,并且有红灯亮,如果不正确,则用户可以再次进行输入密码,绿灯亮,当用户连续三次输入错误时,系统将显示BAD,和有报警的声音发出,蓝、绿灯同时亮,并且把键盘进行锁定,禁止用户进行输入, 扩展功能的实现可以外加一个开关,当将开关按下时,在输入了正确的密码之后,就可以对默认密码进行修改,按下“ON/C”键之后, 将修改的密码保存到存储默认密码的单元,即修改功能得以实现, 修改成功之后红绿蓝都亮。2.2系统组成本系统由单片机80C51系统、矩阵键盘、开关、LED显示和报警系统组成。系统组成原理框图如图2-1所示80C51单片机输入错误锁定键盘矩阵键盘控制一个蜂鸣器报警状态指示灯LCD六位显示器2.1 系统组成原理框图第3章 硬件设计3.1按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图31所示。31 单片机的键盘接口电路3.2指示灯及报警蜂鸣器的电路设计指示灯及报警蜂鸣器的电路如下图所示,当输入的密码正确时,红灯亮;当输入的密码错误时,绿灯亮;当三次错误输入时,绿灯和蓝灯同时亮并且报警法名器发出报警;当开关按下后,在输入正确的密码后可以修改密码。 原理如图21所示。图3。2 指示灯及报警蜂鸣器的连接电路3.3显示电路设计 将P1与显示的数据端相连,使其它能动态的传输要显示的数据,将p3的第六位与位选通端相连,选通相应的位。接线如图23所示 图3.3 显示电路的连接电路第4章 软件设计4.1主程序设计主程序主要完成初始化、检查有无按键按下、以及调用显示、指示灯、密码修改等等。具体模块包括:1、按键识别与编码设计2、显示程序设计3、密码修改程序设计主程序的流程图见附表B.4.2按键识别与编码设计当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。 对照图4.2所示的44键盘,说明扫描法原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。比如说扫描码送入01111111,前面的0111是代表此时扫描第一行P1.0列,而后面的1111是让读取的4行接脚先设高,若此时第一行的第三列按键被按下,那读取的结果就会变成01111101(注意1111变成1101),其中LSB的第三个bit会由1变成0,这是因為这个按键被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉到0,此即为扫描原理。由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,防抖动;为了避免让8051误判为多次输入同一按键,要加入按键是否松开,就可以让键盘的输入稳定。按键的操作面板如图图4.2所示。共计数字键10个,功能键6个。如图,10个数字键用来输入密码,0N/C用来修改密码,=用来进行输入密码的确认.图4.2 按键操作面板示意图流程图如下:开始是否键下? NYP2.4为低?NYP2.5为低?NYP2.6为低?NYP2.7为低?N Y得出编码RETRET 图4.3 按键识别与编码流程图4.3显示程序设计 显示设计采用动态扫描。 数码显示板上一共有8 个数码管,如果按照传统的数码管驱动方式(静态扫描方式),则需要8 个七段译码器进行驱动,这样既浪费资源,有时电路工作也不可靠。所以现在最常见的数码管驱动电路已经不用上述的静态扫描方式了,而是采用动态扫描显示的方式,这种方式只需一个译码器就可以实现电路正常、可靠的工作,这样大大节省资源。动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序(从左至右或从右至左)进行点亮,当点亮的频率(即扫描频率)不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右肯定可以满足上述两个要求。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。在C51指令中,延时子程序是相当简单的,并且延时时间也很容易更改,可参见程序清单中的DELAY延时子程序。 为了显示数字,要为LED显示器提供字型代码。我用的是共阴极的显示器。LED显示器的字形代码如下表所示: LED显示器共阴极十六进制数的字型代码01234567893FH06H5BH4FH66H6DH7DH07H7FH90H主要有三个显示程序组成,分别为输入的密码值显示程序和按键后的密码正确的提示程序,密码输入错误后的提示子程序。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序.-图43 a 等待密码输入及修改显示状态DOGO图43 b输入密码正确的显示状态-图43 c输入密码错误的显示状态DAB 图44 d 输入错误次数超过3次后的锁定状态及关闭状态图44 显示状态4.4密码修改程序设计修改密码的功能,是自己扩展的功能,在开关K1被按下时,输入了正确的密码之后,就可以进行密码的修改了,用ON/C来充当确定键,密码修改成功之后就有三指示灯提示亮,可以检验你是否真正的修改成功,只需输入你刚才修改的密码,如果有红灯亮并且在屏幕上显示GOOD信息,则已经修改成功了啊!密码修改子程序流程图4.4所示:开关按下?N Y有无键按下YN按键识别键码保存密码正确?NY修改密码主函数按ON/C修改完成图4.4 密码修改子程序流程第5章 系统调试5.1软件模拟调试首先,在wawe里面写的程序进行编译,唉,编译通不过,不过这也是意料之中的事,把一个一个提示的错误给改正过来,重新进行编译,终于没有错误提示信息了,接着,进行软件仿真,在proteus里面把硬件原理图画好,把在wawe里面写的程序装进80C51,进行仿真,唉,命途多坎啊!按下任何的键都没有反应,只好回到程序上进行修改了,把程序分成各个小的子程序逐一进行调试。对显示子程序进行调试,发现能够正确的显示,则表此程序一切都OK。在把键盘识别和编码的子程序添加进去,发现不能显示了,说明是这个子程序存在问题,接下来重点就是键盘编码部分了,由于我用的是顺序的判断是否有键按下和具体到底是哪个键被按下,思路特别的清晰,所以查找起来比较的方便。由于没有任何的反应,最有可能的就是进入了死循环。所以,先检查一下编码识别后面的程序,果真是进入了死循环,本来是应该编码之后就根据R7的值相应进行查表,进行显示。但由于我的粗心把一个变量没有归零所以一直在里面循环,把所有类似的错误改过来,发现就能够正确的显示了(按下哪个数字键就相应的显示它的值)。当我把显示子程序改为扫描方式,让其动态的显示多位,按键之后却发现全屏幕显示相同的数,看到如此的现象,心应该是按一次键却执行了很多的次数,所以最后全屏幕上都上相同的数,如此一来就应该加一个判断是否已经放下键了,但是需要在每个判断是否有键按下后面都要加一个判断,这样太麻烦,但是我们也可以在每次判断之后把相应的编码用完,立即清零也可以达到如此的效果,按照思路对程序进行相应的修改,在进行仿真,真的问题就迎刃而解了(按下哪个数就在屏幕上显示哪个值,按几个就显示几个(小于6)。接下来要做的就是,对所输入的密码进行比较,把CHECK子程序添加进去,如果不出现意外的话,屏幕上会有GOOD的提示信息,并且红色的指示灯亮,密码的比较有两个方面,一是对输入密码的个数进行比较,二是对密码的数值依次进行比较,只有全部通过猜是密码正确。在PROTEUS里面进行仿真,发现不管你输入的密码是正确还是错误的密码都错误的提示信息,真有想放弃的感觉,其实真的要有耐心和毅力的,心想这么容易的话,还有学的必要吗,呵呵,慢慢的心又平静下来了啊,投入到了程序之中,首先我把对密码的每一位进行比较的一段去掉,只剩下对密码个数的比较,发现结果还是不正确,存密码个数的是R7,对R7进行查看,发现我在输入六个密码之后在案“”(确定)之后R7里面的值是7,而我是用R7与6进行比较,把“”(确定)键忽略了,则只需要把R7与7进行比较即可,再次仿真,令人欣慰的是,如我锁思考的,问题解决了,再把对密码的每一位进行比较加去,打击人的是,又不对了啊,呵呵,真的是可笑我居然把一个编码键值与直接的显示数值相比较,那肯定是不会相等的啊,对此做了相应的改动之后,一切都正确了。接着就是如果输入的密码错误次数连续超过三次,则应该显示BAD的错误提示信息,前两次只有绿灯亮,三次错误之后,绿灯和蓝灯都亮,呵呵,这次还好,一拭就成功了,感觉这个模块是我做的最理想的一个模块了啊。工夫不负有心人,至此,老师分配给我们的基本任务就完成了,心里感觉特别的爽啊!我自己还想再里面加上修改密码的功能,用ON/C来充当确定键。到此软件的调试就结束了!5.2硬件接线及调试虽然软件设计是非常重要的,但是还是纸上谈兵啊,真正要到了调试的时候,这又是一个另一个比设计还头痛的事,我们说它令人头痛事有原因的,按理是通的,但调试不一定可以出来,甚至于设计是错误的,调试是设计的试金石啊!对单片机系统的实验室,我们在之前已经做了几个实验,对它有了初步的了解,使我们在这次做单片机课程设计不至于对单片机试验台太陌生。我们大概发了不到两天的时间就把源程序写出来了,并且调试成功了,但由于老师不方便,所以推迟到了第二个星期才到实验室正式调试了,到了实验室,真的是头晕,一看实验台的元器件,与我们设计的完全的不同,最突出的两点是键盘和I/O端口,我们在寝室摩拟反真用的是4*4的键盘,而学校是不规则的3*8的键盘,另外,在I/O的问题也比较的严俊,只能用p1口,所以只能用8255的芯片来扩展了,算以在之前的程序基础之上进行改动.还好,算是比较的顺利,只是稍微做了一下调试,功能就基本上对了.呵呵,付出了努力,还是有回报的,最终所有的功能都能在试验台上操作成功! 设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近二星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进之功能不断完善,成为真己的东西。 设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。 软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。 当然,这其中也有很多问题,第一、不够细心比如由于粗心大意错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!附录A:系统硬件电路原理图附录B、系统程序流程图上电开始初始化有无键按下按键识别键码保存显示输出是否键完 N Y判断密码?YN超过3次?哦??显示GOOD N密码修改Y NY键盘锁定显示GOOD附录C:源程序清单ORG 0000HSTART:MOV 2AH,#08H ;显示的初始化(开机显示;一;) MOV 2BH,#08H MOV 2CH,#08H MOV 2DH,#08H MOV 2EH,#08H MOV 2FH,#08H MOV 7AH,#06H MOV 7BH,#06H ;默认的密码为六个一 MOV 7CH,#06H MOV 7DH,#06H MOV 7EH,#06H MOV 7FH,#06H MOV R5,#0H ;记录按下的个数 MOV R7,#00H ;记录按下键的个数 MOV 3AH,#0DFH ;定义扫描的值 MOV 3BH,#0EFH MOV 3CH,#0F7H MOV 3DH,#0FBH MOV 3EH,#0FDH MOV 3FH,#0FEHMAIN: LCALL KEY LCALL DISPLAY JMP MAIN;*键盘识别子程序*KEY: ;按键识别 MOV P2,#0FFH MOV P2,#0BFH JB ACC.0, Y1 LCALL DELAY ;防抖动 JB ACC.0, Y1B1: MOV A, P2 ;按键是否松开 JNB ACC.0, B1 INC R7 LJMP M1Y1: JB ACC.1 ,Y2 LCALL DELAY ;防抖动 JB ACC.1, Y2B2: MOV A, P2 ;按键是否松开 JNB ACC.1, B2 INC R7 LJMP M2Y2: JB ACC.2,Y3 LCALL DELAY ;防抖动 JB ACC.2, Y3B3: MOV A, P2 ;按键是否松开 JNB ACC.2, B3 INC R7 LJMP M3Y3: JB ACC.3, Y4 LCALL DELAY ;防抖动 JB ACC.3, Y4B4: MOV A, P2 ;按键是否松开 JNB ACC.3, B4 INC R7 LJMP M4Y4: MOV P2,#0FFH MOV P2,#0DFH JB ACC.0, Y5 LCALL DELAY ;防抖动 JB ACC.0, Y5B5: MOV A, P2 ;按键是否松开 JNB ACC.0, B5 INC R7 LJMP M5Y5: JB ACC.1 ,Y6 LCALL DELAY ;防抖动 JB ACC.1, Y6B6: MOV A, P2 ;按键是否松开 JNB ACC.1, B6 INC R7 LJMP M6Y6: JB ACC.2,Y7 LCALL DELAY ;防抖动 JB ACC.2, Y7B7: MOV A, P2 ;按键是否松开 JNB ACC.2, B7 INC R7 LJMP M7Y7: JB ACC.3, Y8 LCALL DELAY ;防抖动 JB ACC.3, Y8B8: MOV A, P2 ;按键是否松开 JNB ACC.3, B8 INC R7 LJMP M8Y8: MOV P2,#0FFH MOV P2,#0EFH JB ACC.0, Y9 LCALL DELAY ;防抖动 JB ACC.0, Y9B9: MOV A, P2 ;按键是否松开 JNB ACC.0, B9 INC R7 LJMP M9Y9: JB ACC.1 ,Y10 LCALL DELAY ;防抖动 JB ACC.1, Y10B10: MOV A, P2 ;按键是否松开 JNB ACC.1, B10 INC R7 LJMP M10Y10: JB ACC.2,Y11 LCALL DELAY ;防抖动 JB ACC.2, Y11B11: MOV A, P2 ;按键是否松开 JNB ACC.2, B11 INC R7 LJMP M11Y11: JB ACC.3, Y12 ;防抖动 LCALL DELAY JB ACC.3, Y12B12: MOV A, P2 ;按键是否松开 JNB ACC.3, B12 INC R7 LJMP M12Y12: RET;*按键处理子程序*M1: MOV 70H,#9H ;对相应的键进行处理或赋值 LJMP D1M2: MOV 70H,#6H LJMP D1M3: MOV 70H,#3H LJMP D1M4: INC R5 ;确认键的处理 LCALL CHECKM5: MOV 70H,#8H LJMP D1M6: MOV 70H,#5H LJMP D1M7: MOV 70H,#2H LJMP D1M8: MOV 70H,#0H LJMP D1M9: MOV 70H,#7H LJMP D1M10: MOV 70H,#4H LJMP D1M11: MOV 70H,#1H LJMP D1M12: ;修改键的处理 MOV R7,#0H MOV R5,#0H MOV 7AH,5AH MOV 7BH,5BH MOV 7CH,5CH MOV 7DH,5DH MOV 7EH,5EH MOV 7FH,5FH MOV 2AH,#08H MOV 2BH,#08H MOV 2CH,#08H MOV 2DH,#08H MOV 2EH,#08H MOV 2FH,#08H MOV DPTR,#0CFA1H SETB ACC.5 SETB ACC.6 SETB ACC.7 MOVX DPTR,A LJMP MAIND1: MOV A,70H ; 对处理的值进行相应的保存 MOV DPTR,#TAB MOVC A,A+DPTR CJNE R7,#01H ,J1 MOV 2AH,A MOV 5AH,A LJMP DISPLAYJ1: CJNE R7,#02H ,J2 MOV 2BH,A MOV 5BH,A LJMP DISPLAYJ2: CJNE R7,#03H ,J3 MOV 2CH,A MOV 5CH,A LJMP DISPLAYJ3: CJNE R7,#04H ,J4 MOV 2DH,A MOV 5DH,A LJMP DISPLAYJ4: CJNE R7,#05H ,J5 MOV 2EH,A MOV 5EH,A LJMP DISPLAYJ5: CJNE R7,#06H ,DISPLAY MOV 2FH,A MOV 5FH,A ;*显示子程序*DISPLAY: MOV R1,#3AH MOV R0,#2AH MOV R3,#06LOOP:MOV A,R0 MOV P1,A MOV A,R1 MOV P3,A MOV R6,#0FH DJNZ R6,$ MOV P3,#0FFH INC R0 INC R1 DJNZ R3,LOOP RET;*检验密码子程序*CHECK:CJNE R7,#7 ,WOR MOV A,5AH CJNE A,4AH, WOR MOV A,5BH CJNE A,4BH, WOR MOV A,5CH CJNE A,4CH, WOR MOV A,5DH CJNE A,4DH, WOR MOV A,5EH CJNE A,4EH, WOR MOV A,5FH CJNE A,4FH, WOR MOV R5,#0H CLR P0.7 SETB P0.6 SETB P0.5 JNB P3.7,MORDFY ;判断开关的状态 LJMP GOOD;*修改密码子程序*MORDFY:MOV 2AH,#08H MOV 2BH,#08H MOV 2CH,#08H MOV 2DH,#08H MOV 2EH,#08H MOV 2FH,#08H MOV R7,#0H LJMP KEYWOR: CJNE R5,#3, DDD ;密码错误后处理 程序 SETB P0.7 CLR P0.6 CLR P0.5BAD: CPL P3.6 ;密码错误后的BAD处理程序 MOV 3AH,#0FEH MOV 3BH,#0FDH MOV 3CH,#0FBH MOV 2AH,#5EH MOV 2BH,#77H MOV 2CH,#7CH MOV R0,#2AH MOV R3,#3 MOV R1,#3AHLOOP2: MOV DPTR,#0CFA2H MOV A,R0 MOVX DPTR,A MOV A,R1 MOV P1,A MOV R6,#8FH DJNZ R6,$ MOV P1,#0FFH MOV R6,#0FH DJNZ R6,$ INC R0 INC R1 DJNZ R3,LOOP2 MOV R0,#2AH MOV R3,#3 MOV R1,#3AH LJMP BADDDD: SETB P0.7 CLR P0.6 CLR P3.6 MOV 2AH,#08H MOV 2BH,#08H MOV 2CH,#08H MOV 2DH,#08H MOV 2EH,#08H MOV 2FH,#08H MOV R7,#0H LJMP KEYGOOD:MOV 3AH,#0FEH ;GOOD显示程序 MOV 3BH,#0FDH MOV 3CH,#0FBH MOV 3DH,#0F7H MOV 2DH,#6FH MOV 2BH,#3FH MOV 2CH,#3FH MOV 2AH,#5EH MOV R0,#2AH MOV R3,#4 MOV R1,#3AHLOOP1:MOV A,R0 MOV P1,A MOV A,R1 MOV P3,A MOV R6,#0FH DJNZ R6,$ MOV P3,#0FFH INC R0 INC R1 DJNZ R3,LOOP1 MOV R0,#2AH MOV R3,#4 MOV R1,#3AH SJMP LOOP1DELAY: MOV R1,#50DL1: MOV R2,#48DL2: NOP NOP DJNZ R2,DL2 DJNZ R1,DL1 RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H, 7FH,6FH END电气信息学院课程设计评分表项 目评 价优良中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综 合 评 分指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容;此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
展开阅读全文