【TB作品】密码锁,ATMEGA128单片机,Proteus仿真

news2024/7/2 20:44:26

题目 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矩阵键盘和继电器来完成。这个密码锁的功能包括密码输入、验证、修改以及门开启次数的记录和显示。此外,密码锁还需要在掉电后保持密码不丢失。下面是实现这个密码锁的具体思路和功能介绍:

功能要求

  1. 密码输入与验证

    • 使用4x4矩阵键盘输入6位数字密码。
    • 初始系统密码为123456。
    • 输入正确密码后,继电器开启,门开启次数增加1,LCD1602显示门已开启。
  2. 错误处理

    • 每次输入错误密码,记录错误次数。
    • 连续三次输入错误密码后,密码锁禁止输入10秒钟,并在LCD1602上显示提示信息。
    • 10秒后清空错误次数,并允许重新输入密码。
  3. 密码修改

    • 按键“b”进入修改密码模式:输入原始密码后再输入新密码。
    • 新密码输入完成后返回主界面,并在EEPROM中保存新密码,保证掉电不丢失。
  4. 门开启次数查询与清除

    • 按键“c”查询门开启次数,LCD1602显示当前门开启次数。
    • 按键“d”清除门开启次数,LCD1602显示门开启次数已清除。
  5. 继电器控制

    • 输入正确密码后,继电器开启,连接的指示灯亮起。
    • 按键“a”关闭继电器,指示灯熄灭。

硬件连接

  1. LCD1602显示屏

    • 数据口连接到单片机的一个I/O口,用于显示密码输入状态、错误提示、门开启次数等信息。
  2. 4x4矩阵键盘

    • 用于输入密码及操作命令,通过单片机扫描矩阵键盘得到按键值。
  3. 继电器

    • 继电器控制电路连接到单片机的一个输出端口,用于控制门锁的开关状态。
  4. EEPROM

    • 用于存储系统密码,保证掉电后密码不丢失。

软件实现

  1. 延时函数

    • 实现精确的延时函数,用于键盘扫描和LCD1602显示的时间控制。
  2. LCD1602显示函数

    • 初始化LCD1602显示屏,并实现清屏、写字符、写字符串等功能。
  3. 矩阵键盘扫描函数

    • 实现逐行扫描方式,检测键盘按键的状态,并返回按键值。
  4. EEPROM读写函数

    • 实现EEPROM的读写操作,用于存储和读取系统密码。
  5. 主程序逻辑

    • 初始化系统,读取EEPROM中的密码,设置初始显示状态。
    • 实时扫描键盘输入,根据输入值进行密码验证、错误处理、密码修改、门开启次数查询与清除、继电器控制等操作。

程序逻辑框架

  1. 初始化

    • 初始化LCD1602显示屏、矩阵键盘、继电器控制端口、EEPROM读取初始密码。
  2. 主循环

    • 循环检测键盘输入,判断当前输入状态(正常输入、修改密码、查询次数)。
    • 根据键盘输入值进行相应操作,包括密码验证、错误提示、密码修改、门开启次数显示与清除。
  3. 密码验证

    • 对比输入密码与系统密码,验证通过则开启继电器,记录门开启次数;验证失败则增加错误次数并提示错误信息。
  4. 错误处理

    • 三次连续输入错误密码后,锁定输入10秒钟,并在LCD1602上显示锁定提示。
  5. 密码修改

    • 按键“b”进入修改密码模式,输入原密码后输入新密码,保存新密码到EEPROM。
  6. 门开启次数查询与清除

    • 按键“c”查询门开启次数,按键“d”清除门开启次数,并在LCD1602上显示操作结果。

通过上述硬件和软件的结合,可以实现一个功能完整的密码锁系统,满足密码输入、验证、修改,错误处理和门开启次数管理等需求。

资源:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java web应用性能分析之【prometheus监控K8s指标说明】

常规k8s的监控指标 单独 1、集群维度 集群状态集群节点数节点状态(正常、不可达、未知)节点的资源使用率(CPU、内存、IO等) 2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控…

springcloud第4季 seata报could not find any implementation for class

一 问题说明 1.1 描述 在使用seata2.0alibaba-cloud 2022.0.0.0-RC2nacos 2.2.3 模拟下订单分布式事务场景,出现如下问题:java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 查看服务端:java.util.ServiceCo…

【每日刷题】Day78

【每日刷题】Day78 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1608. 特殊数组的特征值 - 力扣(LeetCode) 2. 1385. 两个数组间的距离值 - …

