介绍一种由AT89C2051编程实现的控制电路,具有按键有效指示、输入错误、解码有效指示、控制开锁、定时中断、错误报警、密码修改等功能;8位10进制密码,保密好使用范围广,特适用家庭、宾馆等场所。
一、硬件电路:
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用于复位。
三、密码锁的控制程序
密码锁的控制程序由延时子程序、修改密码子程序、扫描输入子程序、时钟中断子程序及主程序组成。程序框图如图2所示。它对输入的8位十进制密码进行判别,如果输入密码正确,则可以直接开锁或修改密码之后开锁。如果不正确,并且6次以上输入不正确,则报警并封锁输入口。
1.主程序:
ORG 0H
SJMP START
ORG 0BH
SJMP INT