单片机综合设计实验 单片机密码锁
- 格式:doc
- 大小:113.50 KB
- 文档页数:6
单片机综合设计实验单片机密码锁单片机综合设计实验一、实验目的掌握嵌入式系统的设计原理、程序编写与调试的开发过程。
二、实验内容电子密码锁设计(A类):根据设定好的密码,采用8个按键实现密码的输入功能,当密码输入正确之后,锁就打开,显示某个字符;如果输入的三次的密码不正确,就锁定按键3秒钟,同时发出报警声显示另一个字符,直到没有按键按下3秒后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。
在单片机实验板上实现二、实验要求1、根据给定题目设计Proteus仿真原理图;2、根据给定题目设计有关的51汇编语言(或C语言)源程序,并编译成可执行文件;3、在Proteus仿真界面下运行程序实现给定的功能。
三.程序设计内容(1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“21213232”共8位密码。
(2).密码的输入问题:由于采用按键来完成密码的输入,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕,才能完成密码的输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。
Proteus 仿真原理图:开始 初始化 有键按下?调用显示启动定时 识别按键按键数=8? 超时?比较密码 开门 开始自动清除<3次?报警NNYYYYNN主程流程图程序TIM EQU -2000DISP DATA 30H ; 30-34HDIS DATA 35HKEY DATA 36HWRONG DATA 50HCNT DATA 51HCLK BIT P0.0DAT BIT P0.1STR BIT P0.2BEEP BIT P0.7S4 BIT P2.7S3 BIT P2.6S2 BIT P2.5S1 BIT P2.4K1 BIT P2.3K2 BIT P2.2K3 BIT P2.1K4 BIT P2.0ORG 0000HLJMP MAINORG 000BHLJMP TIM0ORG 001BHLJMP DT1MAIN: MOV SP,#60H;MOV IE,#82HSETB EASETB ET0SETB ET1MOV TMOD,#11HMOV TH0,#HIGH(TIM)MOV TL0,#LOW(TIM)MOV TH1,#70H ;定时20msMOV TL1,#00H ;SETB TR0MOV KEY,#0MOV R5,#08HMOV R0,#40HMOV WRONG ,#00HMOV DISP+0,#0FFHMOV DISP+1,#0FFHMOV DISP+2,#0FFHMOV DISP+3,#0FFH ;............................................;大循环;............................................START: MOV R5,#08HMOV R0,#40HLCALL INPUTLCALL COMPARELJMP START ;............................................LOOP: INC WRONGMOV DISP+1,#0EH ;第二个数码管显示"E"表示密码输入错误,锁没有打开MOV KEY,#0SJMP START ;............................................;输入8位密码;............................................INPUT: MOV A,KEYJZ INPUTMOV @R0,AMOV A,@R0;MOV DISP+3,AMOV DISP+3,ALCALL DELAY_S ;消抖INC R0MOV KEY,#0DJNZ R5,INPUTMOV KEY,#0RET ;.............................................;判断输入的密码是否正确;.............................................COMPARE: MOV R1,#00HMOV R5,#08HMOV R0,#40HMOV A,WRONGCJNE A,#2,NEXT ;判断输入错误次数是否等于3,不等于跳转NEXTMOV WRONG,#00H ;等于3调用按键锁定子程序MOV KEY,#0LCALL LOCK ;调用键盘锁定程序SJMP NEXT_1 ;子程序返回NEXT: MOV DPTR,#TAB ;输入的密码与预先设定的密码相比较MOV A,R1MOVC A,@A+DPTR;MOV A,R1MOV B,@R0CJNE A,B, LOOPINC R1INC R0DJNZ R5, NEXT ;判断8位有没有比较完; MOV DISP+3,#0FFH; MOV DISP+2,#0FFHMOV DISP+1,#0AH ;密码正确显示A; MOV DISP+0,#0FFHNEXT_1: RET ;...........................................;锁定按键3秒钟;...........................................LOCK: MOV KEY,#00HMOV DISP+1,#0FH ;第二个数码管显示"F"表示三次密码输入错误,锁定按键锁定三秒过后第二个数码管显示关SETB TR1MOV CNT,#00HLOCK_N:CLR BEEPMOV A,KEYJNZ LOCK ;A=0说明没有按键按下,不需要重新锁定,程序顺序执行,A!=0说明有键按下,重新锁定MOV A,CNTMOV KEY,#0CJNE A,#150,LOCK_N ;判断锁定时间是否到3秒CLR TR1 ;关中断SETB BEEP ; 关蜂鸣器MOV DISP+1,#0ffhMOV CNT,#00H ;计数器清零RET ;中断返回;............................................;中断0的子程序;............................................TIM0: PUSH ACCPUSH PSWMOV TH0,#HIGH(TIM)MOV TL0,#LOW(TIM)MOV A,DISLCALL GETDISMOV A,DISADD A,#DISPMOV R1,AMOV A,@R1LCALL GETSEGKEY0P: JB K1,KEY1PMOV A,DISADD A,#1MOV KEY,AKEY1P: JB K2,KEY2PMOV A,DISADD A,#5MOV KEY,AKEY2P: JB K3,KEY3PMOV A,DISADD A,#9MOV KEY,AKEY3P: JB K4,KEYPMOV A,DISADD A,#13MOV KEY,AKEYP: INC DISMOV A,DISCJNE A,#4,TIMEMOV DIS,#0TIME: POP PSWPOP ACCRETI ;.............................................;中断服务程序2DT1: MOV TH1,#70HMOV TL1,#00HINC CNTRETI ;............................................;延时子程序1 ;............................................DLYTIM: MOV R6,#200 DLYR7: MOV R7,#200DJNZ R7,$DJNZ R6,DLYR7RET ;.............................................;延时子程序2 ;............................................. DELAY_S:MOV R4,#10MOV R6,#200DLYR8: MOV R7,#200DJNZ R7,$DLAY1: DJNZ R6,DLYR8DJNZ R4, DLAY1RET ;........................................... ;........................................... GETSEG: MOV R1,ALCALL DISPLAYRET ;.......................................... ;.......................................... GETDIS: MOV DPTR,#NUMTAB MOVC A,@A+DPTRCPL AMOV P2,ARET ;.........................................;......................................... DISPLAY:MOV A,R1MOV DPTR,#TABLEMOVC A,@A+DPTRCPL AMOV R2,#8CLR CLK ;......................................... ;......................................... DLP: RRC AMOV DAT,CCLR CLKSETB CLKDJNZ R2,DLPSETB STRCLR STRRET ;........................................... ;...........................................;数码管译码;...........................................TABLE: DB 0F5H,05H,0E3H,67H,17H,76H,0F6H,25HDB0F7H,77H,0B7H,0D6H,0F0H,0C7H,0F2H,0B2H ;...........................................;数码管的位选通;............................................NUMTAB: DB 10H,20H,40H,80H ;............................................;初始密码为2,1,2,1,3,2,3,2 ;............................................TAB: DB 02H,01H,02H,01H,03H,02H,03H,02H ;......................................END。