版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机实训密码锁一.实验要求利用AT89C51单片机设计并制作电子密码锁电路。1.用5个按键实现“密码锁”所有操作,用3个发光管作为“密码锁”状态的显示,其中一个专门用于“锁”的开/关状态,例如点亮时表示锁打开,不亮时表示出于锁定状态;2.通过数日正确的密码才能把锁打开;3锁的主人能随意修改锁密码;4具有防试输入密码措施,如连续3次密码输入错误,则所有按键功能失效二.设计方案窗体底端(一)初步设计构思1、功能设计:(1)密码锁首先应具有输入正确密码就可以开锁的功能:这也是最近本的功能,设计中运用软件先设置初始密码,在用硬件输入密码,通过软件与初始密码进行比较,正确后开锁。这里主要是对程序编写的
2、要求。(2)密码锁的修改密码功能:在现实生活中,从用户的角度来考虑,有时需要对初始密码进行自主的修改,所以对于密码锁的此功能是必不可少的。此功能可以运用软件对初始的密码进行修改保存即可实现。(3)防止恶意试输密码(防盗)功能:此功能在现实运用中也是必不可少的,从用户安全的角度来说,对密码输入错误次数进行限制,即在连续输入3次错误密码后将会自锁一段时间,才能重新输入密码。当然也可以从密码的位数上来考虑,增加密码的位数。由于从所给按键才5个上来考虑,用5位密码就有5*5*5*5*5=3125种密码,即可达到要求。且用五个键输入,使操作简单。2、硬件设计:因为给予的硬件器材较少,所以设计以基本功能为
3、方向,对于单片机来说,最小系统基本上是一种固定的模式,需要设计的就是合理分配单片机的资源,分配、确定输入输出端口用途,从AT89S51单片机的性能上来考虑,由于P2口内部也有上拉电阻,就不需要在接,为了简化电路和节省成本,把按键接在此I/O口上。由于设计所需要运用的I/O口比较少,为了焊接方便,从单片机两侧来接输入输出,即输出采用P1口,由于单片机在没有指令时,P1口输出的是高电平,所以LED的负极应接在P1口上。该密码锁以单片机AT89S51作为核心控制部分,4只发光二极管代表各种以工作状态,例如:开锁、输入密码、修改密码等。选用5个按键作为输入。并以单片机1脚朝前的方向为正,从上至下,依次
4、编号为1、2、3、4、5键。所有按键均有对应的数字输入和第二功能,具体操作在操作说明书中有详细介绍。其电路的外围有4个电阻,3个510欧的作为放光二极管的限流电阻,1个10K的与复位端相连接地。有3个电容,1个25V/10uF的与复位端相连接电源,和10K的电阻共同构成复位电路;2个30pF的与12MHz的晶振构成单片机的最小单元电路。电源由一个单孔插座接入。3、软件设计:首先画出程序的流程图,这是一个很重要的过程对于整个设计来说,为了使程序在实现功能的情况下简短一些,大部分地方采用子程序调用的方法。对于密码输入和比较采用寄存器间接寻址的方式来实现。在设计上,密码锁首先处于锁住的状态,密码输入
5、正确后才能进行开锁和修改密码的功能,密码输入错误才会进入自锁状态,依此顺序来对程序的结构进行设计。然后就是程序的编写,包括主程序和子程序,为了能充分利用按键,均采用查询的方式来写程序。由于一些指令的跳转范围有限,所以多采用子程序来缩小距离。二、设计原理(一)、电路图:(二)硬件原理1、单片机性能及工作原理:(1)I/O口作输出口时带负载的能力,即高电平时所能输出的最大电流,或低电平时允许灌入的最大电流,以及高阻态时所能承受的最高电压。原则上输出口所接负载的电流消耗不能超过输出口允许进出的最大电流值。(2)单片机就如一个小型的计算机,是靠指令的运行来实现各种功能的,程序的写入就会需要内存的定义,
6、所以在写程序时应注意一些特殊的单元和一些指令的执行范围。2、其他元件的功能和作用:(1)电阻:此电路中共有4个电阻,电阻的作用很多,例如:取样、限流、降压、偏置、调节时间常数等功能,是一个最常见和适用的电子元器件,也是线性特性最好的线性元件。在本电路中,有3个510欧的电阻,起限流的作用,从单片机的性能要求上来考虑,当单片机接负载时需要限制其电流的输出。有1个10K的电阻,其接在复位电路上,主要是为和其接在一起的电容提供放电回路。(2)电容:此电路中有3个电容,其也是一种常见的电子元器件。2个30pF电容与晶振连在一起构成单片机的最小系统电路,有1个10uF的与电阻一起构成单片机的复位电路。(
7、3)按键:在此按键主要是用于输入适用,由于按键只有5只,所以本设计对其都采用复用的方式,即每一个按键除了有对应数字的输入功能外还具有其他的功能,1键为确认、2键为修改密码、3键为开锁、4键为输入密码、5键为复位。分别接在P2.0P2.4上。(4)发光二极管:作为指示的作用,利用其的各种发光状态来代表密码锁处于什么状态,详细介绍见功能表。3个发光二极管分别接在P1.0P1.2上。(三)软件原理1.软件设计思路(1)结合功能设计和硬件设计,确定那些功能应由软件完成。(2)做出总体规划设计,明确软件要实现的功能,分那些步骤、按什么顺序来实现设计的功能,画出程序的流程图。(3)根据完整的流程图,编写程
8、序。(4)对程序进行单元式的调试,即对每一个功能的调试。(5)利用仿真软件程序进行仿真调试,直到所有功能实现为止。(6)用编程器把正确的程序编入单片机。2.软件的的总体功能(1)赋初值:对密码进行初始设定、计数次数的设定。(2)比较:将由按键输入的密码与初始密码(设定的密码)进行足位比较。(3)延时:设定自锁时间、对按键进行消抖、发光二极管的闪烁频率。(4)修改:把修改后的新密码进行自动保存,并赋给相应的单元,作为重新设定的密码。(5)总的来说:可以实现密码锁的开锁、防止恶意试输密码、修改密码的功能。3、流程图三.程序清单ORG 0000HMOV 20H,#1MOV 21H,#2MOV 22H
9、,#3MOV 23H,#4MOV 24H,#5MOV P0,#BMOV P1,#BMAIN:MOV R6,#3L0:MOV R2,#0MOV R1,#30HJBP2.1,$;按键4输入密码SETBP1.0;LED闪动1下ACALLDEY5sCLR P1.0ACALLDEY5sSETBP1.0L1:JBP2.4,L2MOV R1,#1INC R1INC R2CLR P1.1ACALLDEY5sSETB P1.1AJMP KEYL2: JBP2.3,L3MOV R1,#2INC R1INC R2CLRP1.1ACALLDEY5sSETBP1.1AJMPKEYL3: JBP2.2,L4MOV R1,
10、#3INC R1INC R2CLR P1.1ACALLDEY5sSETBP1.1AJMPKEYL4: JBP2.1,L5MOV R1,#4INC R1INC R2CLR P1.1ACALLDEY5sSETBP1.1AJMPKEYL5:JBP2.0,KEYMOV R1,#5INC R1INC R2CLR P1.1LCALL DEY5sSETB P1.1AJMP KEYKEY: CJNE R2,#5,L1;判断是否输入5个密码LCALLDEY5sCLR P1.0;第二功能输入SETBP1.1JBP2.4,$;按1确定密码SETBP2.4MOV R0,#30H;密码比较MOV A,R0CJNEA,2
11、0H,KEY1INC R0MOV A,R0CJNEA,21H,KEY1INC R0MOV A,R0CJNE A,22H,KEY1INC R0MOV A,R0CJNE A,23H,KEY1INC R0MOV A,R0CJNE A,24H,KEY1CLR P1.1AJ0: JB P2.3,AJ1 ;按键2修改密码功能SETB P1.0;数字输入功能ACALL LED2A0:MOV R2,#00MOV R1,#20HA1:JBP2.4,A2MOV R1,#1INC R1INC R2CLR P1.1ACALL DEY5sSETB P1.1AJMP AEYA2:JB P2.3,A3MOV R1,#2IN
12、C R1INC R2CLR P1.1ACALL DEY5sSETB P1.1AJMP AEYA3:JB P2.2,A4MOV R1,#3INC R1INC R2CLR P1.1ACALL DEY5sSETB P1.1AJMP AEYA4:JB P2.1,A5MOV R1,#4INC R1INC R2CLR P1.1ACALL DEY5sSETB P1.1AJMP AEYA5:JB P2.0,A1MOV R1,#5INC R1INC R2CLR P1.1ACALL DEY5sSETB P1.1AJMP AEYAEY:CJNE R2,#5,A1 ;判断修改是否输入完整CLR P1.0SETB P1
13、.1ACALL FWAJMP MAINKEY1:CLR P1.2ACALL DEY5sSETB P1.2DJNZ R6,L ;判断输入次数CLR P1.1CLR P1.2ACALL DEY100SETB P1.1MOV R6,#3L:AJMP L0AJ1:JB P2.2,AJ0 ;按键开锁ACALL OPENAJMP MAINLED2:SETB P1.1;闪2下子程序ACALL DEY5sCLR P1.1ACALL DEY5sSETB P1.1ACALL DEY5sCLR P1.1RETDEY5s:MOV R3,#5;延时0.5秒D1:MOV R4,#100D2:MOV R5,#248D3:D
14、JNZ R5,D3NOPDJNZ R4,D2DJNZ R3,D1RETOPEN:CLR P1.2;开锁SETB P1.1JB P2.0,$ACALL FWSETB P2.0SETB P1.2RETFW:CLR P1.1SETB P1.1RETDEY5:MOV R3,#50;延时5秒X1:MOV R4,#100X2:MOV R5,#248X3:DJNZ R5,X3NOPDJNZ R4,X2DJNZ R3,X1SETB P1.2RETDEY100: MOV R7,#5;延时30秒X4:MOV R3,#100X5:MOV R4,#100X6:MOV R5,#248X7:DJNZ R5,X7NOPDJ
15、NZ R4,X6DJNZ R3,X5DJNZ R7,X4SETB P1.2RETEND四.程序的执行和工作过程1、设定密码为1、2、3、4、5,保存在20H24H单元,点亮P1.0(LED1),给计数寄存器R2、R6赋初值;2、查询按键4按下后,查询密码输入,并用寄存器间接寻址的方式把密码依次存入30H34H单元,查询P2.4(键1)按下后,把30H34H单元和20H24H单元所存的数据进行足位顺序比较;3、如果密码输入错误,跳转到KEY1,LED3闪一下,并对错误输入密码次数进行计数,如果小于3次,可以重新输入密码,大等于3次,将自锁30s的时间;4、如果密码输入正确,将循环查询P2.3(键
16、2)和P2.2(键3):(1)如果P2.3为低电平,将对初始密码进行修改,并保存在20H24H单元,并将复位到密码输入状态;(2)如果P2.2为低电平,将把P1.2(开锁指示)置为低电平,查询P2.0(键5)为低电平后,将复位到密码输入状态。四.制作调试(一)调试过程1、软件:(1)对每一个功能单元进行逻辑调试;(2)对整体程序进行逻辑调试;(3)载入仿真电路上观察功能实现的情况;(4)对出现的问题加以解决。2、硬件:(1)在仿真软件上进行软件和电路搭配的调试;(2)把软件编入单片机后,在实际电路中进行调试,首先,检查每一个焊点的连接情况,然后,检查单片机是否能正常工作,最后,检查功能实现的具
17、体情况;(3)对每一步调试出的问题,找出解决办法。(二)调试结果通过对软件和硬件的足步检查调试,找出问题,然后解决问题,最终在软件和硬件上都得到了所设计功能的实现,按键灵敏度良好,功能准确,延时准确,过程的表示比较明确。与预先设想比较吻合。(三)出现的问题和解决方法1、按键消抖:在实现按键消抖的过程中,由于延时过长,导致了按键灵敏度不够,出现按下去没有作用的问题,于是便把消抖的时间缩短,但是又出现了按一次会相当于两次的问题。最终是通过对延时消抖时间的折中考虑,这一问题才得以解决。2、硬件调试过程中发现上电后单片机有小段时间不稳定,灯忽闪忽灭,经过仔细检查焊接点和接入复位开关电流后得以解决。3、
18、操作不够简单明了,原本5键复位有3秒延时,经老师指出不妥的地方修正了程序中5键的延时和多余的功能,使之更贴近用户。4、经老师建议,可以加入密码修改2次确认功能,但时间较少,只做了下构思,即在修改密码程序中先将第一次输入的密码保存至40-44H单元中然后再和第二次输入的密码保存至46-50H,然后再调用比较保存.五.使用说明书及功能表功能表:按键号功能1(1)密码1的输入;(2)确认2(1)密码2的输入;(2)修改密码3(1)密码3的输入;(2)开锁4(1)密码4的输入;(2)输入密码5(1)密码5的输入;(2)确认关锁LED灯状态表示按键号状态功能LED1(1)常亮(2)熄灭按键为第二功能使用
19、按键为密码1输入使用LED2(1)常亮(2)闪一下密码输入正确提示输入密码一位LED3(1)常亮(2)熄灭密码锁处于开锁状态密码锁处于关锁状态全部灯(1)常亮密码锁处于复位中或者多次输入错误的保护状态使用说明书:(1)开锁:上电按4键输入密码-输入正确密码(输入一位LED2闪动一下)-输完密码(LED1点亮)-按确认1键密码正确(LED2常亮)-按开锁3键开锁(LED3点亮)-按5键关锁(LED1、LED2、LED3点亮一段时间熄灭)(2)修改密码:上电按1键输入密码(LED1熄灭)-输入正确密码(输入一位LED2闪动一下)-输完密码(LED1点亮)按确认键密码正确(LED2点亮)按修改密码键(LED1熄灭)输入新密码(输入一位LED2闪动一下)-输完密码(LED1点亮)(3)自锁:上电按输入密码(LED1熄灭)-输入错误密码(输入一位LED2闪动一下)-输完密码(LED1点亮)按确认键-密码错误(LED3闪动一下)-重新输入密码(出现3次错误)-自锁30s(所有灯点亮30s)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论