【TB作品】密码锁,数码管,ATMEGA16单片机,Proteus仿真

4个数码管+1个独立的数码管+键盘

1 键盘输入一个密码后数码管就显示一个密码,再输一个数码管就第二个显示,依次往后推。

2 *号键可以删除之前的一个输入的密码,#号键可以清除所有输入。

3 输入4个后,单片机自动比对密码(无需确认键),密码正确 小灯点亮。

4 密码错误三次后,蜂鸣器响起来。三次后不能进行任何输入,只能重新打开仿真。

5 输入正确一次,即可清空之前有的错误次数。

6 单独的那个数码管显示的就是剩余可犯错次数,犯错3次就不能再次输入了。

7 按键盘的A按键可以修改密码,无需输入原密码,直接按4个密码进去就完成修改。(从简的设计)

实验报告

实验名称

数码管密码锁系统设计与实现

实验目的

  1. 掌握基于ATMEGA16单片机的数码管显示和矩阵键盘输入技术。
  2. 设计并实现一个具有密码输入、验证和错误提示功能的数码管密码锁系统。
  3. 学习蜂鸣器报警和LED指示灯的控制。

实验设备

  1. ATMEGA16单片机
  2. 矩阵键盘
  3. 数码管(4个共阳极数码管+1个独立的数码管)
  4. LED灯
  5. 蜂鸣器
  6. Proteus仿真软件

系统功能

  1. 键盘输入密码,数码管依次显示输入的密码。
  2. "*"键用于删除上一个输入的密码,"#"键用于清除所有输入。
  3. 输入4位密码后自动比对,如果密码正确,点亮指示灯;密码错误三次后,蜂鸣器报警且锁定系统。
  4. 独立数码管显示剩余错误次数,三次错误后系统锁定,无法继续输入。
  5. 按键"A"用于修改密码,无需输入原密码,直接输入新密码完成修改。
  6. 输入正确一次,即可清空之前的错误次数。

系统原理

硬件原理

  1. 矩阵键盘: 采用4行4列的矩阵键盘,通过扫描方式获取按键值。
  2. 数码管显示: 采用共阳极数码管,使用段选信号控制显示内容,位选信号控制具体显示哪个数码管。
  3. LED指示灯: 通过单片机IO口控制,表示密码输入正确。
  4. 蜂鸣器: 通过单片机IO口控制,表示密码错误三次后的报警。
  5. 独立数码管: 显示剩余错误次数。

软件原理

  1. 键盘扫描: 通过行列扫描法检测按键输入,根据按键值查找键盘映射表获取实际按键。
  2. 密码存储与比对: 通过数组存储系统密码和用户输入的密码,输入4位后进行比对。
  3. 数码管显示: 根据输入的密码和剩余错误次数更新数码管显示内容。
  4. 错误处理: 记录密码错误次数,三次错误后锁定系统,蜂鸣器报警。
  5. 密码修改: 通过按键"A"进入密码修改模式,直接输入4位新密码更新系统密码。

电路设计

  1. 矩阵键盘接口: 矩阵键盘的行线和列线分别连接到单片机的IO口,通过设置行线和检测列线电平变化来识别按键。
  2. 数码管接口: 数码管的段选信号连接到单片机的一个端口,位选信号通过NPN三极管驱动,由单片机的另一组端口控制。
  3. LED与蜂鸣器接口: LED和蜂鸣器分别通过限流电阻连接到单片机的IO口,通过控制IO口电平实现开关控制。

程序设计

键盘扫描函数

c 复制代码
int getKeyBoardValue(void)
{
    // 键盘扫描代码,返回按键值
}

显示函数

c 复制代码
void display_pwd(char *pwdptr, unsigned char length)
{
    // 根据输入的密码和剩余错误次数更新数码管显示内容
}

主程序

c 复制代码
int main(void)
{
    // 系统初始化
    // 主循环,处理键盘输入、密码比对、数码管显示等逻辑
}

实验步骤

  1. 连接硬件电路,完成矩阵键盘、数码管、LED、蜂鸣器的连接。
  2. 编写并烧录程序到ATMEGA16单片机。
  3. 使用Proteus仿真,测试系统功能,验证各项功能是否正确实现。

实验结果

  1. 输入密码,数码管正确显示输入的数字。
  2. 密码输入正确,LED指示灯点亮。
  3. 密码错误三次后,蜂鸣器报警,系统锁定。
  4. 按键"A"可以进入密码修改模式,重新设置系统密码。
  5. 独立数码管显示剩余错误次数,错误三次后锁定输入。

总结

本实验通过设计和实现一个基于ATMEGA16单片机的数码管密码锁系统,掌握了矩阵键盘输入、数码管显示、LED和蜂鸣器控制等技术,系统功能完善,达到了预期的实验目标。在实际应用中,该设计可以进一步优化,例如增加密码保护机制,增强系统安全性。

资源

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2
相关推荐
yutian06062 小时前
Keil MDK下载程序后MCU自动重启设置
单片机·嵌入式硬件·keil
析木不会编程4 小时前
【小白51单片机专用教程】protues仿真独立按键控制LED
单片机·嵌入式硬件·51单片机
枯无穷肉8 小时前
stm32制作CAN适配器4--WinUsb的使用
stm32·单片机·嵌入式硬件
不过四级不改名6779 小时前
基于HAL库的stm32的can收发实验
stm32·单片机·嵌入式硬件
嵌入式大圣9 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp
云山工作室9 小时前
基于单片机的视力保护及身姿矫正器设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·毕设
嵌入式-老费9 小时前
基于海思soc的智能产品开发(mcu读保护的设置)
单片机·嵌入式硬件
qq_3975623111 小时前
MPU6050 , 设置内部低通滤波器,对于输出数据的影响。(简单实验)
单片机
艺术家天选12 小时前
STM32点亮LED灯
stm32·单片机·嵌入式硬件
向阳逐梦12 小时前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人