<精学社>LCD1602移屏操作

 本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步!

> 发布人:@日月同辉,与我共生_单片机-CSDN博客

> 欢迎你为独创博主日月同辉,与我共生点赞❤❤❤+关注👍+收藏🌹+评论☺。

系列专栏: CSDN-单片机串口通信学习系列🎁

> 我的格言是:“尽最大努力,做最好的自己!💪

要转载,请提前告知!!!

版权声明:本文为CSDN博主「日月同辉,与我共生」的原创文章,CSDN独一份。

LCD1602是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符。它属于点阵型液晶显示屏,总共有2行16列,也就是可以同时显示32个字符。每个字符都是由5*7的液晶矩阵显示,总共有1120颗点阵组成。它有16个引脚(带背光),通过控制这些引脚可以实现LCD1602在任何位置显示任何字符。LCD1602内置了CGRAM和CGROM字模库,里面包含了ASCII码表的所有字符和一些特殊字符的字模数据。字模数据就是在5*7的点阵里点亮哪几个点可以显示其相应的字符,再由引脚控制输出在哪个位置上,即可完成显示丰富多样的内容的任务。LCD1602(Liquid Crystal Display)液晶显示屏在各种电子设备中得到广泛应用。

一、移屏操作

LCD1602的移屏操作在生活中的应用并不直接,因为这是一种基于电子设备的操作。它主要被用于一些智能设备或电子设备的显示屏幕上,比如小型仪器、仪表、小型闹钟等。在这些设备中,通过LCD1602的移屏操作,可以实现对设备界面的操作和信息的显示。

然而,我们也可以间接地感受到LCD1602移屏操作在生活中的重要性。例如,在一些智能家居系统中,我们可以通过移动屏幕来查看和控制不同设备的状态,如灯光、空调、电视等。在这些情况下,LCD1602的移屏操作就成为了实现这些功能的关键之一。

此外,在一些需要显示动态信息的场合,比如商场的展示屏幕、广告牌等,LCD1602的移屏操作也可以被用于实现更加丰富和动态的展示效果,提高观众的观看体验。

总的来说,LCD1602的移屏操作虽然可能不直接影响到我们的日常生活,但是在一些智能设备和电子设备中,它却是实现各种功能和操作的重要手段之一。

二、先设置模式后写数据

2.1涉及命令1

//显示模式控制
#define LCD_AC_ADD_MOVE     0x07 //数据读写操作后,AC自动加1,画面平移
#define LCD_AC_ADD                  0x06 //数据读写操作后,AC自动加1,画面不平移
#define LCD_AC_RED_MOVE     0x05 //数据读写操作后,AC自动减1,画面平移
#define LCD_AC_RED                  0x04 //数据读写操作后,AC自动减1,画面不平移

2.2思路1

先根据命令设置命令,接着选择字符显示的位置,最后写数据。

strlen(str2):用于计算出数组str2的长度。

2.3代码1

		unsigned char i;
		LCDWriteCmd(LCD_AC_ADD_MOVE);
		LCDSetPosition(10,0);
		for(i=0;i<strlen(str2);i++)
		{
			LCDWritedata(str2[i]);
			delay(3000);
		}

三、先写数据后设置光标画面控制

3.1涉及命令2

//光标移动指令
#define SUR_LEFT                       0x10   //光标左移,画面显示不移动
#define SUR_RIGHT                    0x14   //光标右移,画面显示不移动
#define LCD_DIS_FRA_LEFT     0x18   //光标不移动,画面显示左移,操作后AC自增
#define LCD_DIS_FRA_RIGHT   0x1C //光标不移动,画面显示右移,操作后AC自减

3.2思路2

先选择字符显示的位置,接着写数据,最后选择光标移动的方式。

strlen(str):用于计算出数组str的长度。

3.3代码2

        unsigned char i;
		LCDSetPosition(1,1);
		for(i=0;i<strlen(str);i++)
		{
		  LCDWritedata(str[i]);
	    }
		LCDWriteCmd(LCD_DIS_FRA_RIGHT);
		delay(100);

四、LCD1602模块代码

4.1初始化

void LCDInit()
{
	LCDWriteCmd(EDI8_DISTWO_57);//8位数据接口,2行显示,5*7点阵
	LCDWriteCmd(LCD_BIS);//显示开,光标关,不闪烁
	LCDWriteCmd(SUR_RIGHT);//光标右移,画面显示不移动
}

4.2读忙命令

void LCDReadBF() //读忙检测(读命令)
{
	unsigned char i;
	unsigned char state;
	LCD1602_DB=0XFF;
	LCD1602_RS=0;
	LCD1602_RW=1;
	do
	{
	  LCD1602_E=1;
	  state=LCD1602_DB;
	  LCD1602_E=0;
		i++;
		if(i>200)
			break;
	}
	while(state&0x80); //判断忙不忙
}

