8位密码锁单片机课程设计_第1页
8位密码锁单片机课程设计_第2页
8位密码锁单片机课程设计_第3页
8位密码锁单片机课程设计_第4页
8位密码锁单片机课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8位密码锁单片机课程设计17-1引言电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其在生活的各个方面均有应用,前景十分广阔。其特点如下:(1)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零;(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降;(3)误码输入保护,当输入密码多次错误时,报警系统自动启动;(4)无活动零件,不会磨损,寿命长;(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。2设计方案及原理2.1本设计所要实现的目标设计一种单片机控制的密码锁,具有按键有效指示、解码有效指示、控制开锁电平、控制报警、密码修改等功能。8位十进制密码共一亿组不重复,保密性强。该密码锁要实现一下功能:(1)锁的初始状态为“锁合”指示灯亮。输入初始密码“0、1、2、3、4、5、6、7”,每输入一位,“按键有效”指示灯亮约半秒钟,输完8位按确认键,锁打开,“锁开”指示灯亮;(2)按“上锁”键,锁又重新上锁,“锁合”指示灯亮;(3)“锁开”状态下,可输入新密码,可重复修改密码;(4)如果输入密码错误,“错误指示”灯亮约半秒钟。可重新输入密码;(5)输入密码错误超过3次,蜂鸣器启动发出报警,同时“错误”指示灯常亮。2.2设计思路对于电子密码锁的设计,需要解决几个问题:键盘输入、数码管显示、单片机电路、密码比较、修改密码等。其中最主要的就是解决掉电保存以及修改密码的问题。先写一个循环写入8个初始密码到芯片内部EEPROM程序,先下载程序写入初始密码,此时EEPROM已存有初始密码,再把密码锁程序下载到单片机,运行电子密码锁。8位密码锁单片机课程设计全文共17页,当前为第1页。本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用的是单片机P1.2和P1.1来控制锁合和锁开LED灯的状态,P0口用于电子显示屏来显示提示语句和密码输入按键。8位密码锁单片机课程设计全文共17页,当前为第1页。本系统共有两部分构成,即硬件部分与软件部分。3硬件设计硬件部分由键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成。3.1键盘扫描电路键盘接成4*4的矩阵键盘,行线为LD0-LD3分别接P2口的P0.0-P0.3,列线为HD0-HD3分别接P2口的P0.7-P0.4。当哪一行的有键按下,则相应行的“按键有效”指示灯亮一下,其余行所对应的灯不亮。P2初始时P2口第四位为低电平,高四位为高电平,当哪一行有键按下,则所对应的行和列对应的口变为低电平,将改为扫描到单片机中。键盘扫描电路如图3.1所示。图3.1键盘扫描电路3.2晶振电路8位密码锁单片机课程设计全文共17页,当前为第2页。80C31引脚XTAL1和XTAL2与晶体振荡器及电容C2/C1按图3.2所示方式连接。晶振、电容C1/C2振荡器,振荡信号频率与晶振频率及电容C1/C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1/C2取值范围在5~30pF之间。根据实际情况,本设计中采用1MHZ做为系统的外部晶振。电容取值为30pF。晶振电路如图3.2所示。8位密码锁单片机课程设计全文共17页,当前为第2页。图3.2晶振电路3.3复位电路上电复位电路如图3.3所示。图3.3复位电路3.4显示部分显示电路是利用LM016L系列的LCD显示屏,可以双行显示。其D0-D7与P0口相接,并且给P0口外接上拉电阻。LCD显示电路如图3.4所示。图3.4LCD显示密码电路3.5报警电路8位密码锁单片机课程设计全文共17页,当前为第3页。报警电路是利用SPEAKER和NPN型三极管构成,同时给蜂鸣器并联一个发光二级管,当P1.0口输出为高电平时,NPN三极管导通,蜂鸣器发声,“错误”指示灯亮。报警电路如图3.5所示。8位密码锁单片机课程设计全文共17页,当前为第3页。图3.5报警电路3.6电路总体结构及布局该设计的电路总体结构及布局如图3.6所示。图3.6电路总体结构及布局4软件设计8位密码锁单片机课程设计全文共17页,当前为第4页。软件部分由主程序、初始化程序、LCD显示程序、键盘扫描程序、功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。总流程图如图4.1所示。8位密码锁单片机课程设计全文共17页,当前为第4页。图4.1程序流程图8位密码锁单片机课程设计全文共17页,当前为第5页。具体程序见附录。8位密码锁单片机课程设计全文共17页,当前为第5页。5Proteus仿真结果当开启开始仿真时,LCD显示屏会显示“选择A为设置密码,选择B为开锁”,同时“锁合”指示灯(红灯D1)闪烁。开始仿真图如图5.1所示。图5.1开始仿真图当按下A或B时会提示输入密码,按下每一个键都会输出“*”提示。其仿真结果如图5.2所示。图5.2提示输入密码界面8位密码锁单片机课程设计全文共17页,当前为第6页。当输入密码正确时会显示“PASSWORDOK!!!”字样,同时“错误”指示灯(绿灯D3亮)。其仿真图如图5.3所示。8位密码锁单片机课程设计全文共17页,当前为第6页。图5.3输入密码正确显示界面当输入密码错误时,LCD显示屏会显示“PASSWORDERROR!”。其仿真图如图5.4所示。8位密码锁单片机课程设计全文共17页,当前为第7页。图5.4当输入密码错误时显示界面8位密码锁单片机课程设计全文共17页,当前为第7页。6总结本设计是基于单片机的多功能密码锁设计。在设计过程中,首先是确立要设计的目标及电子密码锁要实现的功能,该如何通过软硬件来实现。接下来是根据目标来搭建电路图,设计各功能模块要实现的功能,比如报警,LED灯的显示控制,4*4矩阵键盘的搭建。接着就要通过编程来实现各模块功能,比如输入密码,输出显示,键盘扫描程序,存储程序等等。最后就是调试改错,下载仿真。本设计最后实现了上面所提到的基本功能外,另外增加了LCD显示屏,开始时有提示选择,问执行什么功能,到底是设置密码呢还是开锁。当进入任何一个界面都会出现提示信息,比如‘PASSWORDOK!!!’,‘INPUTAGAIN!’,‘SETPASSWORD’等等。当每次输入时都会显示“*”提示。当输入密码错误超过三次时就会直接锁死,即使按下功能复位键也不会开锁,这样直接降低了盗窃的几率。另外,在修改密码时会提示先输入原密码,再输两次新密码,防止用户该密码是按错键,极大地提高了密码锁的可靠性。本设计输入的密码是8位的,共有一亿组不重复密码,增加了密码的安全性。本设计还存在一些不足之处,开锁延时一段时间后没有自动上锁功能,应该在用户开锁之后若不操作机器时,延时30秒就自动上锁,减小因疏忽而给用户带来的不便。参考文献[1]李华,王思明,张金敏.单片机原理及应用[M].兰州:兰州大学出版社,2001:11-120.[2]顾滨.单片微计算机原理开发与应用[M].北京:高等教育出版社,2000:67-81.[3]李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994:45-56.8位密码锁单片机课程设计全文共17页,当前为第8页。

附录源程序8位密码锁单片机课程设计全文共17页,当前为第8页。 ENBITP3.0 RWBITP3.1 RSBITP3.2 DISPLAYEQUP0 SOUNDERBITP1.1 LEDBITP1.2 OPENBITP1.1 RETURNBITBIT20H.1 ORG0000HLJMPSTARTORG000BHLJMPINTERMIT_T0ORG001BHLJMPINTERMIT_T1ORG0030HSTART:MOVSP,#60HLCALLSYS_INITIAL ;主程序MAIN0:LCALLSTRAT_DISPLAYMAIN:MOV52H,#0 ;判断输入错误次数储存地址 SETBLED SETBTR0 LCALLKEY CJNEA,#'A',NEXT1 LJMPCHANGE_KEYNEXT1:CJNEA,#'B',NEXT2LJMP INPUT_KEYNEXT2:AJMPMAIN;系统初始化SYS_INITIAl:CLRLEDCLROPEN CLRSOUNDER MOV32H,#'0' MOV33H,#'1'MOV34H,#'2'MOV35H,#'3'MOV36H,#'4'MOV37H,#'5'MOV38H,#'6'MOVr7,#16MOVr0,#40H8位密码锁单片机课程设计全文共17页,当前为第9页。LOOP:MOV@R0,#10H8位密码锁单片机课程设计全文共17页,当前为第9页。INCR0DJNZR7,LOOP;密码键值存放区清零完毕 LCALLDELAY0_1S MOVP0,#03H CALLWRITE_INSTRUCTION;液晶软复位 MOVP0,#01H CALLWRITE_INSTRUCTION MOVP0,#3FH CALLWRITE_INSTRUCTION MOVP0,#0FH CALLWRITE_INSTRUCTION MOVP0,#06H CALLWRITE_INSTRUCTION;液晶初始化完毕 MOVR5,#10 MOVTMOD,#11H MOVTH0,#3CH MOVTL0,#0B0H SETBEA SETBET0 RET INTERMIT_T0:PUSHACC PUSHPSW MOVTH0,#3CH MOVTL0,#0B0H DJNZR5,RETURN CPLLED MOVR5,#10RETURN:POPPSW POPACC RETIINTERMIT_T1: PUSHACC PUSHPSW MOVTH1,#9EH MOVTL1,#58H DJNZR5,RETURN_T1 CPLLED CPLSOUNDER MOVR5,#10RETURN_T1:POPPSW POPACC RETI8位密码锁单片机课程设计全文共17页,当前为第10页。 8位密码锁单片机课程设计全文共17页,当前为第10页。KEY:CALLKS;键盘扫描JNZK1JMPKEYK1:CALLDELAYCALLKSJNZK2 JMPKEYK2:CLRTR0CLRLED MOVR2,#0FEH MOVR6,#00HK3:MOVA,R2MOVP2,A MOVA,P2 JBACC.4,L1 MOVA,#0 LJMPLKL1:JBACC.5,L2MOVA,#4 LJMPLKL2:JBACC.6,L3MOVA,#8 LJMPLKL3:JBACC.7,NEXT_KEYMOVA,#12LK:ADDA,R6MOVR6,AK4:CALLKSJNZK4 MOVA,R6 MOVDPTR,#TABLE0 MOVCA,@A+DPTR MOV50H,A;查表取值存入50h,保护键值 RETNEXT_KEY:INCR6 MOVA,R2 JNBACC.7,KEY RLA MOVR2,A JMPK3KS:MOVP2,#0F0HMOVA,P2 XRLA,#0F0H RET ;修改密码程序8位密码锁单片机课程设计全文共17页,当前为第11页。CHANGE_KEY:8位密码锁单片机课程设计全文共17页,当前为第11页。CALLCLEAR_DISPLAY MOVDPTR,#TABLE4 CALLINPUT_HINT MOVR0,#40H CALLCHANGE JBCRETURNBIT,CHANGE_KEY;先输入原密码完毕 MOVR4,#8 MOVR0,#40H MOVR1,#32HINPUT_COMPERE:MOVA,@R0 XRLA,@R1 JNZINPUT_ERROR INCR0 INCR1 NOP NOP DJNZR4,INPUT_COMPERE;验证输入密码完毕 JMPCHANGE_KEY0INPUT_ERROR:SETBSOUNDER SETBLED CALLCLEAR_DISPLAY MOVDPTR,#TABLE5 CALLINPUT_HINT CALLDELAY1_15S CLRSOUNDER CLRLED INC52H MOVA,52H CJNEA,#3,CHANGE_KEY SJMP$ ;输入密码错误次数超过3次,锁死CHANGE_KEY0:CALLCLEAR_DISPLAY MOVDPTR,#TABLE2 CALLINPUT_HINT MOVR0,#40H CALLCHANGE JBCRETURNBIT,CHANGE_KEY;第一次输入新密码完毕 CALLCLEAR_DISPLAY MOVDPTR,#TABLE3 CALLINPUT_HINT CALLDELAY1_15S;显示再次输入新密码完毕8位密码锁单片机课程设计全文共17页,当前为第12页。 MOVDPTR,#TABLE48位密码锁单片机课程设计全文共17页,当前为第12页。 CALLINPUT_HINT MOVR0,#48H CALLCHANGE JBCRETURNBIT,CHANGE_KEY;第二次输入新密码完毕 MOVR4,#7 MOVR0,#40H MOVR1,#48HSET_COMPERE:MOVA,@R0 XRLA,@R1 JNZSET_ERROR INCR0 INCR1 DJNZR4,SET_COMPERE MOV32H,40HMOV33H,41HMOV34H,42HMOV35H,43HMOV36H,44HMOV37H,45HMOV38H,46H;存入新密码完毕 JMPMAIN0;设置新密码成功,返回主程序SET_ERROR:SETBSOUNDER SETBLED CALLCLEAR_DISPLAY MOVDPTR,#TABLE5 CALLINPUT_HINT CALLDELAY1_15S CLRSOUNDER CLRLED LJMPCHANGE_KEY0;设置新密码成功,返回主程序INPUT_KEY:;输入密码开锁程序CALLCLEAR_DISPLAY MOVDPTR,#TABLE4 CALLINPUT_HINT MOVR0,#40H CALLCHANGE JBCRETURNBIT,INPUT_KEY;设置新密码成功,返回主程序 MOVR4,#8MOVR0,#40HMOVR1,#32H8位密码锁单片机课程设计全文共17页,当前为第13页。INPUT_COMPERE0:8位密码锁单片机课程设计全文共17页,当前为第13页。MOVA,@R0 XRLA,@R1 JNZINPUT_ERROR22 INCR0 INCR1 NOP NOP DJNZR4,INPUT_COMPERE0;验证输入密码完毕 JMPDISPLAY_RIGHTINPUT_ERROR22:SETBSOUNDER SETBLED CALLCLEAR_DISPLAY MOVDPTR,#TABLE5 CALLINPUT_HINT CALLDELAY1_15S CLRSOUNDER CLRLED INC52H MOVA,52H CJNEA,#3,INPUT_KEY SJMP$;输入密码错误超过3次,锁死DISPLAY_RIGHT:CALLCLEAR_DISPLAY MOVDPTR,#TABLE6 CALLINPUT_HINT;显示输入密码正确提示完毕 SETBOPEN;开锁NEXT_KEY1:CALLKEY NOP NOP CJNEA,#'F',NEXT_KEY1 CLROPEN;按下关锁键关锁 JMPMAIN0;返回主程序 STRAT_DISPLAY:MOVP0,#80H CALLWRITE_INSTRUCTION MOVDPTR,#TABLE1 CALLINPUT_HINT8位密码锁单片机课程设计全文共17页,当前为第14页。8位密码锁单片机课程设计全文共17页,当前为第14页。 MOVP0,#0C0H CALLWRITE_INSTRUCTION MOVDPTR,#TABLE11 CALLINPUT_HINT RETCLEAR_DISPLAY:;清屏MOVDISPLAY,#01H CALL WRITE_INSTRUCTION MOVP0,#06H CALLWRITE_INSTRUCTION RETINPUT_HINT:MOVR4,#16 MOVA,#00HALL_OR_NOT:MOVCA,@A+DPTR MOVDISPLAY,A CALLWRITEDATA INCDPTR CLRA NOP NOP DJNZR4,ALL_OR_NOT RETCHANGE: MOVR4,#8MOVR1,#0C0HMOVA,R1MOVP0,A CALLWRITE_INSTRUCTIONLOOP1:CALLKEYNOPNOPCJNEA,#'C',NEXT_TOSETBRETURNBITJMPENDTNEXT_TO:MOVA,50H MOV@R0,A MOVDISPLAY,#'*' CALLWRITEDATA INCR1 INCR0 DJNZR4,LOOP18位密码锁单片机课程设计全文共17页,当前为第15页。ENDT:RET8位密码锁单片机课程设计全文共17页,当前为第15页。WRITEDATA:;写数据SETBRS CLRRW CLREN SETBEN NOP NOP CLREN SETBEN NOP NOP CLREN CALLDELAY RETWRITE_INSTRUCTION:;写指令CLRR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论