【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
相关推荐
Be for thing16 小时前
【嵌入式成长10】STC89C51蜂鸣器|有源/无源蜂鸣器区分、三极管驱动、定时器播放音乐实战
单片机·嵌入式硬件·学习
郎哥编程课堂17 小时前
单片机零基础训练营第2天:嵌入式开发常用的三种进制
单片机·嵌入式硬件
LCG元17 小时前
STM32 DAC+DMA+定时器触发生成任意波形:数据对齐陷阱、输出缓冲器选型与频率精度实测
stm32·单片机·嵌入式硬件
LuminousCPP18 小时前
嵌入式-51单片机入门(三)-数码管驱动:从单管点亮、多位扫描到动态刷新与消隐原理
笔记·单片机·嵌入式硬件·51单片机
小柯博客18 小时前
01 · 点亮 STM32MP25 的硬件视频编解码:VPU 与那些“安静“的坑
c语言·笔记·stm32·单片机·嵌入式硬件·嵌入式·视频编解码
电化学仪器白超19 小时前
梅特勒-托利多自动滴定管产品线全览
网络·python·单片机
SUNNYSPY00119 小时前
30N06NF-ASEMI高耐压功率器件选型30N06NF
单片机
恒锐丰小瑞1 天前
率能SS8841T 40V/2.5A/双通道H桥驱动芯片,PWM控制接口与低导通电阻(350mΩ),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·机器人
zcmodeltech1 天前
钢铁冶金沙盘模型控制系统设计与实现:高炉-连铸-热轧多工序联动方案
分布式·stm32·单片机·嵌入式硬件·交互
徽京人1 天前
VS Code 接入Esp 32步骤
vscode·单片机·嵌入式硬件