4.3写命令/数据

void LCDWriteCmd(unsigned char cmd) //写命令
{
	LCDReadBF();
	LCD1602_RS=0;
	LCD1602_RW=0;
	LCD1602_DB=cmd;
	LCD1602_E=1;
	LCD1602_E=0;
}

void LCDWritedata(unsigned char dat) //写数据
{
	LCDReadBF();
	LCD1602_RS=1;
	LCD1602_RW=0;
	LCD1602_DB=dat;
	LCD1602_E=1;
	LCD1602_E=0;
}

4.4位置函数

void LCDSetPosition(unsigned char x,unsigned char y) //位置函数  y:行  0-1
{                                                    //          x:列  0-7
	if(y==0)
	{
		LCDWriteCmd(0x80|x);
	}
	else
	{
		LCDWriteCmd(0x80|(x+0x40));
	}
}

void LCDShowStr(unsigned char x,unsigned char y,unsigned char *str)
{
	LCDSetPosition(x,y);
	while(*str!='\0')
	{
	  LCDWritedata(*str++);
	}
}

4.5delay.c

#include "delay.h"
/******************************************************************************************
函数名:delay
功能:延时函数
参数:unsigned char xms
返回值:无
******************************************************************************************/
void delay(unsigned char xms)
{
	unsigned char i,j;
	for(i=xms;i>0;i--)
	  for(j=124;j>0;j--);
}

下一文将着重LCD1602整数及小数编程,亲爱的读者敬请期待,下一文更精彩!!!

一日不读书,胸臆无佳想。我叫不白吃,喜欢我的,可以支持我,博主名叫@日月同辉,与我共生

@日月同辉,与我共生_单片机基础,单片机串口通信-CSDN博客@日月同辉,与我共生擅长单片机基础,单片机串口通信,等方面的知识,@日月同辉,与我共生关注stm32,c语言,51单片机,proteus,单片机领域.https://blog.csdn.net/LIN___IT?spm=1000.2115.3001.5343

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:配置Ubuntu系统的镜像软件下载地址

一、原理介绍 好处&#xff1a;从国内服务器下载APT软件&#xff0c;速度快。 二、配置 我这里配置的是清华大学的镜像服务器地址 https://mirrors.tuna.tsinghua.edu.cn/ 1、备份文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2、清空sources.list ec…

CS5511规格书|CS5511方案应用说明|DP转双路LVDS/eDP芯片方案

概述&#xff1a;CS5511是一个将DP/eDP输入转换为LVDS信号的桥接芯片&#xff0c;此外&#xff0c;CS5511可以用作在DP/eDP输入到DP/eDP输出场景中桥接芯片。CS5511的高级接收器支持VEDA DisplayPort&#xff08;DP&#xff09;1.3和嵌入式DisplayPort&#xff08;eDP&#xf…

