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

2023-10-26

功能:本实例是基于51单片机的电子密码锁,主要硬件由51单片机最小系统,LCD1602液晶屏电路,继电器控制电路,AT24C02存储电路,LED指示灯电路,矩阵按键电路构成。
1.系统采用LCD1602液晶屏作为显示屏,第一行电子锁的状态,第二行显示输入密码的状态。
2.系统采用AT24C02芯片用于存储设置的密码,具有掉电保存功能。密码为6个数字,初始密码为123123;
3.当输入密码成功后,单片机开启继电器,电子锁打开;如果输入密码错误,系统记录一次错误的次数;当输入密码累计错误三次后,蜂鸣器报警,电子锁进入锁死的状态,用户无法再输入密码。
原理图:
在这里插入图片描述
Protues仿真:
在这里插入图片描述
程序:

/******************主程序**********************/	   
void main()
{
	static uint value ;
	password_chushifa();
	init_1602(); 
	UartInit();
	time_init();   //定时器初始化
	read_24c02_8(6,0,password);
	beiguan = 0;
	while(1)
	{	
		if(flag_password_cichu1 < 3)     //错误三次按键不能用了
		{
			
			key();					 //按键函数
			
			if(key_can < 20)
			{
				beep =0;
				if(beiguan == 0)
				{
					if(menu_1 == 0)
						key_with();			 //按键处理函数
					xiugai_password();       //修改密码
				}
				else 
					beiguan = 0;
				flag_time = 0;	
				delay_1ms(300);
				beep =1;				
			}
		}

		if(flag_200ms == 1)
		{
			flag_200ms = 0;	 
			if(beiguan == 0)	 //延时关闭锁20秒关闭背光
			{
				flag_time ++;
				if(flag_time >= 5 * 30)	//30秒  
				{
					flag_time = 0;
					beiguan = 1;	//关闭背光
				}
			}
			if(relay == 0)  //延时关闭锁
			{
				flag_guan++;
				if(flag_guan >= 5 * 10)	//10秒  
				{
					flag_guan = 0;
				    relay = 1;   //关闭密码锁
				}
			}else 
				flag_guan = 0;	
			if(flag_password_cichu1 >= 3)
			{
				value ++;	   //200ms
				beep = ~beep;  //蜂鸣器报警
				if(value >= 5 * 60)	//1分钟  
				{
					value = 0;
					beep = 1;
					flag_password_cichu1 = 0;
				}
			}
		}
		delay_1ms(1);  
	}
}

关注公众号-电子应用学习馆,首页回复密码锁获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于51单片机的电子密码锁设计 的相关文章

  • 【异步编程】Promise

    Promise的基本用法 创建promise对象 Promise对象代表一个异步操作 有三种状态 pending 进行中 fulfilled 已成功 和rejected 已失败 Promise构造函数接受一个函数作为参数 该函数的两个参数分
  • Linux基础命令-正则表达式和通配符

    Linux基础命令 正则表达式和通配符 正则表达式和通配符 一 正则表达式 1 正则表达式概念 2 字符匹配 3 匹配次数 4 位置锚定 5 分组 6 后向引用 7 扩展正则表达式 二 通配符 1 通配符 2 Shell常见通配符 3 sh
  • python中类的self的含义

    import torch 省略部分代码 网络模型 预测部分 class Net1 def init self input test self inputn test scaler1 transform input test self inp
  • 排序算法之快速排序及其C语言代码实现

    概述 快速排序 Quicksort 是对冒泡排序的一种改进 快速排序由C A R Hoare在1962年提出 它的基本思想是 通过一趟排序将要排序的数据分割成独立的两部分 其中一部分的所有数据都比另外一部分的所有数据都要小 然后再按此方法对

