题目 5 :密码锁
使用单片机实现简易密码锁,通过输入密码,实现门锁的开启(控制继电器)。
具体要求如下:
(1)当输入正确密码后,继电器开启。
(2)当三次输入错误密码后,密码锁禁止输入 10 秒钟,并进行相应的提示。
(3)在输入正确的密码后,可修改密码和查询、清除门开启的次数。
(4)自制继电器电路模块。
(5)实现密码掉电不丢失。
可添加符合题目背景的其它合理功能。
显示屏LCD1602显示
矩阵键盘4*4按键
继电器
键盘按键有这些:
1 2 3 a
4 5 6 b
7 8 9 c
1 密码一共6位密码,全数字。最开始的系统密码是123456.
2 正常输入正确密码继电器开启,门开启次数变量加1。按下按键a代表关门,继电器关闭。
3 继电器我会做一个连着小灯的电路,继电器开启后小灯会亮。
4 输入密码错误一次就记录一次,错误三次后,禁止所有输入10秒钟,有显示提示。时间过后清空错误次数。
5 每次输入正确密码会自动清空错误次数。
6 按键b按下后进入修改密码过程:输入原始密码-->输入新密码--->退出回到主页面。
7 按键c查询门开启次数变量,此时可以按键d清空门开启次数变量。
8 上电后密码从单片机EEPROM读取,每次修改密码也会保存到EEPROM,所以掉电不会丢密码。
也就是说修改密码后关机,下次开机后密码就是之间修改后的密码。
要实现一个简易密码锁,我们可以使用单片机结合LCD1602显示屏、4x4矩阵键盘和继电器来完成。这个密码锁的功能包括密码输入、验证、修改以及门开启次数的记录和显示。此外,密码锁还需要在掉电后保持密码不丢失。下面是实现这个密码锁的具体思路和功能介绍:
密码输入与验证
使用4x4矩阵键盘输入6位数字密码。
初始系统密码为123456。
输入正确密码后,继电器开启,门开启次数增加1,LCD1602显示门已开启。
错误处理
每次输入错误密码,记录错误次数。
连续三次输入错误密码后,密码锁禁止输入10秒钟,并在LCD1602上显示提示信息。
10秒后清空错误次数,并允许重新输入密码。
密码修改
按键“b”进入修改密码模式:输入原始密码后再输入新密码。
新密码输入完成后返回主界面,并在EEPROM中保存新密码,保证掉电不丢失。
门开启次数查询与清除
按键“c”查询门开启次数,LCD1602显示当前门开启次数。
按键“d”清除门开启次数,LCD1602显示门开启次数已清除。
继电器控制
输入正确密码后,继电器开启,连接的指示灯亮起。
按键“a”关闭继电器,指示灯熄灭。
LCD1602显示屏
4x4矩阵键盘
继电器
EEPROM
延时函数
LCD1602显示函数
矩阵键盘扫描函数
EEPROM读写函数
主程序逻辑
初始化系统,读取EEPROM中的密码,设置初始显示状态。
实时扫描键盘输入,根据输入值进行密码验证、错误处理、密码修改、门开启次数查询与清除、继电器控制等操作。
初始化
主循环
循环检测键盘输入,判断当前输入状态(正常输入、修改密码、查询次数)。
根据键盘输入值进行相应操作,包括密码验证、错误提示、密码修改、门开启次数显示与清除。
密码验证
错误处理
密码修改
门开启次数查询与清除
通过上述硬件和软件的结合,可以实现一个功能完整的密码锁系统,满足密码输入、验证、修改,错误处理和门开启次数管理等需求。
资源:
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!