基于 C 语言 STC89C52 单片机电子密码锁的
设计与总结报告
张博,于娇,陈瑶,张舒
摘要
本设计中,电子密码锁使用 STC89C52 单片机控制,采用 C 语言编写,通过
Proteus 软件仿真并进行了实物焊接。电子密码锁通过矩阵键盘进行密码输入,
1602A 液晶显示模块进行显示。其可实现的功能有:(1)通过切换,对输入的 4
位密码进行显示或隐藏;(2)通过发光二极管和蜂鸣器,对解密正确或者错误
进行声光报警;(3)4 位密码修改;(4)在密码遗失情况下,通过初始密码进
行密码再设置;(5)采用 AT24C02 外部存储器,完成断电密码保护功能;(6)
具有 1-9 次的解锁次数任意设定功能;(7)模拟密码箱随机产生密码,并进行
解码。本设计特色为采用 1602A 液晶显示模块,这使得显示更加直观、使用更加
方便。密码可实现显示和隐藏切换,通过隐藏密码实现密码保护。
一、方案设计与论证
方案一:以 STC89C52 单片机为电子密码锁系统核心,使用 4*4 矩阵键盘作
为数据输入方式,驱动 1602A 显示器提示程序运行过程和开锁的步骤,利用
AT24C02 芯片实现掉电存储。图 1 为单片机控制密码锁的系统原理框图。
电源模块
STC89C5 2
单片机
矩阵
键盘
控制
AT24C02 存储芯片
LCD
1602A
LED
密码校验提示
蜂鸣器提示电路
图 1 单片机控制密码锁的系统原理框图
方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案,如图2。
输
入
按
扭
开
关
5 秒定时电路
20 秒定时电路
声光指示电路
输入锁存电路
密码存储电路
开锁控制电路
机械动作构件
图 2 数字逻辑控制方案电子密码锁原理框图
1
方案论证:
方案一中,利用单片机灵活的编程设计和强大的 I/O 端口,及其控制的准确
性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能。
方案二中,虽然数字逻辑控制系统中常用的开关电器能够实现本设计中密码
锁的逻辑控制,但存在接线复杂、寿命短、可靠性差、维护困难的缺点,给诸多
应用带来了极大的不便。
方案选定:综上论证,本设计选择方案一。
二、电路设计
使用的元器件有:核心芯片 STC89C52、存储芯片 AT24C02、液晶显示 1602A、
4×4 矩阵键盘、报警蜂鸣器、发光二极管和三极管等。
1、开锁机构
通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。
如图 3 所示,为密码锁开锁电路原理图。
当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然
后驱动电磁锁,达到开门的目的。本次设计中,基于节省成本考虑,用发光二极
管代替电磁锁,信息通过 LCD 显示,并利用蜂鸣器和二极管声光指示。
超次锁定
否
电磁锁
STC89C5 2
单片机
密码
正确
是
开锁驱动电路
图 3 密码锁开锁电路原理图
2、矩阵键盘设计电路
由于本设计中要求使用 16 个按键输入,为减少键盘与单片机接口时所占用
的 I/O 线的数目,故使用矩阵键盘。本设计中,矩阵键盘行线和单片机 P1.0-P1.3
相连,列线与单片机 P1.4-P1.7 相连。矩阵键盘设计电路图,如图 4 所示。
键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电
平,扫描列线电平状态,为低电平即表示该键按下。
2
1
4
7
输入密码
2
5
8
0
3
6
9
*
解码次数
随机密码
确认
更改密码
图 4 矩阵键盘设计电路图
3、声光提示电路设计
声音提示电路采用小蜂鸣器提示。蜂鸣器能够根据脉冲信号,以及信号的频
率发出各种不同的声音,这样可以根据系统要求在密码输入正确和错误时发出不
同的声音提示,已达到报警的要求。光提示是在密码输入正确时,绿色 LED 亮。
蜂鸣器电路,如图 5(a)所示;发光二极管电路,如图 5(b)所示。
图 5(a) 蜂鸣器电路
图 5(b) 发光二极管电路
4、显示模块设计
本设计中,显示模块采用 1602A 液晶显示器显示。如下所示,图 6 为 1602A
液晶显示器的接口示意图。
图 6
1602A 液晶显示器的接口示意图
本设计中液晶串口一共用到 11 根导线与单片机相连, 具体连接情况如表 1
3
显示模块与 MCU 连接说明所示。
序
号
1
2
3
4
5
6
1602A 液晶显
示器引脚
RS 引脚
R/W 引脚
E 引脚
D0 引脚
D1 引脚
D2 引脚
机引脚
P2.5(A13)
P2.6(A14)
P2.7(A15)
P0.0(AD0)
P0.1(AD1)
P0.2(AD2)
表 1 显示模块与 MCU 连接说明
STC89C52 单片
1602A 液晶显
序
号
7
8
9
10
11
示器引脚
D3 引脚
D4 引脚
D5 引脚
D6 引脚
D7 引脚
STC89C52 单片
机引脚
P0.3(AD3)
P0.4(AD4)
P0.5(AD5)
P0.6(AD6)
P0.7(AD7)
5、AT24C02 掉电存储单元的设计
本设计中掉电存储单元采用 AT24C02 外部存储器,其作用是在系统电源断开
的时候,存储当前设定的密码数据。如下所示,图 7 为 AT24C02 管脚示意图,表
2 为 AT24C02 管脚说明。
A0
A1
A2
GND
1
2
3
4
C02
8
7
6
5
VCC
WP
SCL
SDA
图 7
AT24C02 管脚示意图
表 2
功能
AT24C02 管脚说明
管脚名称
器件地址选择
串行时钟信号
1.8V-6.0V 工作电压
SDA
WP
VSS
管脚名称
A0 A1 A2
SCL
VCC
功能
串行数据/地址
写保护
接地
本设计中,AT24C02 的 SCL 和 SDA 引脚接上拉电阻后与单片机的 P3.4(T0)
和 P3.5(T1)脚相连,其电路图如图 8 所示。
图 8
AT24C02 掉电存储单元设计图
4
三、程序流程
开始
系统初始化
调用 E2PROM 密码
未超过 N 次
锁定键盘
超过 N 次
判断次数 N
N
返回
显示主界面
输入密码
判断密码
Y
确定密码
开锁模拟声光
再次输入密码
N
按键
N
返回主界面
Y
设置新密码
密码设置完毕
Y
Y
判断按键值
N
N=0x84
N=0x82
N=0x11
设
置
解
码
次
数
产
生
随
机
密
码
输
入
密
码
图 9 主程序流程图
5
四、测试方法与测试结果
1、测试仪器:
电子密码锁
2、测试方法:
(1)开机,输入初始化密码“0806”,屏幕显示“chushihua”。输入“0000”
确认,再输入“0000”,屏幕显示“Set New Word”。输入新密码,按“更改密
码”,再次输入新密码,按“更改密码”,屏幕显示“Reset OK”。(设置新密
码为“1111”)
(2)输入“1111”,观察屏幕显示;输入其他数字组合,观察屏幕显示。
(3)关机,再次开启,输入“1111”,观察屏幕显示。
(4)输入“1111”,当屏幕显示“open”后,按“解码次数”,输入“2”,
确认。然后输入密码“1111”,屏幕显示“Set New Word”。输入“1234”,按
“更改密码”,重复一次,新密码设定成功。连续输入 2 次错误密码,观察。
(5)由于键盘锁定时间长,按 2 号开关按钮复位。输入“1234”解锁,按
“随机密码”,得“3131”,确认。按“输入”,输入“3131”,观察屏幕显示。
(6)按 1 号开关按钮,输入数字“1”,;再次按 1 号开关按钮,输入数字
“1”,观察 2 次屏幕变化。
(7)根据步骤(1)——步骤(6),重复设置不同数据,观察结果。
3、测试结果:
(1)按步骤(2)操作,当输入密码为“1111”时,显示“open”,绿色
LED 亮起。输入其他不超过四位的数字组合,显示“wrong”;输入超过四位,
则键盘锁定。
(2)按步骤(3)操作,屏幕显示“open”,说明可实现断电密码保护。
(3)按步骤(4)操作,若 2 次输入均为四位错误密码,则第二次输入错误
后,屏幕显示“keypad locked”,键盘锁定;否则,累计输入 2 次错误四位密
码,屏幕显示“keypad locked”, 键盘锁定。
(4)按步骤(5)操作,屏幕显示“open”,说明随机密码设置成功。
(5)按步骤(6)操作,可发现两次屏幕显示不同,分别为“1”和“*”。
(6)重复实验步骤,得出解码次数任意设定功能成功实现。
五、总结
本设计除完成比赛基本要求外,还实现了断电密码保护、解码次数任意设置、
随机密码设置和解码等功能。但是,对于丰富电子密码锁的功能还有许多值得研
究和探讨,如实现逐次清位,显示时间、日历等功能。
6