基于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,一经查实,立即删除!

相关文章

Cesium中加载geoserver发布的二维地图服务

1.第一步&#xff0c;先引入cesium。 2.进行初始化配置&#xff0c;进行加载显示cesium. 3.使用geoserver进行地图服务发布. 4.发布成功后使用cesium进行加载显示&#xff1a;代码如下图 //加载geoserver发布的wms服务var wmsImageryProvider new Cesium.WebMapServiceImagery…

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

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

最大化互信息Maximizing Mutual Information

最大化互信息&#xff08;Maximizing Mutual Information, MMI&#xff09;是一种用于提高机器学习模型性能的方法&#xff0c;尤其在自然语言处理、计算机视觉和推荐系统等领域。互信息是衡量两个随机变量之间相互依赖程度的指标。MMI方法的目标是通过最大化输入和输出之间的互…

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

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

深入解析京东_item_get接口:技术细节与应用场景

在电商领域&#xff0c;实时、准确的数据对于商家、开发者和消费者都至关重要。京东作为中国领先的电商平台&#xff0c;提供了丰富的API接口供开发者使用&#xff0c;其中JD.item_get接口尤为引人注目。本文将对JD.item_get接口进行深入的技术解析&#xff0c;并探讨其应用场景…

在 PHP 中,如何优化大型项目的性能,特别是在处理高并发请求时?

要优化大型项目的性能&#xff0c;特别是在处理高并发请求时&#xff0c;可以考虑以下几个方面&#xff1a; 使用缓存&#xff1a;通过使用缓存来减轻数据库和计算的压力。可以使用各种缓存技术&#xff0c;如 Memcached 或 Redis&#xff0c;将频繁使用的数据存储在缓存中&…

歌尔气压计SPA06-003在无人机的创新应用

随着科技的不断进步&#xff0c;各类智能设备的功能日益强大&#xff0c;其中气压计作为一种能够测量大气压力的传感器&#xff0c;已被广泛应用于多种领域。歌尔气压计以其高精度、低功耗的特点&#xff0c;在无人机和智能手表上的应用尤为突出&#xff0c;为这两个领域的产品…

Python的ctypes库的使用

ctypes 基本数据类型映射表 ctypes 是 Python 的外部函数库。提供了与 C 兼容的数据类型&#xff0c;并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。下面主要介绍如何使用 ctypes 模块对 C 语言编译的动态链接库要求的数据类型进行封装&am…

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

秋招Java后端开发冲刺——基础篇3

一、Java泛型 Java 1.5中引入的一个新特性&#xff0c;其本质是参数化类型&#xff0c;可以增强代码的可读性以及稳定性。分类 泛型类&#xff1a;在类定义时类名后加&#xff0c;其中T表示泛型泛型接口&#xff1a;与泛型类相似泛型方法&#xff1a;静态泛型方法是没有办法使…

使用 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;大小写敏感&…

Unity太空避障Demo总结

太空避障&#xff1a;主要是实现飞机躲避子弹 面板基类、音乐类、排行榜类、json等等都和上一篇Unity坦克迷宫Demo总结一样&#xff0c;太空避障主要是对四元数的练习和使用 1.选择飞机面板 &#xff08;1&#xff09;通过左右按钮对显示的模型进行切换 &#xff08;2&#xff…

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

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