1、第1页共24页目录第一章引言4第二章设计总说明421设计说明422设计总结构图6第三章系统硬件设计631矩阵键盘接口电路632LED显示833报警系统9第四章系统软件设计941软件设计思路942键盘扫描子程序设计1043LED显示子程序说明1144密码修改比较和报警子程序设计13第五章总体设计图17第六章设计程序18第七章系统调试26第八章心得体会26参考文献27第一章引言单片机也被称微控器,是因为它最早被用在工业控制领域。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能。这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。单片机对成本是敏感的,所以目前占统治地
2、位的软件还是最低级汇编语言,它是除了二进制机器码最低级的语言了,既然这么低级为什么还要用呢很多高级的语言已经达到了可视化编程的水平为什么不用呢原因很简单,就是单片机没有家用计算机那样的CPU,也没第2页共24页有像硬盘那样的海量存储设备。单片机在硬件资源方面的利用率必须很高才行。本设计是基于单片机的密码锁设计方案,根据要求,给出单片机密码锁的硬件电路和软件程序,同时给出单片机型号的选择,硬件设计,软件流程图等内容。第二章设计总说明21设计说明随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求
3、的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。本次基于8051单片机电子密码锁的设计,其主要具有如下功能(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能改密码。修改密码之前必须再次输入密码。(3)报警、锁定键盘功能。密码输入用发光管显示,当连续3次输入错误密码,系统声光报警。电子密码锁的设计主要由三部分组成44矩阵键盘接口电路、密码锁的控制
4、电路、输出八段显示电路。另外系统还有LED提示灯等。密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能第3页共24页(1)密码输入功能按下一个数字键,一个数字就显示在右边的数码管上,同时将先前输入的所有数字向左移动一位。(2)密码清除功能当按下清除键时,清除前面输入的所有值,并清除所有显示(3)密码更改功能将输入的值作为新的密码。(4)开锁功能当按下开锁键,系统将输入与密码进行检查核对,如果确锁打开,否则不打开。主要的设计实施过程首先,选用8051单片机,以及其他电子元器件。第二步,设计硬件电路。第三步,编写单片机语言实现功能。第四部,分别进行软件和硬件的调试。最后,联合软、硬件调试
5、整个系统,完成本次课程设计。关键词44矩阵键盘;8051单片机;密码锁;密码二次确认21设计总结构图超次报警电路密码正确开门电路键盘控制电路8051单片机LED显示电路第4页共24页第三章系统硬件设计此次课程设计基于单片机控制的电子密码锁,接到课题后,根据老师布置的任务和相关要求,结合主要设计条件,我设计了如下方案,其总体方案设计如下本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警功能。31矩阵键盘接口电路此次课程设计采用44矩阵键盘,与P1口相连,采用扫描法。设有09十个数字密码,一个修改密码键,一个清除键和一个确认键。开机显示000000,等待密码输入,输入
6、6个密码,按确认键后,密码比较。矩阵式键盘的识别方法确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法行扫描法又称为逐行或列扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。判断键盘中有无键按下(1)先将行线P17P14置0111,然后检测列线的状态。如果P13P10为0111,则K0被按下;如果P13P10为1011,则K1被按下;如果P13P10为1101,则K2被按下;如果P13P10为1110,则K3被按下;(2)将行线P17P14置1011,然后检测列线的状态,方法同(1);(3)将行线P17P14置1101,然后检测列线的状态,方法同(1);(4)将行线P
7、17P14置1110,然后检测列线的状态,方法同(1)第5页共24页32LED显示此次课程设计6密码6显示器,按键后即显示,动态显示。根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,等待重新输入。第6页共24页LED数码显示字形(段)码表如下显示字形字形码(共阳极)字形码(共阴极)0C0H3FH1F9H06H2A4H5BH3B0H4FH499H66H592H6DH682H7DH7F8H07H880H7FH990H6FHA88H77HB8
8、3H7CHCC6H39HDA1H5EHE86H79HF8EH71H33报警系统此次课程设计,当按键三次错误后,系统报警,报警装置由一扬声器实现,从P12口输出脉冲,使扬声器鸣报警。第7页共24页第四章系统软件设计41软件设计思路电子密码锁工作的主要过程是通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,做出开锁或报警处理。当输入密码连续三次错误时,系统报警。密码的的设定在此程序中密码是固定40H45H中,假设预定密码为“123456”六位。在正常状态时,可以进行重新设置密码、上锁等操作。重新设置密码时,首先验证原始密码,如相同则可进行密码更改,然后将新密码保存至AT2
9、4C01中。按键按其功能分为两种,其中一种为功能键另一种为数字键。输入密码后,直到所有密码输入完毕按下确认功能键之后,才完成密码输入过程。进入密码的判断比较处理状态并给出相应的处理过程。42键盘扫描子程序设计键盘扫描流程如图第8页共24页键盘扫描子程序如下L2MOVR3,0F7HMOVR1,00HL3MOVA,R3MOVP1,AMOVA,P1MOVR4,ASETBCMOVR5,04HL4RLCAJNCKEYININCR1DJNZR5,L4CALLDISPMOVA,R3第9页共24页SETBCRRCMOVR3,AJCL3JMPL243LED显示子程序LED显示子程序流程图如下图43LED显示子程
10、序如下DISPMOVR0,45HDISP1MOVA,R0ADDA,350HMOVP0,ACALLDELYDECR0开始载入按键值按键值74LS138的扫描值送入P0口第10页共24页MOVAR0ADDA,40HMOVP0,ACALLDELYDECR0MOVA,R0ADDA,30HMOVP0,ACALLDELAYDECROMOVA,R0ADDA,10HMOVP0,ACALLDELAYDECR0MOVA,R0ADDA,00HMOVP0,ACALLDELAYRET44密码修改比较和报警程序密码比较流程图如下第11页共24页图44第12页共24页密码修改与比较程序SET0MOVR1,65HMOVR0,
11、35HMOVR2,06HE1MOVA,R1MOVR0,ADECR1DECR0DJNZR2,E1LCALLDELAYLCALLDELAY开始比较第一位比较下一位6位比较完正确开锁清零清除显示记录错误次数3次报警YNNNYY第13页共24页LCALLDELAYE2LJMPSTARTCOMPMOVR1,65HMOVR0,35HMOVR2,06HC1MOVA,R1XRLA,R0JNZC3DECR1DECR0DJNZR2,C1SETBP10LCALLDELAYLCALLDELAYLCALLDELAYCLRP10MOVR2,200C2MOVR6,248DJNZR6,DJNZR2,C2LJMPSTARTC3
12、SETBP11LCALLDELAYLCALLDELAYLCALLDELAYCLRP11INCR5MOVA,R5MOVR5,ACJNER5,03H,C4SETBP12第14页共24页LCALLDELAYLCALLDELAYLCALLDELAYCLRP12LCALLSC4LJMPSTARTEND第五章系统总设计图第15页共24页系统总图第六章设计程序OUTBITEQU08002H第16页共24页OUTSEGEQU08004HINEQU08001HLEDBUFEQU60HMOVR7,10HMOVR6,06HMOVR1,35HL1MOVA,R7MOVDPTR,LEDMAPMOVCA,ADPTRMOVR
13、1,ADECR1INCR7DJNZR6,L1LJMPREADYLEDMAPDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HDB06H,5BH,4FH,66H,6DH,7DHDELAYMOVR7,0DELAYLOOPDJNZR7,DELAYLOOPDJNZR6,DELAYLOOPRETDISPLAYLEDMOVR0,LEDBUFMOVR1,6MOVR2,01HLOOPMOVDPTR,OUTBITMOVA,0MOVXDPTR,AMOVA,R0第17页共24页MOVDPTR,OUTSEGMOVXDPTR,AMOVDP
14、TR,OUTBITMOVA,R2MOVXDPTR,AMOVR6,1CALLDELAYMOVA,R2RLAMOVR2,AINCR0DJNZR1,LOOPRETTESTKEYMOVDPTR,OUTBITMOVA,0MOVXDPTR,AMOVDPTR,INMOVXA,DPTRCPLAANLA,0FHRETKEYTABLEDB16H,15H,14H,0FFHDB13H,12H,11H,10HDB0DH,0CH,0BH,0AHDB0EH,03H,06H,09HDB0FH,02H,05H,08HDB00H,01H,04H,07HGETKEYMOVDPTR,OUTBITMOVP2,DPHMOVR0,LOWI
15、N第18页共24页MOVR1,00100000BMOVR2,6KLOOPMOVA,R1CPLAMOVXDPTR,ACPLARRAMOVR1,AMOVXA,R0CPLAANLA,0FHJNZGOON1DJNZR2,KLOOPMOVR2,0FFHSJMPEXITGOON1MOVR1,AMOVA,R2DECARLARLAMOVR2,AMOVA,R1MOVR1,4LOOPCRRCAJCEXITINCR2DJNZR1,LOOPCEXITMOVA,R2MOVDPTR,KEYTABLE第19页共24页MOVCA,ADPTRMOVR2,AMOVA,R2XRLA,0EHJZCOMPAREMOVA,R2XRLA,
16、0CHJZCLEANMOVA,R2XRLA,0AHJZSET1MOVA,R2XRLA,0FHJZSET2WAITRELEASEMOVDPTR,OUTBITCLRAMOVXDPTR,AMOVR6,10CALLDELAYCALLTESTKEYJNZWAITRELEASEMOVA,R2RETREADYANLP1,00HSMOVR5,00HABCCLRPSW5STARTMOVR4,06HMOVR0,60HCLEARMOVR0,00HINCR0第20页共24页DJNZR4,CLEARMOVSP,40HMOVLEDBUF0,3FHMOVLEDBUF1,3FHMOVLEDBUF2,3FHMOVLEDBUF3
17、,3FHMOVLEDBUF4,3FHMOVLEDBUF5,3FHMLOOPCALLDISPLAYLEDCALLTESTKEYJZMLOOPCALLGETKEYANLA,0FHMOVDPTR,LEDMAPMOVCA,ADPTRXCHA,60HXCHA,61HXCHA,62HXCHA,63HXCHA,64HXCHA,65HLJMPMLOOPCLEANLJMPSTARTCOMPARELJMPCOMPSET1MOVA,PSWANLA,20HJZSTARTMOVR1,65HMOVR0,6FHMOVR2,06HE1MOVA,R1MOVR0,A第21页共24页DECR1DECR0DJNZR2,E1SETBP
18、13LCALLDELAYLJMPSTARTSET2MOVR2,06HMOVR1,60HMOVR0,6AHS1MOVA,R1XRLA,R0JNZS3INCR0INCR1DJNZR2,S1MOVR2,06HMOVR1,30HMOVR0,6AHS2MOVA,R0MOVR1,AINCR0INCR1DJNZR2,S2CLRP13SETBP10MOVR6,250LCALLDELAYCLRP10LJMPSTARTS3SETBP11LCALLDELAYLCALLDELAYLCALLDELAYCLRP11LJMPSTARTCOMPMOVR1,65H第22页共24页MOVR0,35HMOVR2,06HC1MOVA
19、,R1XRLA,R0JNZC2DECR1DECR0DJNZR2,C1SETBP10LCALLDELAYLCALLDELAYLCALLDELAYCLRP10SETBPSW5LJMPSTARTC2SETBP11CLRPSW5LCALLDELAYLCALLDELAYLCALLDELAYCLRP11INCR5MOVA,R5MOVR5,ACJNER5,03H,C3SETBP12LCALLDELAYLCALLDELAYLCALLDELAYCLRP12LCALLSC3LJMPSTARTEND第23页共24页第七章系统调试电子密码锁主要由矩阵键盘,LED数码显示器,提示灯,报警电路和单片机程序组成。调试部分主
20、要是数码显示和程序细节的调试。数码管调试主要是看其能否完整显示6位数字。不可以显示只能重新换过。程序的调试是比较复杂的部分,它又可以分为比较部分和键盘部分。首先在输入程序时,应该先输入键盘部分,然后单独运行键盘程序看键盘输入时数码管能否显示出与键盘输入的数字相对应的数字。然后以键盘程序为主程序,把比较部分的程序作为子程序输入。那是由于键盘程序中我们所输入的数字存在60H65H显示缓存中只能在键盘程序中被调用,如果把键盘程序作为子程序,那我们在比较部分中要调用显示缓存中的数据便不可行。密码放在30H35H,当输入六个数时,程序把数据与密码进行比较,当输入与密码完全匹配时,输入正确,密码锁打开,否
21、则显示红灯,连续三次错误时,蜂鸣器报警。第八章心得体会时间过得真快,转眼间,一周的单片机课程设计就结束了。这是我的第一次课程设计,接到课题后,开始几天我主要看书,跑图书馆,上网查资料。在图书馆找到了类似的资料,我就开始看程序,然后自己试着去改,但是很不幸在KEIL中编译时有一处错误,可是我花了一天多的时间查资料和问同学也没找出哪里出错了。于是我就另外找其他有关的程序,终于在星期天找到了,接着我边看书边看程序,目的是把程序看懂,然后自己再尝试着去改,经过一天左右的时间,程序差不多看懂了,电路图也画出来了,程序编译也没问题,于是我就把程序下到硬件里面,可是就是不显示,主要是按键不起作用。我又重新看
22、程序,反复的改,到晚上的时候还是没搞好,就再看书,请教同学,大概又花了两天时间,在同学的提醒下,我终于发现了问题。主要是按键接的总线没有设定相对应的引脚。当天晚上,我就改了,终于问题解决了,仿真也成功了当时真的很高兴,毕竟我花了这么多的时间,终于有用了。然而在生成PCB图时,我又遇到了问题,就是有些元件没封装(如按键),不知道怎么加进去,我又再网上查资料,终于找到怎么加进去的方法,我自己试着弄了一下,成功了,当时真的很兴奋,这样一来,我的课程设计就差不多好了。我在整个设计过程中懂得了许多东西,当遇到解决不了的问题,跟同伴一起商量、合作,向掌握的好的同学请教,或许能收到事半功倍的效果。第24页共
23、24页不管学什么,一定要打好基础,并将其学好、学精,但空有知识也不一定就能说明什么,还得能为己所用还有更重要的是培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,使自己充分体会到了在设计过程中的成功喜悦。做课程设计不只是对我们知识的考察,也是对学习态度的测验。经过这段时间的课程设计后,我感觉我学到了不少东西,特别是一些课外的知识,这样的课程设计很有意义,我觉得我们要多做一些这样的课程设计。唯一的遗憾就是没有亲自动手把实物图做出来。希望今后能多有这样的课程设计。参考文献1周润景张丽娜丁莉基于PROTEUS的电路及单片机设计与仿真(第二版)北京航天航空大学出版社2009122李朝清单片机原理及接口技术(第三版)北京航天航空大学出版社2006123周兴华手把手教你学单片机北京航天航空大学出版社2006124张文利微机原理及单片机接口技术中国科学技术大学出版社20077