您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机课程设计密码锁
单片机原理及系统课程设计专业:自动化班级:动091姓名:肖亮学号:200907532指导教师:许文丽兰州交通大学自动化与电气工程学院2012年7月1日评语:平时(40)修改(30)报告(30)总成绩单片机原理及系统课程设计报告-1-1引言电子密码锁是现代生活中常用的加密工具,它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁,不仅具有电子密码锁的功能,还可引入智能化管理功能,从而使密码锁具有更高的安全性和可靠性。由于电子密码锁的保密性高、使用灵活性好、安全系数高等特点,受到了广大用户的亲睐,具有报警功能的电子密码锁代替弹子锁和密码量少的机械锁是必然趋势。本课程设计是基于AT89C51为核心的单片机控制的电子密码锁设计,能完成开锁、修改密码、密码错误报警并亮灯显示、LED显示密码等基本的密码锁功能,并通过Protues软件成功地进行了仿真。2设计方案及原理本文先通过仿真调试器keiluVision4软件将编写的汇编程序调试生成一个.hex文件,然后在仿真软件proteus上进行仿真。输入密码用一个四行三列的矩阵键盘,共有12个按键,包括数字键0到9和两个功能键,即密码输入键“ENTER”和清除键“CLC”。系统复位键也用一个按键控制,但不在4*3矩阵键盘中。七段LED数码管显示输入密码,用74LS245驱动数码管发光显示数码,用一个黄色发光二极管代替开锁的电路,发光表示开锁。打开电源后,显示器显示“HELLO”,设置初始密码为“123456”,只要输入的密码和它匹配,便开锁。按“CLC”键,清除当前输入的密码。输入6位密码后,按“ENTER”键,单片机会扫描矩阵键盘,计算出键值,与初始密码作比较,若输入正确,黄色LED灯亮,开锁;若输入密码错误,显示器显示闪烁字样“ERROR”、蜂鸣器鸣响、红色LED灯闪烁。在keiluVision4环境下,输入程序源代码,按照系统初始化程序模块、键盘键值的读取模块、LED显示程序模块,密码比较程序和报警程序模块检查输入正确与否,调试,生成一个.hex文件,然后打开仿真软件proteus,将需要的元器件布置在合适的位置,连接各元件,载入.hex文件,点击仿真开始按键,模拟密码锁的工作过程。单片机原理及系统课程设计报告-2-3硬件设计本设计基于AT89C51为核心的单片机控制的电子密码锁设计,本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。设计的电路框图如图1:AT89C5112MHZ的晶振矩阵键盘显示器输出解锁电路报警指示灯和蜂鸣器电路复位电路图1硬件设计模块框图3.1电路设计(1)主程序模块:主要完成程序初始化、置中间向量、扫描有无键按下、判断密码输入是否正确,检查复位按键是否按下等,主程序的流程图如图2。(2)密码比较及报警子程序模块:该模块的主要功能是将输入的密码与初始密码做比较,若输入的密码正确,则模拟开锁的黄色LED灯亮,若操作错误或密码输入错误,红色LED灯闪烁并且蜂鸣器鸣响,其流程图如图3。单片机原理及系统课程设计报告-3-开始I/O口初始化LED初始化调用电子锁密码扫描键盘是否有键按下?键值计算密码是否正确?开锁模拟灯黄色LED亮并保持一段时间蜂鸣器报警,红色LED灯闪烁YYN复位键是否被按下NNY图2主程序流程图开始开锁,黄色LED灯亮返回初始界面红色LED灯闪烁,蜂鸣器报警复位键是否按下?第一位密码匹配否?下一位密码匹配否?六位比较完?NYNNYYN图3密码比较及报警子程序流程图单片机原理及系统课程设计报告-4-3.2AT89C51功能及引脚介绍AT89C51单片机是把中央处理器CPU、随即存储器RAM、只读存储器ROM、定时/计数器、I/O接口电路等主要计算机部件集成在一块电路芯片上的单片微型计算机,本设计中单片机应用的主要功能就是控制LED显示器的显示、报警电路以及开锁电路,还用作键盘的扫描等。P0:本设计中的P0口主要是控制LED数码管的段选,从P0.0到P0.7依次控制abcdefgh段,当P0口给出不同的高低电平时数码管相应的段被点亮,由于P0口作输出口时,需接上拉电阻,所以在仿真时接有8位的上拉电阻,以使LED显示器有足够的亮度。P1:P1口是一个内部提供上拉电阻的8位双向I/O口,在本设计中用P1.0控制开锁电路,用P1.7控制报警电路。当P1.0输出低电平时,开锁电路被接通;当P1.7输出低电平时报警电路被接通。P2:本设计中的P2口控制LED数码管的位选,在仿真时显示器是一个8位的LED数码管,从右至左依次是第一位到第八位,当P2口给出不同的高低电平时,八位的LED数码管将被选择性的点亮。由于P2口内部提供上拉电阻,因此它作为输出口使用时,无需再外接上拉电阻,直接接在显示器的位选线上。P3:P3口用于键盘的扫描,P3.0至P3.3口分别接键盘的行线,P3.4至P3.6接键盘的列线,当没有键按下时,六个口皆为高电平,若行线状态中有低电平,表明有键按下。VCC:+5V电源VSS:接地RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。4软件设计在proteus环境下,根据硬件电路中的各个模块,把需要的器件放置在合适的位置,并修改参数,连线,点击仿真按键进行仿真。单片机原理及系统课程设计报告-5-若输入的密码正确时则黄色LED灯亮,持续亮一段时间后返回初始界面,显示器显示“HELLO”,仿真结果如图4。图4密码输入正确仿真图若输入的密码错误,或者操作错误时红色LED闪烁,同时蜂鸣器鸣响报警,显示界面闪烁显示“ERROR”,仿真结果如图5图5密码输入错误仿真图5总结这次课程设计提高了我综合运用所学知识的能力,通过发现、提出、分析问题最终解决实际问题。随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,作为当代大学生,学好单片机对我们以后的生活有很大的帮助。从选题到决定,从理论到实践,在这期间内,可以说得是苦多于甜,但是从中学到很多很多的的东西。首先是提升了我严谨的治学态度,同时巩固了以前所学的知识,而且在模拟仿真以及程序的调试过程中,学到了很多在书本上所没有学到的东西;其次,这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的融会贯通,同时提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,比如在汇编语言调试时困难重重,在解读程序方面也费了很多功夫,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,使我认识到了温故而知新的道理。单片机原理及系统课程设计报告-6-参考文献[1]李华,王思明等.单片机原理及及应用[M].兰州:兰州大学出版社,2001.[2]张洪润.单片机应用技术教程[M].北京:清华大学出版社,1997.[3]黄志伟.全国大学生电子设计竞赛实训[M].北京:北京航空航天大学出版社,2005.[4]周润景,丁莉等.单片机分析设计与制作[M].南京:机械工业出版社,2008.单片机原理及系统课程设计报告-7-附录LED_BIT_1EQU30HLED_BIT_2EQU31HLED_BIT_3EQU32HLED_BIT_4EQU33HLED_BIT_5EQU34HLED_BIT_6EQU35HLED_BIT_7EQU36HLED_BIT_8EQU37H;以下6个字节存放初始密码WORD_1EQU38HWORD_2EQU39HWORD_3EQU3AHWORD_4EQU3BHWORD_5EQU3CHWORD_6EQU3DH;以下6个字节存放用户输入的6位密码KEY_1EQU3EHKEY_2EQU3FHKEY_3EQU40HKEY_4EQU41HKEY_5EQU42HKEY_6EQU43H;******************************************************CNT_AEQU44HCNT_BEQU45HKEY_CNTEQU46H;已输出的密码位数LINEEQU47H;按键行号单片机原理及系统课程设计报告-8-ROWEQU48H;按键列号VALEQU49H;键值;******************************************************;以下为初始化程序,包括数据存储空间初始化,设置初始密码ORG00HSJMPSTARTORG0BHLJMPINT_T0START:MOVCNT_A,#00H;程序初始化MOVCNT_B,#00HMOVKEY_CNT,#00HMOVLINE,#00HMOVROW,#00HMOVVAL,#00HSETBP1.0MOVLED_BIT_1,#80H;段码存储区清0MOVLED_BIT_2,#80HMOVLED_BIT_3,#80HMOVLED_BIT_4,#3FHMOVLED_BIT_5,#38HMOVLED_BIT_6,#38HMOVLED_BIT_7,#79HMOVLED_BIT_8,#76HMOVKEY_1,#00H;输入密码存储区清0MOVKEY_2,#00HMOVKEY_3,#00HMOVKEY_4,#00HMOVKEY_5,#00HMOVKEY_6,#00HMOVWORD_1,#6;设置初始密码为123456MOVWORD_2,#5MOVWORD_3,#4MOVWORD_4,#3MOVWORD_5,#2MOVWORD_6,#1MOVTMOD,#01HMOVTH0,#(65536-1200)/256MOVTL0,#(65536-1200)/256MOVIE,#82HA0:LCALLDISP单片机原理及系统课程设计报告-9-;***********************************************************;以下为键盘扫描程序,计算键值并存入VALLSCAN:MOVP3,#0F0H;扫描行码L1:JNBP3.0,L2LCALLDLY_SJNBP3.0,L2MOVLINE,#00HLJMPRSCANL2:JNBP3.1,L3LCALLDLY_SJNBP3.1,L3MOVLINE,#01HLJMPRSCANL3:JNBP3.2,L4LCALLDLY_SJNBP3.2,L4MOVLINE,#02HLJMPRSCANL4:JNBP3.3,A0LCALLDLY_SJNBP3.3,A0MOVLINE,#03HRSCAN:MOVP3,#0FH;扫描列码C1:JNBP3.4,C2MOVROW,#00HLJMPCALCUC2:JNBP3.5,C3MOVROW,#01HLJMPCALCUC3:JNBP3.6,C1MOVROW,#02HCALCU:MOVA,LINE;计算键值MOVB,#03HMULABADDA,ROWMOVVAL,A;**************************************************;以下为按键处理程序,对不同的按键作出响应CJNEA,#0AH,J1;是否为CLR键MOVR1,KEY_CNT单片机原理及系统课程设计报告-10-CJNER1,#00H,J2LCALLALARM_1LJMPSTARTJ2:LCALLSHIFTRDECKEY_CNTW00:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W01LJMPA0W01:MOVA,P3CJNEA,#0F0H,W02LJMPA0W02:SJMPW00J1:MOVA,VALCJNEA,#0BH,J3;判断是否为ENTER键MOVR1,KEY_CNTCJNER1,#06H,J4MOVA,WORD_1;比较密码CJNEA,3EH,J5MOVA,WORD_2CJNEA,3FH,J5MOVA,W
本文标题:单片机课程设计密码锁
链接地址:https://www.777doc.com/doc-6073577 .html