题目 5 :密码锁
 使用单片机实现简易密码锁,通过输入密码,实现门锁的开启(控制继电器)。
 具体要求如下:
 (1)当输入正确密码后,继电器开启。
 (2)当三次输入错误密码后,密码锁禁止输入 10 秒钟,并进行相应的提示。
 (3)在输入正确的密码后,可修改密码和查询、清除门开启的次数。
 (4)自制继电器电路模块。
 (5)实现密码掉电不丢失。
 可添加符合题目背景的其它合理功能。
显示屏LCD1602显示
 矩阵键盘4*4按键
 继电器
 键盘按键有这些:
 1 2 3 a
 4 5 6 b
 7 8 9 c
- 0 # d
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显示屏 - 数据口连接到单片机的一个I/O口,用于显示密码输入状态、错误提示、门开启次数等信息。
 
-  4x4矩阵键盘 - 用于输入密码及操作命令,通过单片机扫描矩阵键盘得到按键值。
 
-  继电器 - 继电器控制电路连接到单片机的一个输出端口,用于控制门锁的开关状态。
 
-  EEPROM - 用于存储系统密码,保证掉电后密码不丢失。
 
软件实现
-  延时函数 - 实现精确的延时函数,用于键盘扫描和LCD1602显示的时间控制。
 
-  LCD1602显示函数 - 初始化LCD1602显示屏,并实现清屏、写字符、写字符串等功能。
 
-  矩阵键盘扫描函数 - 实现逐行扫描方式,检测键盘按键的状态,并返回按键值。
 
-  EEPROM读写函数 - 实现EEPROM的读写操作,用于存储和读取系统密码。
 
-  主程序逻辑 - 初始化系统,读取EEPROM中的密码,设置初始显示状态。
- 实时扫描键盘输入,根据输入值进行密码验证、错误处理、密码修改、门开启次数查询与清除、继电器控制等操作。
 
程序逻辑框架
-  初始化 - 初始化LCD1602显示屏、矩阵键盘、继电器控制端口、EEPROM读取初始密码。
 
-  主循环 - 循环检测键盘输入,判断当前输入状态(正常输入、修改密码、查询次数)。
- 根据键盘输入值进行相应操作,包括密码验证、错误提示、密码修改、门开启次数显示与清除。
 
-  密码验证 - 对比输入密码与系统密码,验证通过则开启继电器,记录门开启次数;验证失败则增加错误次数并提示错误信息。
 
-  错误处理 - 三次连续输入错误密码后,锁定输入10秒钟,并在LCD1602上显示锁定提示。
 
-  密码修改 - 按键“b”进入修改密码模式,输入原密码后输入新密码,保存新密码到EEPROM。
 
-  门开启次数查询与清除 - 按键“c”查询门开启次数,按键“d”清除门开启次数,并在LCD1602上显示操作结果。
 
通过上述硬件和软件的结合,可以实现一个功能完整的密码锁系统,满足密码输入、验证、修改,错误处理和门开启次数管理等需求。
资源:
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2
