【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
相关推荐
IT B业生10 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨10 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生11 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
海绵波波10713 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫13 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
stm 学习ing14 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库
w微信1501350781215 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
北京迅为16 小时前
【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十八章 Qt控制硬件
linux·stm32·单片机·嵌入式硬件
田三番19 小时前
使用 vscode 简单配置 ESP32 连接 Wi-Fi 每日定时发送 HTTP 和 HTTPS 请求
单片机·物联网·http·https·嵌入式·esp32·sntp
lucy1530275107919 小时前
【青牛科技】GC2803:白色家电与安防领域中 ULN2803 的卓越替代者
科技·单片机·智能家居·能源·安防·开关电源·白色家电