用89C2051控制的智能密码锁

2016-07-05 15:37

  本密码锁控制器由AT89C2051单片机组成, 工作稳定可靠, 保密性高, 实用性强, 并具有报警控制功能。 
一、电路组成和原理图
  工作原理图如附图一所示, 该电路由AT89C2051做控制元件, P1口为键盘口, 其中P1.4~P1.7为键盘扫描输出口, P1.0~P1.3为键盘扫描输入口; P3口为信号输出口, 其中P3.0输出开锁控制信号去驱动电磁锁, P3.1输出密码错信号, P3.2输出报警控制信号去驱动报警器。1脚为复位端,4脚、5脚接晶振,各元器件参数如图所示。该电路键盘由16个按键组成,15个“数字”键, 1个“输入”键; 密码由8位数字组成(可由用户对程序稍加修改设置为任意位数的密码),每位数字均可为15个数字中的任意一个数,这样组成的密码不可破译,特别是当别人不知密码位数时更不可破译。

用89C2051控制的智能密码锁

              图一
二、工作原理
  通电复位,电路进入就绪状态,等待用户输入密码。当用户输入密码并按下“输入”键后,如输入密码正确则由P3.0输出开锁控制信号且绿灯亮,如输入密码错误则由P3.1输出密码错误指示信号红灯亮,如连续三次输入密码错误则由P3.2输出报警控制信号且黄灯亮,并且必须等待解出报警后方可重新开锁。

三、源程序
        ORG  0000H
       MOV P3,#0BFH
       MOV R4,#00H
BEGIN: MOV R0,#01FH
       MOV R3,#00H
KEY  : MOV P1,#0FH
       MOV A,P1
       ANL A,#0FH
       CJNE A,#0FH,KEY1
       SJMP KEY
 KEY1: MOV P3,#0BFH
       LCALL DEL12
       MOV A,#0EFH
 KEY2: MOV R2,A
       MOV P1,A
       MOV A,P1
       ANL A,#0FH
       CJNE A,#0FH,KEY3
       MOV A,R2
       SETB C
       RLC A
       JC KEY2
       SJMP KEY
 KEY3: MOV B,#0FBH
 KEY4: RRC A
       INC B
       JC KEY4
       MOV A,R2
       SWAP A
 KEY5: RRC A
       INC B
       INC B
       INC B
       INC B
       JC KEY5
 KEY6: MOV A,P1
       ANL A,#0FH
       CJNE A,#0FH,KEY6
       LCALL DEL12
       LCALL OPREAT
       LJMP KEY
        ORG 0100H
DEL12: MOV R6,#01EH
 DEL2: MOV R7,#64H
 DEL1: DJNZ R7,DEL1
       DJNZ R6,DEL2
       RET
        ORG   0200H
OPREAT:INC R0
       MOV A,B
       MOV @R0,A
       CJNE A,#0FH,COUNT
       CJNE R3,#08H,ERROR
       MOV R1,#20H
       MOV B,#00H
       MOV DPTR,#TAB
 LOOP: MOV A,B
       MOVC A,@A+DPTR
       CLR C
       SUBB A,@R1
       JNZ ERROR
       INC R1
       INC B
       DJNZ R3,LOOP
 OPEN: MOV P3,#0BEH
       LJMP $
ERROR: MOV P3,#0BDH
       INC R4
       CJNE R4,#03H,AGAIN
ALARM: MOV P3,#0B9H
       LJMP $
AGAIN: LJMP BEGIN
COUNT: INC R3
       RET

TAB:DB 01H,03H,05H,07H,02H,04H,06H,08H
END