基于51单片机密码锁—六位密码LCD1602显示

基于51单片机密码锁设计

(仿真+程序+设计报告)

功能介绍

具体功能:

1.密码为六位数字,有键按下,LCD1602就会显示出字符 “*”;

2.当用户键入正确密码后,再按确认键,便会开锁;

3.数字与数字之间输入的间隔时间为最长30秒;

4.当用户键入错误密码时,系统就会报警,由扬声器发出报警声,连续三次错误就会被锁定;

​演示视频:

基于51单片机密码锁—六位密码LCD1602显示 

添加图片注释,不超过 140 字(可选)

程序

/*******************************
*
*	 液晶字符显示函数
*
********************************************/
#include <AT89X52.h>
#include "液晶.h"
#include "function.h"
#include "fun_char.h"
#define uchar unsigned char 
#define uint unsigned int 
extern uchar mydata[6];
extern uchar testdata[6];
uchar code errorchar[]="PASSWORDERROR";
uchar code differentchar[]="it'sdifferent";
uchar code againchar[]="INPUTAGAIN!";
uchar code okchar[]="PASSWORDOK!";
uchar code lockchar[]="KEYISLOCK";
uchar code resetchar[]="NEWPASSWORD";
uchar code initchar[]="INPUTPASSWORD";
/*******************************************
*函数名称:delayms( )  延时函数
*函数作用:延时时间 t ms*********************************************/	
void delayms(uint t)//
{uint i,j;for(i=0;i<t;i++)for(j=0;j<110;j++);
}
/*******************************************
*函数名称:init_char( )	 初始化字符显示
*函数作用:系统启动后,初始化字符显示,并读取密码值
*********************************************/	
void init_char() reentrant
{uchar i;lcd_wcmd(0x01);//首先要清屏delayms(10);for(i=0;i<6;i++){mydata[i]=0;}/*// 非常重要。。。。忘记密码,打开这个地方,系统会重新设置初始密码。。012345for(i=0;i<6;i++)	 //	这个部分是向存储器中写密码的,也就是如果你忘记密码了,可以通过这个地方写入新的密码{testdata[i]=i;//初始密码为012345}delayms(10);ISendStr(AT24C02,0, &testdata[0],6); //读取	默认密码已经保存了,全为000,000delayms(10);  for(i=0;i<6;i++){testdata[i]=0;//初始密码为,012345}	*///初始化字符	 for(i=0;i<13;i++){if(i<5){lcd_pos(i+2);}else{ 	   lcd_pos(i+3);}lcd_wdat(*(initchar+i));}//INPUT PASSWORDdelayms(10); IRcvStr(AT24C02,0, &testdata[0],6); //读取	默认密码已经保存了,全为000,000delayms(10);}
/*******************************************
*函数名称:error_char( )	 错误提示字符显示
*函数作用:当输入的密码与存储器中的密码不一致时,提示报错
********************************************/
void error_char()
{uchar i=0;lcd_wcmd(0x01);//首先要清屏delayms(100);for(i=0;i<13;i++){if(i<8){lcd_pos(i+1);}else{lcd_pos(i+2);}lcd_wdat(*(errorchar+i));}
}
/*******************************************
*函数名称:different_char( )	密码不同提示字符显示
*函数作用:当设置密码时,如果两次输入的通过,则提示输入字符不同
*********************************************/	
void different_char()
{uchar i=0;lcd_wcmd(0x01);//首先要清屏delayms(100);for(i=0;i<13;i++){if(i<4){lcd_pos(i+1);}else{lcd_pos(i+2);}lcd_wdat(*(differentchar+i));} 
}
/*******************************************
*函数名称:again_char( )	再次输入密码
*函数作用:当设置密码时,第一次输入密码后,提示再次输入密码
*********************************************/	
void again_char()
{uchar i=0;lcd_wcmd(0x01);//首先要清屏delayms(100);for(i=0;i<11;i++){if(i<5){lcd_pos(i+2);}else{ 	   lcd_pos(i+3);}lcd_wdat(*(againchar+i));}}
/*******************************************
*函数名称:ok_char( )	输入密码正确提示函数
*函数作用:输入密码正确,提示PASSWORD OK
*********************************************/	
void ok_char()
{uchar i=0;lcd_wcmd(0x01);//首先要清屏delayms(100);for(i=0;i<11;i++){if(i<8){lcd_pos(i+2);}else{lcd_pos(i+3);}lcd_wdat(*(okchar+i));}
}
/*******************************************
*函数名称:lock_char( )	  系统锁定提示字符
*函数作用:当输入密码错误次数达到3次时,开始锁键盘
*********************************************/	
void lock_char()
{uchar i=0;lcd_wcmd(0x01);//首先要清屏delayms(100);for(i=0;i<9;i++){if(i<3){lcd_pos(i+3);}else if(i<5){lcd_pos(i+4);}else{lcd_pos(i+5);}lcd_wdat(*(lockchar+i));}
}
/*******************************************
*函数名称:reset_char( )	设定新的密码
*函数作用:当设定新的密码时,提示NEW PASSWORD
*********************************************/	
void reset_char()
{uchar i=0;lcd_wcmd(0x01);//首先要清屏delayms(100);for(i=0;i<11;i++)//这里出现了问题的{if(i<3){lcd_pos(i+2);}else{lcd_pos(i+3);}lcd_wdat(*(resetchar+i)); }
}	

硬件设计

使用元器件:

单片机:AT89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

添加图片注释,不超过 140 字(可选)

流程图:

 

设计资料

01仿真图

本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用Keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计报告

五千字设计报告,具体如下!

添加图片注释,不超过 140 字(可选)

04设计资料

        资料获取请关注同名公众号,全部资料包括程序(含注释)、仿真源文件 、设计报告、流程图等。具体内容如下,全网最全! !

 

可以关注下方公众号!

点赞分享一起学习成长。

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

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

相关文章

是时候系统性的的学习那些开发中必备的软件了!

大家好&#xff0c;我是 王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 最近小组内心来了两个实习生&#xff0c;各方面都很不错&#xff0c;基础知识扎实&#xff0c;勤奋好学&#xff08;卷&…

记一次 APK 逆向动静调试 + so 动态链接库分析

0x00 前言&#xff1a; 好久没有做过安卓逆向了&#xff0c;最近重新系统地学习了安卓逆向技术。找到了一道较为典型的逆向分析题来练手&#xff0c;以锻炼动静态分析和动态链接库分析的基本能力。在这里记录基本的分析流程手法。 0x01 逆向分析&#xff1a; 一、使用 Genym…

IPython最简洁方便的Python语法测试工具

前言和需求 相信不少人使用JS时&#xff0c;最常用的快捷键是F12。网页调试&#xff0c;不仅可以调试我们的前端页面&#xff0c;对于多数后端JS程序员来讲&#xff0c;我们有个啥语法不确定了&#xff0c;直接开个网页F12确认一下就行了。甚至写了个方法&#xff0c;不确定对…

springboot + Vue前后端项目(第十九记)

项目实战第十九记 写在前面1. redis安装(windows安装)1.1 获取软件链接地址&#xff1a;1.2 启动redis1.3 测试是否启动成功1.4 通过 Another Redis DeskTop软件可视化查看redis 2. SpringBoot集成redis2.1 引入依赖2.2 注入RedisTemplate2.3 使用redis2.4 redis更新2.5 redis使…

【自然语言处理系列】掌握jieba分词器:从基础到实战,深入文本分析与词云图展示

本文旨在全面介绍jieba分词器的功能与应用&#xff0c;从分词器的基本情况入手&#xff0c;逐步解析全模式与精确模式的不同应用场景。文章进一步指导读者如何通过添加自定义词典优化分词效果&#xff0c;以及如何利用jieba分词器进行关键词抽取和词性标注&#xff0c;为后续的…

美创携手浙江长征职业技术学院,共建智云数据安全大师工作室

6月24日&#xff0c;“美创科技浙江长征职业技术学院智云数据安全大师工作室揭牌暨中国特色学徒制第四期云数据安全和智能运维人才选拔培养启动仪式”在长征职业技术学院隆重举行。 浙江长征职业技术学院计算机与信息技术学院院长梅灿华、计算机与信息技术学院学工办副主任华春…

使用 frida hook Android app

Frida&#xff1a; 一种基于动态插装&#xff08;dynamic instrumentation&#xff09;技术的工具包&#xff0c;它主要是为测试人员、开发人员和逆向工程爱好者创建&#xff0c;在目标程序运行时&#xff0c;允许用户将 JavaScript代码注入其中&#xff0c;实现动态修改和调试…

ONLYOFFICE8.1版本桌面编辑器的测评

首先我们先出示一下我们所测评官网的链接&#xff1a; ONLYOFFICE官网链接&#xff1a;ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 我们这款ONLYOFFICE8.1版本有这一下优点 1.解决PDF痛点 ONLYOFFICE在PDF编辑方面支持高亮显示、下划线和删除线、添加批注等功能&#…

【2024最新版】Eclipse安装配置全攻略:图文详解

目录 1. Eclipse介绍1.1 背景1.2 主要特点和功能1.3 版本发布1.4 优势与劣势 2. 下载Eclipse3. 安装Eclipse4. 启动Eclipse 1. Eclipse介绍 Eclipse是一个开源的、基于Java的可扩展开发平台&#xff0c;主要用于Java开发者&#xff0c;但也支持其他语言如C/C、PHP、Python等。…

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF&#xff0c;libc版本2.31&#xff0c;经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…

ansible自动化运维,(2)ansible-playbook

三种常见的数据格式&#xff1a; XML&#xff1a;可扩展标记语言&#xff0c;用于数据交换和配置 JSON&#xff1a;对象标记法&#xff0c;主要用来数据交换或配置&#xff0c;不支持注释 YAML&#xff1a;不是一种标记语言&#xff0c;主要用来配置&#xff0c;大小写敏感&…

科技未来·无限可能“2024世亚智博会”

随着科技的飞速发展&#xff0c;人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力&#xff0c;不仅极大地推动了经济和社会的发展&#xff0c;更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域&#xff0c;其创新和应…

【ZYNQ】VDMA 的介绍

AXI VDMA 是 Xilinx 官方提供的高带宽视频 DMA IP&#xff0c;用于实现 AXI4-Stream 视频数据流与 AXI4 接口数据的转换&#xff0c;同时提供帧缓存与帧同步控制功能。本文主要介绍 AXI VDMA 的基本结构与原理&#xff0c;并简要介绍 VDMA 的配置与使用方法。 目录 1 VDMA 简介…

egg代码生成器

今天给大家分享一下egg的代码生成器&#xff0c;这个其实原理很简单&#xff0c;说白了就是用到了nodejs的一个文件io的操作&#xff0c;通过一系列配置参数解析然后生成一个很长的字符串&#xff0c;写入到文件中&#xff0c;最后导出到我们指定的文件夹。 前提概要 为什么我…

web前端——VUE

1.什么是框架&#xff1f; ①概述 框架结构就是基本功能&#xff0c;把很多基础功能已经实现了、封装了。在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率 ②前端框架 javaScript是原生的 vue.js&#xff1a; 是一个js框架&…

最新解决docker镜像无法下载问题

1.增加或修改daemon.json文件 ​ cd /etc/dockervi daemon.json{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }2.重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 3.验证 下载https://txodoo.cn/blog/11/d…

双指针dd d df f

像二分这样的算法&#xff0c;我们甚至可以不用管&#xff0c;直接在问题空间之内搜索&#xff0c;但是双指针也非常好用&#xff0c;帮助我们来减少枚举对象&#xff0c;我们来总结一下这经典的三个题目&#xff1a; 最长上升不重复子序列活动 - AcWings 首先一定要写…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统&#xff0c;涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备&#xff0c;包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等&#xff0c;通过模块化设计实现了对电路板的…

shell中的函数

统计家目录下.c文件的个数 终端输入一个.sh文件&#xff0c;判断文件是否由可执行权限&#xff0c;如果有可执行权限运行脚本&#xff0c;没有可执行权限添加可执行权限后&#xff0c;再运行脚本 写一个函数&#xff0c;输出当前用户uid和gid&#xff0c;并使用变量接收结果 终…

【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型&#xff08;LLM&#xff09;工作原理的工具&#xff0c;旨在增加这些复杂系统的透明度。它提供了一个交互式界面&#xff0c;用户可以通过它观察、分析模型对特定输入&#xff08;prompts&#xff09;的反应…