随机推荐

  • IDA工具安装、分享

    往期推荐 ARM处理器寻址方式 ARM指令集 ARM汇编语言程序结构 Android与ARM处理器 IDA工具被称之为是世界顶级的交互汇编 掌握IDA工具界面上的快捷功能 导航条主界面功能以及汇编窗口常用快捷键的使用 实战分析 了解ARM指
  • 接口一定要实现序列化Serializable吗?

    背景 最近在做项目的过程中 发现一个问题 我们服务之间调用的feign接口及对外提供的接口 里面的对象都实现了序列化 但是以前我们的对外接不写序列化 也没有啥问题 在这里的时候 就有点疑惑 1 为什么要进行序列化 2 每个实体bean都必须
  • Linux内核Backlog笔记

    一 listen方法传入的backlog参数 net core somaxconn 这个参数具体意义 先看看Linux Socket的listen解释 man listen include
  • C++报错类型elemType classType::member is protected within this context的解决思路

    C 报错类型elemType classType member is protected within this context的解决思路 问题背景 在对象类尝试增加友元函数 什么是友元函数 在类中增加友元类 问题背景 在查看 lt lt
  • yolo算法

    YOLO系列算法是一类典型的one stage目标检测算法 其利用anchor box将分类与目标定位的回归问题结合起来 从而做到了高效 灵活和泛化性能好 所以在工业界也十分受欢迎 接下来我们介绍YOLO 系列算法 1 yolo算法 Yol
  • 【VMware】虚拟机不能全屏的解决方法

    之前装了vmware workstation 8 最近装上新的ubuntu发现不能全屏 网上搜索后发现是因为没有安装vmware tools 现在就将本人安装vmware tools的过程介绍如下 1 加载vmwaretools 1 如下图
  • SQL语句中的in/exist/NOT IN/NOT EXIST的联系与区别

    IN EXIST NOT IN NOT EXIST的效率比较 由于使用使用not in 进行查询时 不会使用索引 所以not in 在任何情况下 效率都是最差的 而not exist和 exist两者效率是一致的 接下来主要辨析IN和EXI
  • DAMA学习笔记

    第1章 数据管理 1 1 引言 1 数据管理 为了实现数据价值 制定计划 制度并执行 监督 2 数据管理专业人员 技术人员 数据库管理员 网络管理员 程序员 和业务人员 数据管理专员 数据策略师 首席数据官 1 1 1 业务驱动因素 信息和
  • C++ Template Class List

    转载请注明 http blog csdn net c602273091 article details 50717999 Introduction STL STL Standard Template Library 标准模板库 是惠普实验室
  • 时序分析 30 金融资产预测 - 蒙特卡洛模拟

    金融资产预测 蒙特卡洛模拟 商业经营活动中经常需要预测其收入 成本和利润 企业中的金融团队很可能会被要求构建金融模型进行场景分析 例如在不同的假设的情况下分析最好的情况 正常情况和最差的情况 这样做的目的主要是为管理层提供在不同的市场情况下
  • Overleaf latex绘制三线表

    在 begin document 前加入以下内容 usepackage array 需要用到该宏包 usepackage footnote makesavenoteenv tabular 示例 begin table htbp captio
  • Windows向日葵连接Ubuntu时“连接已断开”解决方案

    环境 控制端 Windows10 系统 向日葵版本12 5 1 44969 被控端 Ubuntu20 04 系统 默认gdm3桌面 向日葵版本11 0 0 36662 问题描述 使用windows端向日葵远程连接ubuntu主机时出现 连接
  • 【springboot】 整合 jasypt 配置信息加密

    项目集成jasypt的方式 引入jasypt spring boot加密组件 通过jasypt spring boot这个开箱即用的加密组件来引入Jasypt这个强大的加密库 方式一 在Springboot应用程序中 如果使用了 Sprin
  • 2020最新版Python学习路线图--Python基础重点知识

    Python学习路线图的第一阶段Python基础的学习 Python学习这一阶段的学习目标是掌握Python基础语法 具备基础的编程能力 建立起Python学习编程思维以及面向对象程序设计思想 能够熟练使用Python技术完成针对小问题的程
  • zipkin学习--07--Springboot 集成 Zipkin--持久化到数据库

    一 介绍 Zipkin目前只支持mysql数据库 只需要修改 Zipkin服务端 二 总体结构 代码位置 https gitee com DanShenGuiZu learnDemo tree master zipkin learn 2 1
  • keycloak单点登录(浙政钉2.0扫码、手机号验证码登录)

    写在前面 本篇博客只针对前端代码实现 keycloak配置什么的 自己和后端或者运维联调吧 说实在的 因为不熟悉keycloak代码的逻辑 再加上时间紧 所以搞了一些很多骚操作 登录这些前端代码是写在keycloak项目里的 文件是 ftl
  • 用JS jquery取float型小数点后两位

    用JS jquery取float型小数点后两位1 最笨的办法 我就怎么干的 function get var s 22 127456 var str s substring 0 s indexOf 3 alert str 2 正则表达式效果
  • 【机器学习】奇异值分解

    奇异值分解 1 概述 奇异值分解 singular value decomposition SVD 是一种矩阵因子分解方法 是线性代数的概念 但在统计学习中被广泛使用 奇异值分解可以被概括为能够将任意一个 m n m times n m n
  • FileUtil.class.getClassLoader().getResource()返回空值null:解决办法

    String path FileUtil class getClassLoader getResource resources table xml 其中FileUtil是我自定义的工具类 之前的项目中通过FileUtil class get
  • 基于51单片机的电子密码锁设计

    功能 本实例是基于51单片机的电子密码锁 主要硬件由51单片机最小系统 LCD1602液晶屏电路 继电器控制电路 AT24C02存储电路 LED指示灯电路 矩阵按键电路构成 1 系统采用LCD1602液晶屏作为显示屏 第一行电子锁的状态 第