本密码锁由AT89C2051单片机控制,具有报警控制功能,工作稳定可靠,保密性高,实用性强。
一、电路原理
89C2051的P1口为键盘口,其中P1.4~P1.7为键盘扫描输出口,P1.0~P1.3为键盘扫描输入口。P3口为信号输出口,P3.0输出开锁控制信号,驱动电磁锁,P3.1输出密码错信号,P3.2输出报警控制信号,驱动报警器。键盘由16个按键组成,15个数字键,1个输入键INPUT;本文所附程序的密码由8位数字组成(用户只需对程序稍加修改,便可将密码设置为任意位数),每位数字均可为0~E的15个数字中的任意一个,确保组成的密码的不可破译性,尤其是当别人不知密码位数时更是如此。
二、工作原理
通电复位,电路进入就绪状态,等待用户输入密码。当用户输入密码并按下输入键INPUT后,程序判断输入的密码是否正确。如果输入密码正确,则从P3.0输出开锁信号,同时点亮绿灯;如果输入密码不正确,则从P3.1输出密码错误信号,点亮红灯;如果连续三次输入的密码均是错的,则从P3.2输出报警信号,同时点亮黄灯。一旦输出报警信号, 就必须等待解除报警后方可重新开锁。
三、硬件电路
AT89C2051是与MCS-51系列兼容的一种高性能单片机,具有2KB片内ROM、256字节片内RAM,可以不需扩展外程序、数据存储器,可满足一般的程序需求,从硬件组成可以看出该密码锁有一个3X4阵列的键盘,只需7条I/O引脚就可以了余下的I/O引脚可以开发其他控制功能,如:控制空调、电灯、风扇等。
四、功能实现
键盘扫描所用引脚P1.0-P1.6,其中P1.4-P1.6这3条引脚用于输出扫描信号,P1.0-P1.3这4条引脚用于检测按键的状态。P1.0-P1.6的状态组成的键码以及对应按键如表1所列。
在程序执行中,是先从P1.6送出“0”,再判别P1.3-P1.0的输入。所以,实质是在P1.6-P1.4送出“011”,接收P1.3-P1.0的输入状态,这时判别8,9,A这4个键。接着,在P1.6-P1.4送出“101”,接收P1.3-P1.0的输入,这时判别4,5,6,7这4个键。再而,在P1.6-P1.4送出“110”,接收P1.3-P1.0的输入,这时判别0,1,2,3这4个键的状态。
开锁电平UNLOCK的输出脚P3.0,当输入的键正确时则在P3.0输出开锁电平UNLOCK。
报警电平DANG输出脚P3.1。在6次误码输入的条件下,进行报警。
LOCK控制引脚P3.2,90S之后停止输入。
有效按键提示EFFI引脚P3.3。
错误输入警告WARN引脚P3.4。
另外,还有引脚5,4接石英振荡器的XTAL2,XTAL1端,组成石英振荡器电路,在图1中没有画出。引脚1用于复位。
五、振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
辣、芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C2051设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,禁止所用其他芯片功能,直到下一个硬件复位为止。
七、密码锁的控制程序
密码锁的控制程序由延时子程序、修改密码子程序、扫描输入子程序、时钟中断子程序及主程序组成。程序框图如图2所示。它对输入的8位十进制密码进行判别,如果输入密码正确,则可以直接开锁或修改密码之后开锁。如果不正确,并且6次以上输入不正确,则报警并封锁输入口
图2