4个数码管+1个独立的数码管+键盘
1 键盘输入一个密码后数码管就显示一个密码,再输一个数码管就第二个显示,依次往后推。
2 *号键可以删除之前的一个输入的密码,#号键可以清除所有输入。
3 输入4个后,单片机自动比对密码(无需确认键),密码正确 小灯点亮。
4 密码错误三次后,蜂鸣器响起来。三次后不能进行任何输入,只能重新打开仿真。
5 输入正确一次,即可清空之前有的错误次数。
6 单独的那个数码管显示的就是剩余可犯错次数,犯错3次就不能再次输入了。
7 按键盘的A按键可以修改密码,无需输入原密码,直接按4个密码进去就完成修改。(从简的设计)
实验报告
实验名称
数码管密码锁系统设计与实现
实验目的
- 掌握基于ATMEGA16单片机的数码管显示和矩阵键盘输入技术。
- 设计并实现一个具有密码输入、验证和错误提示功能的数码管密码锁系统。
- 学习蜂鸣器报警和LED指示灯的控制。
实验设备
- ATMEGA16单片机
- 矩阵键盘
- 数码管(4个共阳极数码管+1个独立的数码管)
- LED灯
- 蜂鸣器
- Proteus仿真软件
系统功能
- 键盘输入密码,数码管依次显示输入的密码。
- "*"键用于删除上一个输入的密码,"#"键用于清除所有输入。
- 输入4位密码后自动比对,如果密码正确,点亮指示灯;密码错误三次后,蜂鸣器报警且锁定系统。
- 独立数码管显示剩余错误次数,三次错误后系统锁定,无法继续输入。
- 按键"A"用于修改密码,无需输入原密码,直接输入新密码完成修改。
- 输入正确一次,即可清空之前的错误次数。
系统原理
硬件原理
- 矩阵键盘: 采用4行4列的矩阵键盘,通过扫描方式获取按键值。
- 数码管显示: 采用共阳极数码管,使用段选信号控制显示内容,位选信号控制具体显示哪个数码管。
- LED指示灯: 通过单片机IO口控制,表示密码输入正确。
- 蜂鸣器: 通过单片机IO口控制,表示密码错误三次后的报警。
- 独立数码管: 显示剩余错误次数。
软件原理
- 键盘扫描: 通过行列扫描法检测按键输入,根据按键值查找键盘映射表获取实际按键。
- 密码存储与比对: 通过数组存储系统密码和用户输入的密码,输入4位后进行比对。
- 数码管显示: 根据输入的密码和剩余错误次数更新数码管显示内容。
- 错误处理: 记录密码错误次数,三次错误后锁定系统,蜂鸣器报警。
- 密码修改: 通过按键"A"进入密码修改模式,直接输入4位新密码更新系统密码。
电路设计
- 矩阵键盘接口: 矩阵键盘的行线和列线分别连接到单片机的IO口,通过设置行线和检测列线电平变化来识别按键。
- 数码管接口: 数码管的段选信号连接到单片机的一个端口,位选信号通过NPN三极管驱动,由单片机的另一组端口控制。
- LED与蜂鸣器接口: LED和蜂鸣器分别通过限流电阻连接到单片机的IO口,通过控制IO口电平实现开关控制。
程序设计
键盘扫描函数
c
int getKeyBoardValue(void)
{
// 键盘扫描代码,返回按键值
}
显示函数
c
void display_pwd(char *pwdptr, unsigned char length)
{
// 根据输入的密码和剩余错误次数更新数码管显示内容
}
主程序
c
int main(void)
{
// 系统初始化
// 主循环,处理键盘输入、密码比对、数码管显示等逻辑
}
实验步骤
- 连接硬件电路,完成矩阵键盘、数码管、LED、蜂鸣器的连接。
- 编写并烧录程序到ATMEGA16单片机。
- 使用Proteus仿真,测试系统功能,验证各项功能是否正确实现。
实验结果
- 输入密码,数码管正确显示输入的数字。
- 密码输入正确,LED指示灯点亮。
- 密码错误三次后,蜂鸣器报警,系统锁定。
- 按键"A"可以进入密码修改模式,重新设置系统密码。
- 独立数码管显示剩余错误次数,错误三次后锁定输入。
总结
本实验通过设计和实现一个基于ATMEGA16单片机的数码管密码锁系统,掌握了矩阵键盘输入、数码管显示、LED和蜂鸣器控制等技术,系统功能完善,达到了预期的实验目标。在实际应用中,该设计可以进一步优化,例如增加密码保护机制,增强系统安全性。
资源
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2