用89C2051控制的智能密码锁
发布时间:2011-6-22 11:47
发布者:circuit_share
本密码锁控制器由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个数字中的任意一个数,这样组成的密码不可破译,特别是当别人不知密码位数时更不可破译。 ![]() 二、工作原理 通电复位,电路进入就绪状态,等待用户输入密码。当用户输入密码并按下“输入”键后,如输入密码正确则由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 ![]() END |
网友评论