电子信息工程专业课程设计任务书题目:基于51单片机的电子密码锁设计设计内容设计制作和调试一个由8051MCU组成的密码锁系统。通过这个过程学习熟悉键盘控制使用,掌握51系列单片机控制和测试方法。设计以AT89C51单片机为核心,以4*4矩阵键盘做为系统的密码输入和调整密码,以发光二级管来代替磁力锁,完成基本要求,可以适当发挥进行扩展设计。1)数码管显示:六位密码;2)键盘输入密码或密码修改;设计步骤一、总体方案设计其中,采用51系列MCU构成典型电路。可选用适当的芯片;可选用/不选用LED/键盘驱动芯片;建议扩口用74244、74373扩展。二、硬件选型工作三、硬件的设计和实现1.选择计算机机型(采用51内核的单片机);2.设计支持计算机工作的外围电路(EPROM、RAM、I/O端口、键盘、显示接口电路等);3.接口电路;4.其它相关电路的设计或方案(电源、通信等)-1-四、软件设计1.分配系统资源,编写系统初始化和主程序模块;2.编写相关子程序;3.其它程序模块(显示与键盘等处理程序)。五、编写课程设计说明书,绘制完整的系统电路图(A3幅面)。课程设计说明书要求1.课程设计说明书应采用学院统一印制的课程设计(论文)说明书封面,书写应认真,字迹工整,论文格式参考国家正式出版的书籍和论文编排。2.论理正确、逻辑性强、文理通顾、层次分明、表达确切,并提出自己的见解和观点。3.课程设计说明书应有目录、摘要、序言、主干内容(按章节编写)、主要结论和参考书,附录应包括程序清单、系统方框图和电路原理图。4.课程设计说明书应包括按上述设计步骤进行设计的分析和思考内容和引用的相关知识。5.要求打印B5纸,排版要求请向指导教师索取。6.每组单独一个题目,每组上限5人。时间安排课程设计计划时间4周。课程设计题目于15周下发。课程设计完成后于18周四下午下班前送交电子信息办公室(实验楼三楼),届时指导教师安排短暂答辩。辅导时间和地点答疑请直接与指导教师联系。-2-目录一、设计要求……………………………………1二、设计目的……………………………………1三、设计的具体实现……………………………11.系统概述…………………………………12.系统总体方案设计………………………23.硬件电路设计……………………………34.软件设计…………………………………8四、结论与调试…………………………………13五、心得与体会…………………………………14六、附录…………………………………………151.元件清单…………………………………152.电路原理图………………………………163.源程序清单………………………………17七、参考文献……………………………………22-3-电子密码锁课程设计报告一、设计要求1.可人工设定6位密码;2.输入密码可在LED数码管上显示;3.输入密码正确开锁,输入密码错误有报警提示;4.三次输入密码机会;二、设计目的1.培养学生从文献和调查研究中获取知识的能力,提高学生从别人经验,从其他学科找到解决问题的新途径的悟性。2.培养学生综合运用本专业基本理论、基本知识和基本技能的能力,使学生获得从事本专业工程技术工作的基本训练。3.培养学生勇于探索,严谨推理,实事求是,用实践检验理论、全方位地考虑问题等科学技术人员应有的素质。4.培养学生综合运用所学知识独立完成课题的工作能力,为毕业设计打好基础。5.提高学生对工作认真负责、一丝不苟,对同学团结友爱、协作攻关,对新事物能潜心考察,勇于开拓,勇于实践的基本素质。三、设计的具体实现1.系统概述从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。用户开机后数码管显示6个“0”表示待机状态,初始密码为6个“123456”,按下确认件*可以开始输密-4-码,数码管的第一位开始闪烁,输入一位密码后,闪烁的数码管后移一位,当输入错误时可按#退格取消输入。每一位密码可以是键盘上0-9数字任意一个。密码输入错误时蜂鸣器报警,同时红色发光二极管亮,密码错误三次将不能再输入,复位后回到待机状态。密码输入正确后,绿色发光二极管亮,可以修改。修改密码的显示界面和输入密码时相同。输入新密码后按键确认键*回到待机状态。数码管显示单片机CPU8255A矩阵按键声光报警2.系统总体方案设计本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警功能。(1)单片机系统:此次课题采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。此次课题用单片机P0端口的P0.7—P0.5及P0.3—P0.0分别控制键盘的列线和行线;P1端口的P1.0—P1.3来输送显示的数据,用P1.4—P1.6来输送控制显示-5-位数译码的数据。电路中,P2.0接一个发光二极管,这是模拟电子密码锁的控制开启装置。当输入正确的密码后,发光二级管就会被点亮,从而可模拟电子锁的开启。(2)矩阵键盘接口电路:此次课程设计采用4*3矩阵键盘,与P0端口的P0.7—P0.5及P0.3—P0.0相连,采用扫描法。设有0——9十个数字密码、一个清除键“#”和一个确认键“*”。开机显示000000,等待密码输入,输入6个密码,按确认键后,密码比较。(3)LED显示:此次课程设计6密码6显示器,按键后即显示,动态显示。根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,等待重新输入。(4)报警系统:此次课程设计,当按键三次错误后,系统报警,报警装置由一扬声器实现,从P2.1口输出脉冲,使扬声器鸣报警。3.硬件电路设计(1)键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3.1-6-图3.1矩阵键盘每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图3.1所示的4×3键盘,说明逐行扫描查询的工作原理。判断键盘有无按下:1)先将行线P0.0-P0.3置1110,然后检查列线的状态,如果P0.5-P0.7为110,则“1”键被按下;如果P0.5-P0.7为101,则“2”键被按下;如果P0.5-P0.7为011,则“3”键被按下。-7-2)将行线P0.0-P0.3置1101,然后检查列线的状态,方法同1);3)将行线P0.0-P0.3置1011,然后检查列线的状态,方法同1);4)将行线P0.0-P0.3置0111,然后检查列线的状态,方法同1);具体的功能设计如表3.1:表3.1按键功能按键键名功能说明0-9键数字键输入密码*键确定键比较密码#键清除键使显示器清零(2)LED显示电路本系统的显示采用串行显示的方式,只使用单片机的一个串行口,利用74LS47驱动数码管发光显示数码和74LS138控制位选信号,就可以完成单片机的显示功能,显示电路的电路原理图如图3.2所示。用P1.0—P1.3接74LS47的A,B,C,D四端口,74LS47的输出口接LED的七段显示;而P1.4—P1.6接74LS138的A,B,C三个输入口,74LS138的输出口接LED的位显示。通过软件实现数字和位控制。此次基于单片机的电子密码锁,我选用动态显示,通过与软件配合,每输入一个密码,进行显示一次扫描,6个密码输入完后,进行比较,密码正确则开锁,密码错误,可重新输入三次,三次后仍然错误,报警!-8-图3.2LED显示电路用74LS47可以控制输出什么字型。74LS47的逻辑功能表如表3.2所示:表3.274LS47的逻辑功能表-9-用74LS138控制位循环显示,其逻辑功能表如表3.3:表3.374LS138逻辑功能表(3)开锁电路在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如3.3所示。当P2.0口输出低电平时,二极管发光,表示开锁。CBAY1Y2Y0Y3Y4Y5Y6Y70000111111100110111111010110111110111110111110011110111101111110111101111110111111111110-10-图3.3开锁电路(4)报警电路输入密码与设定密码做比较,当输入密码与设定密码不同,返回再输入,当输入密码次数超过3次时,通过软件从AT89S51的P2.1输出脉冲,使扬声器鸣笛报警。电路图如图3.4所示。图3.4报警电路4.软件设计(1)软件设计思路电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。当输入密码连续输入错误3次时,系统报警。密码的设定,在此程序中密码是固定40H—45H中,假设预设的密码为123456共6位密码。由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密-11-码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。(2)各子程序设计1)主程序流程图:开始清除原始显示开始扫描读入P0值并存入寄存器按键值左移一位C=0?转移至按键处理子程序取码指针加13列扫描完?调用显示子程序扫描值载入令C=1扫描下一行扫描值左移一位C=1?令P0.3=0NNN-12-2)按键处理子程序流程图:读入P0值是“*”键?是“#”键?存储数字按键值调用显示子程序返回主程序重新开始扫描-13-3)比较子程序流程图:输入数据与密码值比较比较下一个码码比较完?控制电锁启动延迟0.1s返回主城需求重新开始扫描-14-4)显示子程序流程图:显示第一位延迟3ms显示第二位延迟3ms显示第三位延迟3ms显示第四位延迟3ms显示第五位延迟3ms显示第六位延迟3ms返回主程序-15-5)密码比较及对错处理密码输入完成之后,进行密码比较,即将设定密码单元的密码与输入密码的密码进行一一比较,如果相同,则密码正确,P2.0置高电平,如果密码错误,则显示器清零,重新等待输入密码,如果三次错,则P2.1输出脉冲,使接在P2.1的使扬声器鸣笛报警。四、结论与调试本次调试采用Protues软件仿真。首先设计电子密码锁的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。依次按下1,2,3,4,5,6后,LED显示如图4.1图4.1LED显示按下确定键后,二极管亮,表示密码正确开门。如图4.2图4.2密码正确开锁-16-五、心得与体会这四周的课程设计,让我对单片机电路的理论有了初步的、系统的了解。我了解到了单片机系统电路设计、软件系统编程的技巧。这些知识不仅在课堂上有效,对以后的专业技术课的学习有很大的指导意义,而且在日常生活中更是有着现实意义。对自己的动手能力是个很大的锻炼。实践出真知,纵观古今,所有发明创造无一不是在实践中得到检验的。没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。在设计和制作中,我锻炼了自己动手技巧,提高了自己解决问题的能力。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整四个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所