admin管理员组

文章数量:1531524

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

本文标签: 密码显示地址放开