单片机LCD1602

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、LCD1602是什么?
  • 二、LCD1602 原理
  • 三、显示一个字符
  • 四、如何显示四位数
  • 五、参考历程
  • 六、封装成一个显示 字符和一个显示任意四位数的函数
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

一直用LED和数码管显示,LED显示数据不够明显,数码管需要动态扫描,都不方便,那还有什么更方便的显示模块的。最简单的就是LCD1602。


提示:以下是本篇文章正文内容,下面案例可供参考

一、LCD1602是什么?

LCD1602是一种字符型液晶显示模块,通常由字符型液晶显示屏、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。

二、LCD1602 原理

在这里插入图片描述

三、显示一个字符

#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;

在这里插入图片描述

在这里插入图片描述

四、如何显示四位数

在这里插入图片描述

在这里插入图片描述

五、参考历程

#include <reg52.h> //---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint 
#define uint unsigned int
#endif/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c);   //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/	
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/		
void LcdInit();	unsigned int a=0;mainvoid main(){// 初始化LCD1602 LcdInit();	LcdWriteCom(0x80);LcdWriteData('a'); LcdWriteData('1'); 	 LcdWriteData('2'); LcdWriteData('3'); LcdWriteData('4'); 	 // WUZHOU   1234      第一行// 0123456789123456   第二行while(1){a++;if(a==10000){a=0;}LcdWriteCom(0x80);LcdWriteData('a'); LcdWriteData(a/1000%10+0x30); 	 //+0x30 将数字转换成字符  acii表LcdWriteData(a/100%10+0x30); LcdWriteData(a/10%10+0x30); LcdWriteData(a%10+0x30); Lcd1602_Delay1ms(2000);  }}/*******************************************************************************
* 函 数 名         : Lcd1602_Delay1ms
* 函数功能		   : 延时函数,延时1ms
* 输    入         : c
* 输    出         : 无
* 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/void Lcd1602_Delay1ms(uint c)   //误差 0us
{uchar a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}      }}/*******************************************************************************
* 函 数 名         : LcdWriteCom
* 函数功能		   : 向LCD写入一个字节的命令
* 输    入         : com
* 输    出         : 无
*******************************************************************************/void LcdWriteCom(uchar com)	  //写入命令
{LCD1602_E = 0;     //使能LCD1602_RS = 0;	   //选择发送命令LCD1602_RW = 0;	   //选择写入LCD1602_DATAPINS = com;     //放入命令Lcd1602_Delay1ms(1);		//等待数据稳定LCD1602_E = 1;	          //写入时序Lcd1602_Delay1ms(5);	  //保持时间LCD1602_E = 0;
}/*******************************************************************************
* 函 数 名         : LcdWriteData
* 函数功能		   : 向LCD写入一个字节的数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/		   void LcdWriteData(uchar dat)			//写入数据
{LCD1602_E = 0;	//使能清零LCD1602_RS = 1;	//选择输入数据LCD1602_RW = 0;	//选择写入LCD1602_DATAPINS = dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1;   //写入时序Lcd1602_Delay1ms(5);   //保持时间LCD1602_E = 0;
}/*******************************************************************************
* 函 数 名       : LcdInit()
* 函数功能		 : 初始化LCD屏
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/		   void LcdInit()						  //LCD初始化子程序
{LcdWriteCom(0x38);  //开显示LcdWriteCom(0x0c);  //开显示不显示光标LcdWriteCom(0x06);  //写一个指针加1LcdWriteCom(0x01);  //清屏LcdWriteCom(0x80);  //设置数据指针起点
}

六、封装成一个显示 字符和一个显示任意四位数的函数

思考

在指定地址显示任意四位数

void lcd_4num(unsigned char dizhi,unsigned int num)
{LcdWriteCom(dizhi);//   LcdWriteData('a'); LcdWriteData(num/1000%10+0x30); 	 //+0x30 将数字转换成字符  acii表LcdWriteData(num/100%10+0x30); LcdWriteData(num/10%10+0x30); LcdWriteData(num%10+0x30); }

调用

lcd_4num(0xc0,a);

在这里插入图片描述
完整程序

 #include <reg52.h> //---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint 
#define uint unsigned int
#endif/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c);   //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/	
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/		
void LcdInit();	
/*LCD1602 指定地址显示任意四位数*/		
void lcd_4num(unsigned char dizhi,unsigned int num);unsigned int a=0;mainvoid main(){// 初始化LCD1602 LcdInit();	LcdWriteCom(0x80);LcdWriteData('a'); LcdWriteData('1'); 	 LcdWriteData('2'); LcdWriteData('3'); LcdWriteData('4'); 	 // WUZHOU   1234      第一行// 0123456789123456   第二行while(1){a++;if(a==10000){a=0;}
//			LcdWriteCom(0x80);
//		    LcdWriteData('a'); 
//			LcdWriteData(a/1000%10+0x30); 	 //+0x30 将数字转换成字符  acii表
//			LcdWriteData(a/100%10+0x30); 
//			LcdWriteData(a/10%10+0x30); 
//			LcdWriteData(a%10+0x30); lcd_4num(0xc0,a);Lcd1602_Delay1ms(2000);  }}/*******************************************************************************
* 函 数 名         : Lcd1602_Delay1ms
* 函数功能		   : 延时函数,延时1ms
* 输    入         : c
* 输    出         : 无
* 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/void Lcd1602_Delay1ms(uint c)   //误差 0us
{uchar a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}      }}/*******************************************************************************
* 函 数 名         : LcdWriteCom
* 函数功能		   : 向LCD写入一个字节的命令
* 输    入         : com
* 输    出         : 无
*******************************************************************************/void LcdWriteCom(uchar com)	  //写入命令
{LCD1602_E = 0;     //使能LCD1602_RS = 0;	   //选择发送命令LCD1602_RW = 0;	   //选择写入LCD1602_DATAPINS = com;     //放入命令Lcd1602_Delay1ms(1);		//等待数据稳定LCD1602_E = 1;	          //写入时序Lcd1602_Delay1ms(5);	  //保持时间LCD1602_E = 0;
}/*******************************************************************************
* 函 数 名         : LcdWriteData
* 函数功能		   : 向LCD写入一个字节的数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/		   void LcdWriteData(uchar dat)			//写入数据
{LCD1602_E = 0;	//使能清零LCD1602_RS = 1;	//选择输入数据LCD1602_RW = 0;	//选择写入LCD1602_DATAPINS = dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1;   //写入时序Lcd1602_Delay1ms(5);   //保持时间LCD1602_E = 0;
}/*******************************************************************************
* 函 数 名       : LcdInit()
* 函数功能		 : 初始化LCD屏
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/		   void LcdInit()						  //LCD初始化子程序
{LcdWriteCom(0x38);  //开显示LcdWriteCom(0x0c);  //开显示不显示光标LcdWriteCom(0x06);  //写一个指针加1LcdWriteCom(0x01);  //清屏LcdWriteCom(0x80);  //设置数据指针起点
}void lcd_4num(unsigned char dizhi,unsigned int num)
{LcdWriteCom(dizhi);//   LcdWriteData('a'); LcdWriteData(num/1000%10+0x30); 	 //+0x30 将数字转换成字符  acii表LcdWriteData(num/100%10+0x30); LcdWriteData(num/10%10+0x30); LcdWriteData(num%10+0x30); }

思考字符串:

总结

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

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

相关文章

win7系统装visual studio

win7系统装visual studio 2023/12/18 安装实例 文章目录 win7系统装visual studio前言一、WIN7安装VS2019需要的两个补丁kb4474419-v3/kb4490628二、在win7 上安装 Visual Studio 2019 步骤 及 vs2019离线安装包三、修改为兼容性为兼容win7四、安装.NET五、安装进程卡在95%总结…

缓存:系统设计中至关重要的一环

什么是缓存&#xff1f; 缓存就像是一个超快速的存储区域&#xff0c;保存了计算机或手机经常使用的内容的副本&#xff0c;这样可以在不访问较慢的主存储器的情况下快速获取。 一个现实中的例子可以是&#xff0c;每当我们购买杂货时&#xff0c;通常会倾向于大量购买&#…

I.MX6ULL_Linux_驱动篇(47)linux RTC驱动

RTC 也就是实时时钟&#xff0c;用于记录当前系统时间&#xff0c;对于 Linux 系统而言时间是非常重要的&#xff0c;就和我们使用 Windows 电脑或手机查看时间一样&#xff0c;我们在使用 Linux 设备的时候也需要查看时间。本章我们就来学习一下如何编写 Linux 下的 RTC 驱动程…

云南省中小学校学籍系统照片采集要求及拍照方法

云南省各地中小学校陆续开展新一年度的学籍照片采集工作&#xff0c;同时中高考报名、毕业照片的采集也即将开始&#xff0c;然而很多学籍管理员和信息员都遇到一个问题&#xff0c;就是这些照片的尺寸要求、背景颜色、文件命名方式都不一样&#xff0c;全校动辄几百上千名学生…

从入门到放弃之「ClickHouse」

文章目录 1. 写在最前面1.1 思路 2. ClickHouse2.1 基本概念2.2 高端用法2.2.1 条件判断2.2.2 HAVING2.2.3 CASE WHEN2.2.4 window function 3. 碎碎念4. 参考资料 1. 写在最前面 最近在整理 api 成功率的问题。但是总结下来以下三点是我分析路上的绊脚石。 上报链路还不够稳定…

java 自用工具方法

java 自用工具方法 时间格式转换1 将时间转换成指定格式的字符串校验1.国内手机校验2.邮箱校验3.国内身份证校验4.性别校验5.字符串组是否包含字符串 【完全包含,不区分大小写】字符串其它应用1.字符串指定截取时间格式转换 1 将时间转换成指定格式的字符串 // date 时间 fo…

1-交易系统设计的一些原则

高并发原则 无状态 如果设计的应用是无状态的&#xff0c;那么应用比较容易进行水平扩展。实际生产环境可能是这样的&#xff1a;应用无状态&#xff0c;配置文件有状态。比如&#xff0c;不同的机房需要读取不同的数据源&#xff0c;此时&#xff0c;就需要通过配置文件或配…

Python(四十九)——requests和httpx

Python(四十九)——requests和httpx Python——requests和httpx获取cookie Python(四十九)——requests和httpx 1. 获取cookies1.1 requests获取cookies1.1.1 直接获取cookies1.1.2 session 获取cookies 1.2 httpx获取cookie1.3 获取Set-Cookie1.4 cookie 失效1.5 获取cookie的…

CEC2013(python):五种算法(GA、WOA、GWO、DBO、HHO)求解CEC2013(python代码)

一、五种算法简介 1、遗传算法算法GA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、哈里斯鹰优化算法HHO 二、5种算法求解CEC2013 &#xff08;1&#xff09;CEC2013简介 参考文献&#xff1a; [1] Liang J J , Qu B Y , Suganthan P N , et al. Prob…

3D模型如何制作透明玻璃材质

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、什么是玻璃材质 在3D建模和渲染中&#xff0c;玻璃是一种非常常见…

Keras使用sklearn中的交叉验证和网格搜索

Keras是Python在深度学习领域非常受欢迎的第三方库&#xff0c;但Keras的侧重点是深度学习&#xff0c;而不是所以的机器学习。事实上&#xff0c;Keras力求极简主义&#xff0c;只专注于快速、简单地定义和构建深度学习模型所需要的内容。Python中的scikit-learn是非常受欢迎的…

【单调栈】LeetCode2030:含特定字母的最小子序列

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 题目 给你一个字符串 s &#xff0c;一个整数 k &#xff0c;一个字母 letter 以及另一个整数 repetition 。 返回 s 中长度为 k 且 字典序最小 的子序列&#xff0c;该子序列同时应满足字母 letter 出…

SpringMVC01

SpringMVC 1. 学习⽬标2. 什么叫MVC&#xff1f;3. SpringMVC 框架概念与特点4. SpringMVC 请求流程5. Spring MVC 环境搭建6. URL 地址映射配置7. 参数绑定8. JSON 数据开发JSON普通数组步骤1:pom.xml添加依赖步骤2&#xff1a; 修改配置⽂件步骤3. 注解使⽤ 1. 学习⽬标 2. 什…

【介质】DWPD 每日整盘写入次数 衡量SSD固态硬盘寿命

SSD DWPD什么意思? 经常看到厂商发布的SSD产品有DWPD这个指标&#xff0c;DWPD是什么意思&#xff1f; DWPD DWPD,&#xff08;Diskful Writes Per Day&#xff09;&#xff0c;每日整盘写入次数&#xff0c;指在预期寿命内可每日完整写入SSD固态硬盘所有容量的次数。 也有…

树莓派,opencv,Picamera2利用舵机云台追踪特定颜色对象(PID控制)

一、需要准备的硬件 Raspiberry 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目标…

Python 中如何编写类型提示

哈喽大家好&#xff0c;我是咸鱼 我们知道 Python 是一门具有动态特性的语言&#xff0c;在编写 Python 代码的时候不需要显式地指定变量的类型 这样做虽然方便&#xff0c;但是降低了代码的可阅读性&#xff0c;在后期 review 代码的时候容易对变量的类型产生混淆&#xff0…

解决文件导出过大->java压缩zip文件--封装工具类

阿丹&#xff1a; 在业务逻辑中的数据存在一部分业务场景&#xff0c;在导出文件或者视频的时候需要将文件暂存在服务器上再上传到oss对象存储或者fastdfs中让用户来下载使用。但是出现的问题就是如果目标文件过大&#xff0c;文件的上传云端和下载本地就会时间拉长&#xff0c…

使用python读取EXCEL放假日历并制作订阅文件

前言 不想升级IOS&#xff0c;苦于找不到新的日历订阅url&#xff0c;小菜鸡百度来百度去发现ics这东西可以自己做一个&#xff0c;惊喜于看到了这篇文章--使用python获取日历信息并制作订阅文件_https: //github.com/lk-itween/calendar-CSDN博客 感谢作者大大。就想自己写一…

滑动窗口双指针

力扣 209 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 类似窗口滑动 j代表的是窗口的结束位置 i表示开始位置 在while循环中是寻找最…

服务器数据恢复-昆腾存储StorNext文件系统下raid5数据恢复案例

服务器数据恢复环境&#xff1a; 昆腾某型号存储&#xff0c;StorNext文件存储系统。 共有9个分别配置了24块磁盘的磁盘柜&#xff0c;其中8个磁盘柜存放普通数据&#xff0c;1个磁盘柜存放元数据。 存放元数据的磁盘柜中的24块磁盘组建了8组RAID1阵列和1组4盘RAID10阵列&#…