这是一个最简单的爱国主义为主题的网页首页

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>爱国主题网页</title> <style> body { font-family: Arial, sans-serif; …

pytest系列——pytest-instafail插件之命令行实时输出错误信息

前言 1、pytest 运行全部用例的时候&#xff0c;在控制台会先显示用例的运行结果(.或F)&#xff1b;等待用例全部运行完成后最后把报错信息全部一起抛出到控制台。 2、这样我们每次都需要等用例运行结束&#xff0c;才知道为什么报错&#xff0c;不方便实时查看报错信息。 3…

数据挖掘之PCA-主成分分析

PCA的用处&#xff1a;找出反应数据中最大变差的投影&#xff08;就是拉的最开&#xff09;。 在减少需要分析的指标同时&#xff0c;尽量减少原指标包含信息的损失&#xff0c;以达到对所收集数据进行全面分析的目的 但是什么时候信息保留的最多呢&#xff1f;具体一点&#…

Day31| Leetcode 455. 分发饼干 Leetcode 376. 摆动序列 Leetcode 53. 最大子数组和

进入贪心了&#xff0c;我觉得本专题是最烧脑的专题 Leetcode 455. 分发饼干 题目链接 455 分发饼干 让大的饼干去满足需求量大的孩子即是本题的思路&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {…

joplin笔记同步 到腾讯云S3

创建存储桶 打开腾讯云的存储桶列表&#xff0c;点击“创建存储桶”&#xff0c;输入名称&#xff0c;选择地域&#xff08;建议选择离自己较近的地域以降低访问时延&#xff09;和访问权限&#xff08;建议选择“私有读写”&#xff09;。 s3 存储桶&#xff1a; 存储桶的名称…

windows环境下使用arthas不启动服务替换文件

场景&#xff1a; windows环境&#xff0c;如果现场环境客户正在使用项目&#xff0c;如果要替换项目中的一个class文件&#xff0c;但是又不能重启服务改怎么处理&#xff0c;今天介绍使用arthas中的retransform命令动态替换及使用注意的事项。 环境&#xff1a; windows,arth…

葡萄酒怎么按照饮用时间分类?

不同的葡萄酒搭配不同的餐食&#xff0c;会让饮酒人有不一样的感受和体会&#xff0c;所以&#xff0c;葡萄酒是分场合并且有饮用时间的。云仓酒庄的品牌雷盛红酒分享一般按照饮用时间分类可以把葡萄酒分为三大类&#xff0c;分别是餐前酒、佐餐酒和餐后酒。 餐前酒&#xff1…

java编程:使用递归 循环和位运算实现将10进制转为2进制

1 递归 /*** 递归&#xff1a;十进制转二进制* param decimal 待转换的十进制数* param binary 转换后的二进制数*/public static void decimalToBinaryByRecursion(int decimal,StringBuilder binary){if(decimal < 0){return;}decimalToBinaryByRecursion(decimal/2,bina…

Mysql数据库 18.Mysql SQL优化

SQL优化 一、插入优化 多条插入语句&#xff0c;影响执行效率 优化方案 1、批量插入&#xff1a; 在一条insert语句中多条数据&#xff0c;但是如果数据量过大&#xff0c;也不能完全使用一条语句语句&#xff0c;建议数据量为一次性插入1000条以下的数据 如果数据量多大&…

CTFUB-web前置技能-HTTP协议

burp抓包,抓第二次的 修改请求方式为CTFHUB

软文写作如何布局?媒介盒子分享三大类型

好的软文需要有清晰的结构和流畅的语言&#xff0c;让读者能够很快理解和接受文案的内容&#xff0c;因此在写文案之前&#xff0c;需要先列出思路和框架&#xff0c;明确文案的主题和重点&#xff0c;选择合适的语言和表达方式。让文案更加生动易懂&#xff0c;下面就让媒介盒…

uniapp开发的微信小程序进行代码质量控制,分包+压缩js+组件按需注入等

小程序代码分包的操作请看另外一篇文章&#xff1a;uniapp分包优化&#xff0c;包括分包路由跳转规则-CSDN博客 JS文件压缩&#xff1a;在工具「详情」-「本地设置」中开启「上传代码时自动压缩脚本文件」的设置 代码包&#xff1a;组件 > 启用组件按需注入解决办法 在小程…

5分钟搞定!学会使用pytest测试框架!

本文将会把关于 Pytest 的内容分上下两篇&#xff0c;上篇主要涉及关于 pytest 概念以及功能组件知识的介绍&#xff0c;下篇主要以一个 Web 项目来将 Pytest 运用实践中。 为什么要做单元测试 相信很多 Python 使用者都会有这么一个经历&#xff0c;为了测试某个模块或者某个…

设计历史记录逻辑参考

目录 一、场景描述 二、我找到的页面功能参考 1、查看历史记录列表 2、历史记录详情 3、不同版本的比较 一、场景描述 我经常在做文档记录&#xff0c;但是有时候有误删的内容&#xff0c;也可能不知道改了什么。 这时我想回头再看看&#xff0c;该如何处理呢&#xff1…

【亚太杯B题论文已更新】2023年第十三届APMCM亚太地区大学生数学建模竞赛——(文末领取方式)

2023年第十三届APMCM亚太地区大学生数学建模竞赛——论文无偿分享&#xff01;&#xff01;&#xff01; B题第一问论文代码已出&#xff0c;其他赛题及后续论文代码会持续更新。 祝各位小伙伴都能在比赛中发挥出色&#xff0c;取得心仪的成绩呦&#xff01;一起加油&#xff…

AI模型训练——入门篇(一)

前言 一文了解NLP&#xff0c;并搭建一个简单的Transformers模型&#xff08;含环境配置&#xff09; 一、HuggingFace 与NLP 自从ChatGPT3 问世以来的普及性使用&#xff0c;大家或许才真正觉察AI离我们已经越来越近了&#xff0c;自那之后大家也渐渐的开始接触stable diff…

C#FlaUI.UIA实现发送微信消息原理

一 准备 .NetFramework 4.8 FlaUI.UIA3 4.0.0 FlaUInspect V1.3.0 1下载FlaUInspect https://github.com/FlaUI/FlaUInspect FlaUInspect V1.3.0 百度网盘下载 2 NuGet 引用 flaUI.UIA3 4.0.0 二代码部分 1 引用FlaUI using FlaUI.Core; using FlaUI.Core.Automatio…

【正点原子STM32连载】第五十九章 T9拼音输入法实验(Julia分形)实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子APM32F407最小系统板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第五十…