5.x86游戏实战-CE定位基地址

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:4.x86游戏实战-人物状态标志位 上一个内容通过CE未知的初始值、未变动的数值、…

在我们的大数据平台(XSailbaot)上进行企业级数据建模的思路

1. 背景 笔者所在的公司是差不多二十年前搞CIM(公共信息模型的)起家的。当时公司的前辈搞了基于CIS协议的模型服务器、数据服务器、模式编辑器等,形成了一套基于公共信息模型建模的平台系统。其中可视化建模,建好了模式类以后&am…

《昇思25天学习打卡营第17天 | 昇思MindSporeCycleGAN图像风格迁移互换》

17天 本节学习了CycleGAN图像风格迁移互换。 CycleGAN即循环对抗生成网络,该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。该模型一个重要应用领域是域迁移,可以通俗地理解为图像风格迁移。其实在 CycleGAN 之前&a…

力扣每日一题 6/30 记忆化搜索/动态规划

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 494.目标和【中等】 题目: 给你一个非负整数数组 nums 和一个…

⭐ UI自动化工具轻松实现微信消息提醒 ⚡

🌿🌿🌿🌿🌿🌿 演示效果 🌿🌿🌿🌿🌿🌿 😅😅😅😅😅😅 Python安装…

nvm安装以及idea下vue启动项目过程和注意事项

注意1:nvm版本不要太低,1.1.7会出现下面这个问题,建议1.1.10及其以上版本 然后安装这个教程安装nvm和node.js 链接: nvm安装教程(一篇文章所有问题全搞定,非常详细) 注意2:上面的教程有一步骤…

魔行观察-烤匠麻辣烤鱼-开关店监测-时间段:2011年1月 至 2024年6月

今日监测对象:烤匠麻辣烤鱼,监测时间段:2011年1月 至 2024年6月 本文用到数据源获取地址 魔行观察http://www.wmomo.com/ 品牌介绍: 2013年,第一家烤匠在成都蓝色加勒比广场开业,随后几年成都国金中心店…

《昇思25天学习打卡营第15天 | 昇思MindSpore基于MindSpore的红酒分类实验》

15天 本节学了通过MindSpore的完成红酒分类。 1.K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,是机器学习最基础的算法之一。 1.1分类问题 1.2回归问题 1.3距离的定义 2.数据处理 2.1 数据准备 2.2 数据读取与处…

Spark join数据倾斜调优

Spark中常见的两种数据倾斜现象如下 stage部分task执行特别慢 一般情况下是某个task处理的数据量远大于其他task处理的数据量,当然也不排除是程序代码没有冗余,异常数据导致程序运行异常。 作业重试多次某几个task总会失败 常见的退出码143、53、137…

【C语言 || 数据结构】快速排序

文章目录 前言快速排序1.快排的前后指针法1.1快排的前后指针法的代码实现1.2快排的前后指针法的注意事项 2.快排的挖坑法2.1快排的挖坑法的代码实现2.2快排的挖坑法的注意事项 3.快排的hoare法3.1快排的hoare法的代码实现3.2快排的hoare法的注意事项 4快排的优化4.1快排的三数取…

恢复机制-数据库系统中的故障(事务故障、系统故障、介质故障)、一致性错误、窃取但不强制的缓冲区管理策略

一、引言 数据库管理系统DBMS的事务处理技术实现的一个主要功能部分就是恢复机制,恢复机制完成的功能就是对发生故障后系统中事务的更新结果进行数据恢复,保证事务的原子性和持久性,从而进一步保证数据库的一致性。 数据库系统与其他计算机系…

办公开源利器:ONLYOFFICE

目录 0、引子:一、ONLYOFFICE协作空间1.可集成至Web应用程序2.多种协作方式3.快捷的AI助手4.公共房间:连接第三方存储空间5.集成6.开发人员工具7.用插件拓展功能 二、新增功能1.功能全面的PDF编辑2.PDF 表单3.文本文档编辑器4.电子表格编辑器 三、结语 0…

EasyExcel数据导入

前言: 我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。 看上了网页信息,怎么抓到&#x…

【操作系统】进程管理——进程的概念、组成和特征(个人笔记)

学习日期:2024.6.29 内容摘要:进程的基本概念和特征、状态和转换 进程的概念 程序与进程 程序:是静态的,是存放在磁盘里的可执行文件,就是一系列的指令集合 进程(Process):是动态…

一文带你了解乐观锁和悲观锁的本质区别!

文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题&#xff0…

primeflex overflow样式类相关的用法和案例

文档地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…