电子锁设计
摘要
本次实验主要做了一个智能锁,实现用户输入正确密码开锁,输入错误密码报警的功能,同时用户也可以自己设定密码,忘记密码可进行复位初始化密码。即使掉电之前修改的密码仍然保存。本次设计主要是通过软件操作来实现密码锁的开锁、复位、设置、关闭的功能。利用 EEPROM存储器 24c02掉电不丢失的性质实现密码的存储。同时通过红、黄、绿三种指示灯来指示等待、开锁、报警三种状态。本次设计利用了51单片机的定时器0,1中断,外部中断等内部资源,矩阵按键、LCD1602、24C02等外设。设计中遇到的主要难点是24c02的读取操作。通过参考网上代码并自己修改了一部分最终实现了密码的读取功能。
关键词:EEPROM,外部中断,LCD1602,密码锁
设计需求分析
电子密码锁需要实现以下功能:
- 能够用数字键盘输入正确的密码开锁,并相应的在显示器上
显示为 *,输入错当输入密码有误时可以向前逐位清除并重新输入; - 能够重置密码,用户不想使用当前的密码,可以通过这个功能重新设置密码;
- 能够在忘记密码的时候,如果用户忘记了密码,可以通过输入特定的暗号(作为备用密码)来初始化密码。
- 能够在关闭电子密码锁时保存已修改的密码;
- 能够在输入密码错误次数达到上限、输入暗号错误次数达到上限、或输入密码超过规定的时间时输出相应的警告信息并引发声光报警功能。根据以上需求分析,电子密码锁的设计主要包括以下几个部分:4×4矩阵键盘、LCD信息显示、EPROM存储开锁密码和声光报警功能。
功能与规划
开机
在开机操作后,VD0亮,表示当前电子密码锁处于闭锁状态。
开锁
以10以内的数字组成的8位数密码,在具备一定的复杂性的同时又不会难以记忆。本次实验中的密码锁只有在正确地输入8位数密码才能成功开锁。
按下OPEN键后,电子密码锁处于待输入密码状态,LCD第一行显示:input password。初始密码为12345678,每输入一位,蜂鸣器会嘟一声。为了安全起见,输入的密码不会直接显示数字,而是以*代替。
如果在输入密码时输入错误可以使用CLEAR实现退位清除。
当8位数字密码输入正确,LCD第一行会显示password ok!,此时闭锁灯会VD0熄灭,同时开锁灯VD1亮。如果密码错误,则LCD第一行会显示:error,try again。
如果连续输入错误(包括其他误操作在内)四次,则LCD第一行会显示input fail!并且会触发蜂鸣器报警,报警灯VD2持续闪烁。






和开锁过程同样的是,重设密码的操作有时间限制,在60s内没有完成重设密码的操作则会出发报警(蜂鸣器报警、报警灯闪烁)。
恢复出厂化设置
考虑到存在用户在修改了密码但忘记的这种可能情况,用户可以联系生产厂商的维修人员通过RESET键将密码锁初始化,密码重置为12345678。所以厂商需要对复位密码做好保护工作,以防被不法分子利用,为公司和用户带来损失。
在按下复位键RESET后,LCD没有显示,LED灯也没有显示。在按下复位键10s以内要紧接着按下CLEAR键,否则会触发报警。
之后再输入8位复位密码(81815151)进行复位操作,如果有任何一位输入错误或者在30s内没有完成复位操作也会触发报警,出错后可以通过再次按下RESET键或掉电重新进行复位操作。
在复位密码输入正确后,LCD会显示:reset ok!和12345678,表示初始化成功,初始密码为12345678。
关闭
关闭状态既可以节约能源,也可以被迅速唤醒,相当于计算机的睡眠模式。在未触发报警的情况下,按CLOSE后LCD停止显示,蜂鸣器停止发声,LED灯都熄灭。
整体电路
用Proteus软件绘制整体电路如下:
(1)按下OPEN键D0红灯亮起,处于未开锁状态,LCD屏显示input password。
图:未开锁时系统电路及显示图
(2)输入密码正确后D1绿灯亮起,LCD屏显示password ok
图:密码正确时系统电路及显示图
(3)输入密码错误上限3次,当再次输入密码错误后LCD显示input fail、D2黄灯闪烁并且蜂鸣器发出报警声。输入密码超时(本设计为60s)也会触发报警装置。
图:密码输入超时后系统电路及显示图
图:密码输入错误超过三次后系统电路及显示
软件架构
proteus仿真及代码下载链接:链接:https://download.csdn.net/download/zbl12345678910/15452087