当前位置: 首页 > news >正文

基于单片机的电子密码锁设计

1.设计任务

利用AT89C51单片机为核心控制元件,设计一个简易的电子密码锁,可设置四位密码,输入错误三次,报警灯亮起(红灯亮起),输入正确,绿灯闪烁三次。可通过LCD显示屏查看密码,并可通过特殊键位清除密码。

本系统由AT89C51单片机系统(主要是AT89C51单片机最小系统)、4X4矩阵键盘、LCD1602显示和报警系统等组成。

  1. 利用AT89C51单片机设计四位电子密码锁。
  2. 通过LCD显示查看已输入的密码。
  3. 可通过特殊按键清除密码。
  4. 密码输入正确后绿灯闪烁三次。
  5. 密码输错三次会有报警提示(报警红灯亮起)。

2. 设计要求

2.1系统方案论证

根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。

2.2系统硬件电路设计

根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。

2.3软件设计

根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"unsigned char N=0;
unsigned char KeyNum;
unsigned int Password,Count,Num_Val;sbit Led_G = P2^0;
sbit Led_R = P2^1;void main()
{Led_G = 1;Led_R = 1;LCD_Init();LCD_ShowString(1,1,"Password:");while(1){KeyNum=MatrixKey();if(KeyNum){if(KeyNum!=4&&KeyNum!=8&&KeyNum!=12&&KeyNum!=13&&KeyNum!=15&&KeyNum!=16)	//如果S1~S10按键按下,输入密码{switch(KeyNum){case 1: Num_Val=1;break;case 2: Num_Val=2;break;case 3: Num_Val=3;break;case 5: Num_Val=4;break;case 6: Num_Val=5;break;case 7: Num_Val=6;break;case 9: Num_Val=7;break;case 10:Num_Val=8;break;case 11:Num_Val=9;break;case 14:Num_Val=0;break;}if(Count<4)	//如果输入次数小于4{Password=Password*10;				//密码左移一位Password=Password+Num_Val%10;		//获取一位密码Count++;	//计次加一}LCD_ShowNum(2,1,Password,4);	//更新显示}if(KeyNum==15)	//如果S11按键按下,确认{if(Password==2345)	//如果密码等于正确密码{LCD_ShowString(1,14,"OK ");	//显示OKLed_G = 0;Delay(300);Led_G = 1;Delay(300);Led_G = 0;Delay(300);Led_G = 1;Delay(300);Led_G = 0;Delay(300);Led_G = 1;Delay(300);Password=0;		//密码清零Count=0;		//计次清零LCD_ShowNum(2,1,Password,4);	//更新显示LCD_ShowString(1,14,"   ");}else				//否则{N++;if(N == 3){Led_R=0;Delay(2000);Led_R=1;N=0;}LCD_ShowString(1,14,"ERR");	//显示ERRPassword=0;		//密码清零Count=0;		//计次清零LCD_ShowNum(2,1,Password,4);	//更新显示Delay(1000);LCD_ShowString(1,14,"   ");}}if(KeyNum==13)	//如果S12按键按下,取消{Password=0;		//密码清零Count=0;		//计次清零LCD_ShowNum(2,1,Password,4);	//更新显示}}}
}

完整代码点开链接私信获取。

【iBot机器人工作室的个人空间-哔哩哔哩】 https://b23.tv/ryUWVKa

相关文章:

基于单片机的电子密码锁设计

1&#xff0e;设计任务 利用AT89C51单片机为核心控制元件,设计一个简易的电子密码锁&#xff0c;可设置四位密码&#xff0c;输入错误三次&#xff0c;报警灯亮起&#xff08;红灯亮起&#xff09;&#xff0c;输入正确&#xff0c;绿灯闪烁三次。可通过LCD显示屏查看密码&…...

ChatGPT学习笔记

1 ChatGPT架构图 &#xff08;ChatGPT_Diagram.svg来自于【OpenA | Introducing ChatGPT】&#xff09; 2 模型训练 ChatGPT在训练时使用了PPO方法&#xff1b;...

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记 Abstract 一对一&#xff08;o2o&#xff09;标签分配对基于变换器的端到端检测起着关键作用&#xff0c;最近已经被引入到全卷积检测器中&#xff0c;用于端到端密集检测。然而&#xff0c;o2o可能因为…...

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)

项目场景&#xff1a; 最近需要使用Neo4j图数据库&#xff0c;因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像&#xff0c;执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…...

【数据分析 | Numpy】Numpy模块系列指南(一),从设计架构说起

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…...

多人聊天室

多人聊天包 由于要先创建服务面板&#xff0c;接收客户端连接的信息&#xff0c;此代码使用顺序为先启动服务端&#xff0c;在启动客户端&#xff0c;服务端不用关&#xff0c;不然会报错。多运行几次客户端&#xff0c;实现单人聊天 1.创建服务面板 package yiduiy;import j…...

智慧园区可视化综合管理平台建设方案,智能化、数字化才是关键

园区作为城市的基本单元&#xff0c;是经济发展的重要载体。随着我国经济的快速发展&#xff0c;各类工业园区、办公园区等园区的规划建设也越来越多。伴随着互联网新兴技术的发展和应用&#xff0c;智慧园区已成为当今城市规划和社会发展的关注焦点&#xff0c;今天我们来介绍…...

kepler.gl部署在线说明文档

1 概述 1.1 介绍 1、Kepler.gl 是一个强大的开源地理空间分析工具&#xff0c;用于大规模数据集的可视化。它由 Uber 的数据可视化团队开发&#xff0c;并且是基于 Web 技术构建的。Kepler.gl 涉及到以下几个主要技术领域&#xff1a; WebGL: Kepler.gl 通过 WebGL 进行渲染…...

Java程序员,你掌握了多线程吗?

文章目录 01 多线程对于Java的意义02 为什么Java工程师必须掌握多线程03 Java多线程使用方式04 如何学好Java多线程写作末尾 摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流…...

Android 11.0 长按按键切换SIM卡默认移动数据

Android 11.0 长按按键切换SIM卡默认移动数据 近来收到客户需求想要通过长按按键实现切换SIM卡默认移动数据的功能&#xff0c;该功能主要通过长按按键发送广播来实现&#xff0c;具体修改参照如下&#xff1a; 首先创建广播&#xff0c;具体修改参照如下&#xff1a; /vend…...

Kafka集群调优+能力探底

一、前言 我们需要对4个规格的kafka能力进行探底&#xff0c;即其可以承载的最大吞吐&#xff1b;4个规格对应的单节点的配置如下&#xff1a; 标准版&#xff1a; 2C4G 铂金版&#xff1a; 4C8G 专业版&#xff1a; 8C16G 企业版&#xff1a; 16C32G 另外&#xff0c;一般…...

netcore swagger 错误 Failed to load API definition

后端接口报错如下&#xff1a; 前端nswag报错如下&#xff1a; 根据网上查询到的资料说明&#xff0c;说一般swagger这种错误都是控制器里有接口代码异常造成的&#xff0c;通常是接口没有加属性Attribute&#xff0c; 比如[HttpPost("Delete")]、[HttpGet("Del…...

UDP Socket API 的讲解,以及回显服务器客户端的实现

文章目录 UDPDatagramSocktet APIDatagramPacket API UDP 客户端服务器实现 UDP 先来认识一下 UDP 的 socket api&#xff0c;两个核心的类&#xff1a;DatagramSocket、DatagramPacket. DatagramSocktet API 是一个 socket 对象。 什么是 socket&#xff1f; 操作系统&…...

数据结构与算法-D7栈实现及应用

顺序栈 具有顺序表同样的存储结构&#xff0c;由数组定义&#xff0c;配合用数组下标表示的栈顶指针top完成操作 sqstack.h stack_creat stack_push stack_empty stack_full 1、判断栈是否为空 2、top--&#xff0c;取&#xff1a;data[top1] stack_top stack_clear stack_fre…...

蓝桥杯真题:分巧克力(二分法)-Java版

由题目可知,该题的最终结果具有单调性,边长越大,可分蛋糕越少 可以用二分模板的向右找: 整数二分 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int n,k; //n个块蛋糕,k个学生static int N 10…...

c++面试题

1.static的使用 1&#xff09;修饰局部变量&#xff1a;在函数内部使用static修饰局部变量&#xff0c;会使它成为静态局部变量。静态局部变量只会被初始化一次&#xff0c;且只有在第一次调用该函数时才会被初始化&#xff0c;之后每次调用该函数时都会保留上一次的值.从原来…...

高精度加法,减法,乘法,除法(上)(C语言)

前言 加&#xff0c;减&#xff0c;乘&#xff0c;除这些运算我们自然信手捏来&#xff0c;就拿加法来说&#xff0c;我们要用c语言编程算ab的和&#xff0c;只需让sum ab即可&#xff0c;可是这是局限的&#xff0c;我们都知道int的表示的最大值为2147483647&#xff08;32位…...

C++新经典模板与泛型编程:SFINAE特性的信息萃取

用成员函数重载实现is_default_constructible 首先介绍一个C标准库提供的可变参类模板std::is_default_constructible。这个类模板的主要功能是判断一个类的对象是否能被默认构造&#xff08;所谓默认构造&#xff0c;就是构造一个类对象时&#xff0c;不需要给该类的构造函数…...

java单人聊天

服务端 package 单人聊天;import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import…...

nodejs环境安装

node安装 wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v20.8.0/node-v20.8.0-linux-x64.tar.gz tar xf node-v20.8.0-linux-x64.tar.xz -C /usr/local/ ln -s node-v20.8.0-linux-x64 nodevim /etc/profile.d/node.sh export PATH$PATH:/usr/local/node/binnp…...

高校实验室项目如何利用Taotoken的Token Plan套餐控制科研实验成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 高校实验室项目如何利用Taotoken的Token Plan套餐控制科研实验成本 对于高校实验室的科研团队和学生项目组而言&#xff0c;在探索…...

霍夫曼编码:让计算机学会“断舍离“的无损压缩原理,为什么Zip文件能完美还原,而JPEG会失真?霍夫曼用一棵二叉树解决了50年的压缩难题

霍夫曼编码&#xff1a;让计算机学会"断舍离"的无损压缩原理 副标题: 为什么Zip文件能完美还原&#xff0c;而JPEG会失真&#xff1f;霍夫曼用一棵二叉树解决了50年的压缩难题痛点&#xff1a;为什么压缩文件能完美还原&#xff1f; 你用WinRAR压缩了一个Word文档&am…...

硬件入门 + 单片机基础(第14天)综合通信实训

ESP32 物联网结业项目&#xff1a;WiFi MQTT 继电器 温湿度 整合完整版 项目说明 这是物联网综合结业项目&#xff0c;整合了你学过的所有核心技术&#xff1a; WiFi 自动联网 断网重连MQTT 远程控制继电器&#xff08;开关&#xff09;DHT11 温湿度自动上报心跳包 消息…...

设计程序统计城市社区医疗站点接诊数据,优化医疗点位分布,方便居民就近看病,解决就医难问题。

一、实际应用场景描述某城市卫健委希望优化社区卫生服务中心布局&#xff0c;但面临以下现实情况&#xff1a;- 各社区接诊量差异巨大- 部分点位长期排队&#xff0c;部分点位资源闲置- 居民跨区就医成本高- 缺乏基于数据的点位调整依据&#x1f449; 技术目标&#xff1a;用 P…...

在Nodejs后端服务中集成多模型API实现智能客服

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Nodejs后端服务中集成多模型API实现智能客服 构建一个智能客服系统时&#xff0c;开发者常常面临模型选择的两难&#xff1a;既要…...

5分钟掌握XUnity自动翻译器:打破游戏语言障碍的终极指南 [特殊字符]

5分钟掌握XUnity自动翻译器&#xff1a;打破游戏语言障碍的终极指南 &#x1f3ae; 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因语言障碍而错过心仪的游戏大作&#xff1f;XUnity自动翻译器…...

S32K3 Autosar开发环境一站式部署指南

1. S32K3 Autosar开发环境概述 第一次接触S32K3 Autosar开发的朋友可能会被复杂的工具链吓到。其实只要理清思路&#xff0c;整个环境搭建就像组装乐高积木——每个组件都有明确的位置和功能。S32K3是NXP面向汽车电子的明星MCU&#xff0c;而Autosar则是汽车软件开发的行业标准…...

二叉搜索树:高效查找与增删详解

引言在上一篇树结构开篇文章中&#xff0c;我们建立了树的基本概念、二叉树的定义和四种遍历方式。本文将继续深入&#xff0c;讲解二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;——它是最基础的"有组织"二叉树&#xff0c;也是后续学习 AV…...

数字家谱系统架构设计:从关系数据库到可视化交互的完整实现

1. 项目概述&#xff1a;从“家谱”到“数字家谱”的跨越最近在GitHub上看到一个挺有意思的项目&#xff0c;叫qiaoshouqing/familytree。光看名字&#xff0c;你可能会觉得&#xff0c;这不就是个家谱吗&#xff1f;没错&#xff0c;它的核心确实是家谱&#xff0c;但如果你把…...

3分钟解锁iOS激活锁:AppleRa1n离线绕过工具深度解析

3分钟解锁iOS激活锁&#xff1a;AppleRa1n离线绕过工具深度解析 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾经面对一台被激活锁困住的iPhone感到束手无策&#xff1f;AppleRa1n正是为解决…...