单片机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,一经查实,立即删除!

相关文章

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

什么是缓存&#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;全校动辄几百上千名学生…

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

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

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;玻璃是一种非常常见…

【单调栈】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. 什…

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

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

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

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

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

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

NCV8460ADR2G在汽车和工业应用中高压侧驱动如何破?

NCV8460ADR2G是一款完全保护的高压侧驱动器&#xff0c;可用于开关各种负载&#xff0c;如灯泡、电磁阀和其他致动器。该器件可以通过有源电流限制和高温关断针对过载情况进行内部保护。 诊断状态输出引脚提供了高温以及开关状态开路负载情况的数字故障指示。 特性&#xff1a;…

22 Vue3中使用v-for遍历对象

概述 使用v-for遍历对象在真实的开发中比较少见&#xff0c;了解即可。 对象我更喜欢统一称之为字典&#xff0c;假如你哪天发现我在某个前端的教程中把对象叫做字典&#xff0c;请你知道这两个是同一个玩意儿。 所谓字典&#xff0c;就是一种key-value类型的结构的统称。 …

队列(C语言版)

一.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有 先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为 队尾 出队列&#xff1a;进行删除操作的一端称为…

网络安全之Linux环境配置及Linux基础知识讲解<三>

目录 一.下载安装Vmware二.下载安装Kali三.Linux目录结构四.Linux文件属性五.文件目录管理六.vim编辑器 一.下载安装Vmware Vmware官网&#xff1a;https://www.vmware.com 二.下载安装Kali Kali包含数百种工具&#xff0c;可用于各种信息安全任务&#xff0c;例如渗透测试、…

vue导出element表格,xlsx和xlsx-style生成xlsx文件并修改样式

1.下载依赖 npm install xlsx --save npm install file-saver --save npm install xlsx-style --save2.先修改xlsx-style的源码&#xff0c;一旦引入xlsx-style则会报错 xlsx-style使用中常见问题及解决办法&#xff1a; xlsx-style使用中常见问题及解决办法-CSDN博客 在\n…

SpringBoot 多环境开发配置文件

在开发过程中&#xff0c;往往开发环境和生产环境需要不同的配置。为了兼容两种运行环境&#xff0c;提高开发效率&#xff0c;可以使用多环境开发配置文件。 配置文件结构大概是这样&#xff1a; application.yml -主启动配置文件&#xff08;用于控制使用哪种环境配…

Java:获取当前线程的线程组

代码示例&#xff1a; package com.thb;public class Demo4 {public static void main(String[] args) {ThreadGroup threadGroup Thread.currentThread().getThreadGroup();System.out.println(threadGroup.getName());} }运行输出&#xff1a;

“2024山西智博会”由中国人工智能学会和省科学技术协会联合主办

近日&#xff0c;山西省政府新闻办近日举行了“山西加快转型发展”系列主题新闻发布会的第六场发布会&#xff0c;同时也是“推动数字经济发展壮大”专场发布会。在发布会上&#xff0c;省委、省政府强调了数字经济的重要性&#xff0c;并将其作为重组要素资源、重塑经济结构、…

【无标题】欢迎使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…