admin管理员组文章数量:1567257
2024年1月28日发(作者:)
6位数电子密码锁/**************************************************************** WYDZ-51实验板
* 六位数电子密码锁4*4键盘(密码可改)
*
* 通电显示------,密码由TABLE读取132888
*
* 为内定密码这样可以防止停电后无密码用 *
* 按*清除为000000欲改密码先按密码再按#
*
* 输入密码后按D若密码相同P2.3反转一次 *
* 否则显示为------
*
* 要显示密码按住C即可放开后显示000000
* SW1 = 1 | SW2= 2 | SW3= 3 | SW4 = A未定义 *
* SW6 = 4 | SW7= 5 | SW8= 6 | SW9 = B未定义 *
* SW11 = 7 | SW12= 8 | SW13= 9 | SW14= C显示密码 *
* SW16 =*清除 | SW17= 0 | SW18= 重设密码 | SW19= D开锁 *
* 程序制作:LBQ691477940 *
* 26/10/08 00:41*
***************************************************************/; 主程序DULA BIT P2.6WELA BIT P2.7 ORG 0000H
DJNZ R7,$
MOV R7,#00H ;时 MOV R7,#16 ;内定密码在表格的起始地址为第16个开始 MOV R6,#06H ;内定六个密码 MOV R1,#35H ;内定密码取码指针L1: MOV A,R7 ; MOV DPTR,#TABLE ; MOVC A,@A+DPTR ; MOV @R1,A ;六个密码分别存入35H-30H单元 DEC R1 ;存下一个地址 INC R7 ;取下一个 DJNZ R6,L1START: ;SETB P2.0 ;置P2.0口
MOV R4,#06H ;清除显示器存放地址40H-45H MOV R0,#40H ;CLEAR: MOV @R0,#16 ;显示------ INC R0 ; DJNZ R4,CLEAR ; ;4*4&4*3键盘子程序 ;将pn.0-pn.3作out4横,pn.4-pn.7作in4竖L2: MOV R3,#0F7H ;扫描初值(Pn.3=0) MOV R1,#00H ;取码指针初值L3: MOV A,R3 ;开始扫描 MOV P3,A ;将扫描值out Pn口 MOV A,P3 ;读入Pn口值,判断是否有键按下? MOV R4,A ;存入R4,以判断是否放开了 SETB C ;C=1 MOV R5,#04H ;扫描Pn.4-Pn.7 ;若为4*3则mov r5,#03h并pn.4不用L4: RLC A ;将按键值带c左移一位 JNC KEYIN ;判断C=0?是则有键按下转KEYIN INC R1 ;C=1则无键按下,将取码指针加1 DJNZ R5,L4 ;4竖扫描完了? CALL DISP
MOV A,R3 ;扫描值载入 SETB C ;C=1 RRC A ;扫描下一横(Pn.3-Pn.0) MOV R3,A ;存回扫描寄存器 JC L3 ;C=1?是则未扫完 JMP L2 ;C=0则4横已扫描完KEYIN: MOV A,R1 ;将键值送A XRL A,#04H ;是否按C=SW14键 JZ X3 ;是则显示密码 MOV A,R1 ; XRL A,#00H ;是否按D=SW19键 JZ X4 ;是则比较密码,正确开门 MOV R7,#30 ;消除抖动D1: MOV R6,#248 DJNZ R6,$ DJNZ R7,D1D2: MOV A,P3 ;读入P3口值 XRL A,R4 ;与上次读入值比较相同A=0 JZ D2 ;ACC=0则相等,表示键未放开 MOV A,R1 ;己放开,取码指针载入A MOV DPTR,#TABLE ;数据指针到TABLE第 1 页 * *
6位数电子密码锁 MOVC A,@A+DPTR ;到TABLE取码 MOV R7,A ;取得的键值迸R7 XRL A,#0FH ;是否按#=SW18 JZ SET0 ;是则设定新密码 MOV A,R7 ;键值送A XRL A,#0EH ;是否按* JZ START ;是则清除 MOV A,R7 ;键值送A XRL A,#0AH ;A=SW4键未设定键 JZ L2 ; MOV A,R7 ;键值送A XRL A,#0BH ;B=SW9键未设定键 JZ L2 ; MOV A,R7 ;键值送A XCH A,40H ;现按键值存入(40H) XCH A,41H ;旧(40H)值存入(41H) XCH A,42H ;旧(41H)值存入(42H) XCH A,43H ;旧(42H)值存入(43H) XCH A,44H ;旧(43H)值存入(44H) XCH A,45H ;旧(44H)值存入(45H) CALL DISP ;调用显示子程序 JMP L2 ;X3: JMP DISP2 ;X4:
JMP COMP ;调用比较子程序SET0: MOV R2,#06H ;六个密码 MOV R0,#40H ;按键显示地址 MOV R1,#30H ;密码存放地址E1: MOV A,@R0 ;40H存入45H存入35H XCH A,@R1 ; INC R0 ; INC R1 ; DJNZ R2,E1 ; CALL DELAY ;时E2: JMP START ;COMP:
MOV R1,#45H ;按键显示地址 MOV R0,#35H ;密码存放地址 MOV R2,#06H ;六个密码C1: MOV A,@R1 ; XRL A,@R0 ; JNZ C3 ;不同则清除 DEC R1 ;相同比较下一个密码 DEC R0 ; DJNZ R2,C1 ; CLR P2.3 ;使其OUT高电平令电子锁打开
MOV R2,#255 ;时0.1秒C2: MOV R6,#255 DJNZ R6,$ DJNZ R2,C2 SETB P2.3 ;将本行去掉将所有已注释行去掉{;逗号C3: JMP START ; ;欲显示密码值DISP2: MOV R0,#35H ;密码存放地址 CALL DISP1 ;调用显示子程序1 MOV A,P3 ;C键放开否?没有继续显示 XRL A,R4 ; JZ DISP2 ; CALL DELAY ; JMP STARTDELAY: MOV R7,#03 ;显示器扫描时间D3: MOV R6,#248
DJNZ R6,$ DJNZ R7,D3 RET
DISP: MOV R0,#45H ;显示地址指针45HDISP1: MOV A,@R0 ;载入D6显示值 MOV DPTR,#TAB MOVC A,@A+DPTR
SETB DULA MOV P0,A
CLR DULA
SETB WELA第 2 页
6位数电子密码锁 MOV P0,#1 CLR WELA
CALL DELAY DEC R0
MOV A,@R0 ;载入D5显示值 MOV DPTR,#TAB MOVC A,@A+DPTR SETB DULA MOV P0,A
CLR DULA
SETB WELA
MOV P0,#2
CLR WELA
CALL DELAY DEC R0 MOV A,@R0 ;载入D4显示值 MOV DPTR,#TAB MOVC A,@A+DPTR SETB DULA MOV P0,A
CLR DULA
SETB WELA
MOV P0,#4
CLR WELA
CALL DELAY
DEC R0 MOV A,@R0 ;载入D3显示值 MOV DPTR,#TAB MOVC A,@A+DPTR SETB DULA MOV P0,A
CLR DULA
SETB WELA
MOV P0,#8
CLR WELA
CALL DELAY DEC R0 MOV A,@R0 ;载入D2显示值 MOV DPTR,#TAB MOVC A,@A+DPTR SETB DULA MOV P0,A
CLR DULA
SETB WELA
MOV P0,#10H
CLR WELA
CALL DELAY
DEC R0 MOV A,@R0 ;载入D1显示值
MOV DPTR,#TAB MOVC A,@A+DPTR SETB DULA MOV P0,A
CLR DULA
SETB WELA
MOV P0,#20H
CLR WELA
CALL DELAY
RET ;TABLE: DB 0DH,0FH,00H,0EH ; 1 /2 / 3 /A
DB 0CH,09H,08H,07H ; 4 / 5 / 6 /B
DB 0BH,06H,05H,04H ; 7 / 8 / 9 /显示密码
DB 0AH,03H,02H,01H ;清除 / 0 /重设密码/开锁 DB 01H,03H,02H,08H,08H,08H ;内定密码 ;其实TABLE中的值可以不这样安排 ;只要和键盘相对应即可 ;若按的是键盘上的Pn.3与Pn.7组成的开关一定是TABLE中的第1个值 ;若按的是键盘上的Pn.3与Pn.6组成的开关一定是TABLE中的第2个值
;若按的是键盘上的Pn.3与Pn.5组成的开关一定是TABLE中的第3个值 ;如此类推Pn.1与Pn.7组成的开关一定是TABLE中的第9个值 ;如此类推Pn.0与Pn.7组成的开关一定是TABLE中的第13个值 ;若按的是键盘上的Pn.0与Pn.4组成的开关一定是TABLE中的第16个值 ;Pn.3与Pn.7或.6或.5或.4接开关分别为 ;Pn.2与Pn.7或.6或.5或.4接开关分别为 ;Pn.1与Pn.7或.6或.5或.4接开关分别为
第 3 页
6位数电子密码锁 ;Pn.0与Pn.7或.6或.5或.4接开关分别为TAB: ;显示表格 DB
0C0H
;0
DB
0F9H
;1
DB
0A4H
;2
DB
0B0H
;3
DB
099H
;4
DB
092H
;5
DB
082H
;6
DB
0F8H
;7
DB
080H
;8
DB
090H
;9
DB
088H
;A
DB
083H
;b
DB
0C6H
;C
DB
0A1H
DB
086H
DB
08EH
END
DB 0BFH ;-第 4 页;d;E;F
版权声明:本文标题:6位数电子密码锁 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1706432864a177866.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论