《2022年电子密码锁程序 .pdf》由会员分享,可在线阅读,更多相关《2022年电子密码锁程序 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、BUFF EQU 6EH TIMERS1 EQU 6DH;输入回车的次数TIMERS2 EQU 6CH;报警的次数TIMERS EQU 6BH;输入数字的位数;LED6 EQU 6AH;密码缓冲区PS1 EQU 69H PS2 EQU 68H PS3 EQU 67H PS4 EQU 66H PS5 EQU 65H PS6 EQU 64H;AT24C02 读取缓冲区AT1 EQU 63H AT2 EQU 62H AT3 EQU 61H AT4 EQU 60H AT5 EQU 5FH AT6 EQU 5EH;按键标志位F_1 BIT 20H F_2 BIT 21H F_3 BIT 22H F_4
2、BIT 23H BUF_FULL BIT 24H;密码已经够六位的标志位,为1 表示满CH_STATE BIT 25H;系统更改的状态标志位,为1 表示 busy FLAG1 BIT 26H;功能键标志位,为1 表示功能按键。F_F1 BIT 27H F_F2 BIT 28H PSW_F BIT 29H;密码是否正确的标志位;口资源定义SPK BIT P2.1 JDQ BIT P2.3 SDA BIT P2.4;定义串口数据端SCL BIT P2.5;发光二极管灯L1 BIT P1.0 L2 BIT P1.1 L3 BIT P1.2;ORG 0000H AJMP MAIN ORG 000BH;
3、AJMP TIMER0 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -ORG 001BH;AJMP TIMER1 ORG 0030H MAIN:MOV SP,#70H MOV TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H MOV TH1,#3CH MOV TL1,#0B0H CLR F_1;清除标志位CLR F_2 CLR F_3 CLR F_4 CLR BUF_FULL CLR CH_STATE CLR FLAG1 CLR F_F1 CLR F_F2 CLR PSW_F MOV BUFF,#00H;调用LCALL INITPS;初始化环
4、境LCALL INITAT LCALL XSA;调用默认显示MOV TIMERS1,#00H NOP MOV PS1,#11H;初始化密码 830620 MOV PS2,#0AH MOV PS3,#02H MOV PS4,#13H MOV PS5,#0BH MOV PS6,#02H START:NOP;程序开始LCALL CH_KEY;检查键盘AJMP START;返回CH_KEY:LCALL KS;检查有没有按键按下JNZ LK1 AJMP CH_KEY LK1:LCALL T12MS ACALL KS JNZ LK2 RET 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 1
5、1 页 -LK2:NOP LCALL SBIE;按键识别子程序MOV BUFF,A;送缓冲区以识别是数字键还是功能键?LCALL CH_KF;判断按键功能。JB FLAG1,KEY_FUN;标志为 1,则为功能键;*数字按键输入并且存放到缓冲区内等待比较*KEY_DIG:NOP;设一标志,辨别输入是否满;SETB TR0 INC TIMERS;输入数字的位数MOV A,TIMERS CLR C SUBB A,#01H JNZ PS_2 MOV PS1,BUFF;依照顺序存放密码AJMP NEXT PS_2:MOV A,TIMERS SUBB A,#02H CLR C JNZ PS_3 MOV
6、PS2,BUFF AJMP NEXT PS_3:MOV A,TIMERS CLR C SUBB A,#03H JNZ PS_4 MOV PS3,BUFF AJMP NEXT PS_4:MOV A,TIMERS CLR C SUBB A,#04 JNZ PS_5 MOV PS4,BUFF AJMP NEXT PS_5:MOV A,TIMERS CLR C SUBB A,#05 JNZ PS_6 MOV PS5,BUFF AJMP NEXT PS_6:MOV A,TIMERS CLR C SUBB A,#06H JNZ CH_KEY 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 1
7、1 页 -MOV PS6,BUFF NEXT:LCALL XSC MOV R7,TIMERS;比较输入的次数。CJNE R7,#06H,FULL FULL:JC NEXT9 SETB BUF_FULL MOV TIMERS,#06H CLR L3 NOP CLR P2.1 LCALL T100MSD SETB P2.1 NOP AJMP CH_KEY NEXT9:CLR P2.1;密码输入一位,鸣叫一声。CLR L3 LCALL T100MSD;延时 100ms SETB L3 SETB P2.1 AJMP CH_KEY;*功能按键比较并且跳转*KEY_FUN:CLR FLAG1 CLR C
8、MOV A,BUFF SUBB A,#03H;按键 CL 跳转JNZ EN_C AJMP CL EN_C:CLR C MOV A,BUFF;按键 EN 跳转SUBB A,#00H JNZ F1_C AJMP EN F1_C:CLR C MOV A,BUFF SUBB A,#1BH JNZ F2_C AJMP FU1 F2_C:CLR C MOV A,BUFF SUBB A,#1AH JNZ F3_C AJMP FU2 F3_C:CLR C 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -MOV A,BUFF SUBB A,#19H JNZ F4_C AJMP FU3
9、F4_C:CLR C MOV A,BUFF SUBB A,#18H JZ FU4 EXIT8:NOP LJMP CH_KEY;*开门子程序*CL:NOP SETB L3 MOV BUFF,#00H;消密码缓冲MOV TIMERS,#00H LCALL INITPS;消除 AT 缓冲,加调电存储后一定要加上LCALL XSC LCALL BP LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH_KEY FU4:NOP LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100M
10、SD LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH_KEY FU3:NOP LCALL BP LCALL T100MSD LCALL BP LCALL KILLXS;关闭显示CLR FLAG1 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -AJMP CH_KEY FU1:NOP LCALL XSC JB F_F1,NEXT_F1 CLR L1 LCALL BP SETB F_F1 AJMP CH_KEY NEXT_F1:SETB L1 LCALL BP CLR F_F1;LCALL CH_STATE;查看现在的状
11、态以防误按;SETB TR1;报警限制暂时不开;INC F_F1 CLR FLAG1 AJMP CH_KEY FU2:NOP JB F_F2,NEXT_F2 CLR L2 LCALL BP SETB F_F2 AJMP CH_KEY NEXT_F2:SETB L2 LCALL BP CLR F_F2 CLR FLAG1 AJMP CH_KEY;*按键的功能描述*EN:NOP JB BUF_FULL,GOON AJMP EXIT GOON:CLR BUF_FULL JB F_F2,AT_WRON;F2 按键标志,若为 1,则调用修改密码子程序。LCALL AT_RADE LCALL C_PSW;
12、比较密码子程序JB PSW_F,OPEN;密码比较正确,则调用开锁子程序LCALL XSD INC TIMERS2 MOV R7,TIMERS2;密码错误,调入输入密码输入次数,准备锁定键盘名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -CJNE R7,#03H,D0 D0:JC NEXT1;错误次数小 3 次LCALL XSE;锁定 5 分钟LCALL WARN2S LCALL LOCK_1M NEXT1:LCALL WARN2S;报警 2 分钟LCALL XSA EXIT:LCALL INITPS MOV BUFF,#00H CLR FLAG1 MOV TIMER
13、S,#00H AJMP CH_KEY;跳出AT_WRON:LCALL AT_WR LCALL XSF LCALL BP LCALL T100MSD LCALL BP LCALL T500MSD LCALL KILLXS LCALL T500MSD LCALL XSF LCALL T500MSD LCALL KILLXS LCALL T500MSD LCALL XSF LCALL T500MSD NOP NOP LCALL XSA AJMP EXIT OPEN:MOV A,TIMERS1 CJNE A,#09H,CLT1 CLT1:JC GOON1 MOV TIMERS1,#00H GOON1:
14、INC TIMERS1;输入回车的次数MOV TIMERS2,#00H SETB L3 CLR PSW_F LCALL XSB CLR JDQ;开门LCALL BP LCALL BP 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 11 页 -LCALL BP LCALL BP LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC SETB JDQ LCALL XSA NOP AJMP EXIT;*各类子程序*;*注意清楚缓冲区时AT1.AT6 不应在初始化中执行,以*;*防
15、两缓冲区都为0,相同开锁*;*CLR_BUF:MOV R7,#06H MOV R0,#6FH LOOP1:MOV A,#00H MOV R0,A DEC R0 DJNZ R7,LOOP1 RET;*初始化显示缓冲区以及其他缓冲区*INITPS:PUSH ACC PUSH PSW MOV R7,#06H MOV R1,#PS1 MOV A,#00H INIT_PS:MOV R1,A DEC R1 DJNZ R7,INIT_PS POP PSW POP ACC NOP RET INITAT:PUSH ACC PUSH PSW 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 11 页
16、-MOV R7,#06H MOV R1,#AT1 MOV A,#00H INIT_AT:MOV R1,A DEC R1 DJNZ R7,INIT_AT MOV TIMERS,#00H;密码输入的次数清零。POP PSW POP ACC RET;*按键识别子程序*SBIE:MOV R2,#0EFH;识别按键子程序,数据送 A 保存,课本P146 页。MOV R4,#00H LK4:MOV A,R2 MOV P0,A NOP MOV A,P0 JB ACC.0,LONE MOV A,#00H AJMP LKP LONE:JB ACC.1,LTWO MOV A,#08H AJMP LKP LTWO:
17、JB ACC.2,LTHR MOV A,#10H AJMP LKP LTHR:JB ACC.3,NEXTT;判断下一列MOV A,#18H LKP:ADD A,R4 PUSH ACC LK3:ACALL KS JNZ LK3 POP ACC RET NEXTT:INC R4 MOV A,R2 JNB ACC.7,KND RL A MOV R2,A AJMP LK4 KND:AJMP CH_KEY 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11 页 -KS:MOV P0,#0FH NOP MOV A,P0 CPL A ANL A,#0FH NOP RET CH_KF:CLR
18、C MOV A,BUFF;判断是数字按键还是功能按键,为 1 表示功能键CJNE A,#17H,KY KY:JC SET_CH;假若是数字按键则标志置为0 SETB FLAG1;假若是功能按键则标志置为1 AJMP CHKE_END SET_CH:CLR C MOV A,BUFF SUBB A,#00H JNZ EN_CH SETB FLAG1 AJMP CH_END EN_CH:MOV A,BUFF SUBB A,#03H JNZ DIG SETB FLAG1 AJMP CH_END DIG:CLR FLAG1 CH_END:NOP CHKE_END:RET T12MS:MOV R7,#18
19、H TM1:MOV R6,#0FFH TM66:DJNZ R6,TM66 DJNZ R7,TM1 RET;*检验密码正误*C_PSW:PUSH PSW PUSH ACC MOV R2,#06H MOV R0,#PS1 MOV R1,#AT1 C_P:CLR C MOV A,R0 名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 11 页 -SUBB A,R1 JNZ RETURN DEC R0 DEC R1 DJNZ R2,C_P NOP SETB PSW_F AJMP EXIT7 RETURN:CLR PSW_F EXIT7:NOP POP ACC POP PSW RET;锁定,鸣笛子程序 LOCK_1M:MOV R4,#3CH;锁定 1 分钟M1_LOOP:LCALL SEC DJNZ R4,M1_LOOP NOP RET WARN2S:PUSH PSW PUSH ACC MOV R5,#14H;调用 20 次 BP,报警 2s WARN:LCALL BP DJNZ R5,WARN NOP POP ACC POP PSW NOP RET BP:CLR SPK;鸣笛子程序LCALL T100MSD SETB SPK NOP 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 11 页 -
限制150内