51单片机-第十二节-LCD1602液晶显示屏

news2024/12/27 10:47:38

一、LCD1602介绍:

LCD1602是一种字符型液晶显示屏,可以显示ASCII码的标准字符和其他的内置特殊字符。

显示容量:16*2个字符,每个字符为5*7点阵。

二、引脚及应用电路:

其中:D0-7这8位数据是接在P0引脚上的,且高低位对应,即P0^7 - D7。

 三、内部结构:

DDRAM储存ASCII码值,随后在CGRAM字模库中找到对应的应亮像素点,然后显示出来。

其中DDRAM的容量大于屏幕大小,所以后面会学指令,使屏显内容移动,做到流动屏。

DDRAM地址:

四、时序结构:

先将RS置1,随后R/W置0,再将E置1,随后修改D0-7的数据,再将E置0。

五、指令集:

本节所用指令:

清屏:0x01

输入方式:0x06    数据读写后,光标加一,画面不动

显示开关控制:0x0c    显示开,光标关,显示关

功能设置:0x38    8位数据接口,2行显示,5*7点阵

DDRAM地址设置:选择在DDRAM中存储数据的地址。最高位置1,后面为地址。
(例:第二行第一位:40即 0100 0000,最高位置1,得1100 0000,即为地址)
可用:0x80 | ()

总集:

六、集成LCD1602:

sbit LCD_RS = P2 ^ 6;
sbit LCD_RW = P2 ^ 5;
sbit LCD_E = P2 ^ 7;
#define LCD_DataPort P0

void LCD_Delay()             //@12.000MHz  1ms
{
	unsigned char i, j;
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
}
void LCD_WriteCommand(unsigned char Command)
{
	LCD_RS = 0;
	LCD_RW = 0;
	LCD_DataPort = Command;
	LCD_E = 1;
	LCD_Delay();
	LCD_E = 0;
	LCD_Delay();
}
void LCD_WriteData(unsigned char Data)
{
	LCD_RS = 1;
	LCD_RW = 0;
	LCD_DataPort = Data;
	LCD_E = 1;
	LCD_Delay();
	LCD_E = 0;
	LCD_Delay();
}
void LCD_Init()
{
	LCD_WriteCommand(0x38);   //8位数据接口,2行显示,5*7点阵
	LCD_WriteCommand(0x0C);   //显示开,光标关,显示关
	LCD_WriteCommand(0x06);   //数据读写后,光标加一,画面不动
	LCD_WriteCommand(0x01);   //清屏
}
//设置光标位置
void LCD_SetCursor(unsigned char Line, unsigned char Column)
{
	if (Line == 1)
	{
		LCD_WriteCommand(0x80 | (Column - 1));
	}
	else
	{
		LCD_WriteCommand(0x80 | (Column - 1) + 0x40);
	}
}
void LCD_ShowChar(unsigned char Line, unsigned char Column, unsigned char Char)
{
	LCD_SetCursor(Line, Column);
	LCD_WriteData(Char);
}
void LCD_ShowString(unsigned char Line, unsigned char Column, unsigned char String[])
{
	unsigned char i;
	LCD_SetCursor(Line, Column);
	for (i = 0; String[i] != '\0'; i++)
	{
		LCD_WriteData(String[i]);
	}
}
int LCD_Pow(int x, int y)
{
	unsigned char i;
	int Result = 1;
	for (i = 0; i < y; i++)
	{
		Result *= x;
	}
	return Result;
}
//10进制
void LCD_ShowNum(unsigned char Line, unsigned char Column, unsigned int Number,unsigned char Length)
{
	unsigned char i;
	LCD_SetCursor(Line, Column);
	for (i = Length; i > 0; i--)
	{
		LCD_WriteData('0' + Number / LCD_Pow(10, i - 1) % 10);
	}
}
//有符号10进制
void LCD_ShowSignedNum(unsigned char Line, unsigned char Column, int Number, unsigned char Length)
{
	unsigned char i;
	unsigned int Number1;
	LCD_SetCursor(Line, Column);
	if (Number >= 0)
	{
		LCD_WriteData('+');
		Number1 = Number;
	}
	else
	{
		LCD_WriteData('-');
		Number1 = -Number;
	}
	for (i = Length; i > 0; i--)
	{
		LCD_WriteData('0' + Number1 / LCD_Pow(10, i - 1) % 10);
	}
}
//16进制
void LCD_ShowHexNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length)
{
	unsigned char i;
	unsigned char SingleNumber;
	LCD_SetCursor(Line, Column);
	for (i = Length; i > 0; i--)
	{
		SingleNumber = Number / LCD_Pow(16, i - 1) % 16;
		if (SingleNumber < 10)
		{
			LCD_WriteData('0' + SingleNumber);
		}
		else
		{
			LCD_WriteData('A' + SingleNumber - 10);
		}
	}
}
//2进制
void LCD_ShowBinNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length)
{
	unsigned char i;
	LCD_SetCursor(Line, Column);
	for (i = Length; i > 0; i--)
	{
		LCD_WriteData('0' + Number / LCD_Pow(2, i - 1) % 2);
	}
}

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

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

相关文章

聚焦2024数博会|与天空卫士一起探索AI与数据安全的融合应用

中国国际大数据产业博览会&#xff08;简称数博会&#xff09;&#xff0c;是全球首个以大数据为主题的博览会&#xff0c;自2015年创办以来&#xff0c;经过多年的深厚沉淀&#xff0c;数博会已发展成为国际知名、引领前沿趋势的专业展示合作平台。 2024年8月28日至30日&#…

T1打卡——mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.定义GPU import tensorflow as tfgpustf.config.list_physical_devices("GPU")if gpus:gpu0gpus[0]tf.config.experimental.set_memort_groth(gp…

重卡换电连接器的应用

电动汽车换电模式涉及在专门充电站集中存储和充电大量电池&#xff0c;实现统一配送&#xff0c;并在换电站对电动汽车进行快速电池更换服务&#xff0c;或整合充电、物流、调配和换电服务。新能源汽车面临续航限制和配套设施不完善等问题&#xff0c;影响了其大规模推广。电池…

Java创建线程(5种方法)

操作系统提供api操作线程 线程本身是操作系统提供的&#xff0c;操作系统提供API让我们操作线程&#xff0c;JVM对操作系统api进行了封装&#xff0c;在线程这一部分&#xff0c;就提供了Thread类&#xff0c;表示线程。 创建线程 创建一个MyThread类&#xff08;类的名字不…

基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真。PI控制器是一种经典的线性控制器&#xff0c;它通过将控制量的比例部分和积分部分相结合来实现对系统输出的调…

【C-实践】网络聊天室(1.0)

概述 使用了 tcp epoll &#xff0c;实现网络聊天室 1.0 版&#xff0c;用户的显示框和输入框在一起 2.0 版&#xff0c;用户的显示框与输入框分离 功能 主要功能&#xff1a;用户连接服务器&#xff0c;就会自动进入网络聊天室与其他在线用户一起聊天 服务器搭建 创建用户数…

探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点

随着5G、AI、边缘计算、物联网&#xff08;IoT&#xff09;、云计算等技术的快速发展&#xff0c;万物互联已经从概念逐渐转变为现实&#xff0c;AIoT&#xff08;物联网人工智能&#xff09;的新时代正在加速到来。在这一背景下&#xff0c;视频技术作为信息传输和交互的重要手…

常见Python GUI库分析

引言 在Python环境下进行桌面编程时&#xff0c;选择合适的GUI&#xff08;图形用户界面&#xff09;库至关重要。在Python环境下进行桌面编程GUI开发时&#xff0c;有多个优秀的库可供选择。以下是一些推荐的GUI库&#xff0c;包括它们的推荐理由、优劣势以及简单的demo示例。…

【论文阅读】SwiftTheft: A Time-Efficient Model Extraction Attack Framework(2024)

完整标题 SwiftTheft: A Time-Efficient Model Extraction Attack Framework Against Cloud-Based Deep Neural Networks 摘要 With the rise of artificial intelligence(人工智能) and cloud computing(云计算), machine-learning-as-a-service platforms(机器学习即…

SpringMVC基于注解使用:JSON

01-json处理--介绍 json数据格式回顾&#xff1a; 在pom.xml导入依赖 在web.xml里面导入配置文件 ResponseBody 注解是将返回值作为文本返回到客户端了而不是字符串了 当我们想返回bean对象的json数据的时候我们需要先导入jackson依赖在pom.xml里面 然后创建User类&#xff0c…

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置&#xff08;误~&#x1f64f;&#x1f64f;&#xff09;三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口SpringBootApplication3、SpringBootConfiguration的Configuration4、EnableAutoConfiguration的AutoConfigura…

猜测、实现 B 站在看人数

猜测、实现 B 站在看人数 猜测找到接口参数总结 实现 猜测 找到接口 浏览器打开一个 B 站视频&#xff0c;比如 《黑神话&#xff1a;悟空》最终预告 | 8月20日&#xff0c;重走西游_黑神话悟空 (bilibili.com) &#xff0c;打开 F12 开发者工具&#xff0c;经过观察&#xf…

【数据结构初阶】链表分类与双向带头循环链表接口实现

文章目录 1. 链表的分类2. 双向带头循环链表接口实现2. 1 结点声明2. 2 创建链表节点2. 3 初始化链表2. 4 打印链表2. 5 尾插2. 6 判空2. 7 尾删2. 8 头插2. 9 头删2. 10 查找2. 11 在指定位置删除与插入2. 12 销毁 3. 链表接口测试4. 单链表与双链表5. 顺序表与链表 1. 链表的…

Python安装:Mac 使用brew 安装Python2 和 Python3

安装python ## python2 brew install python ## python3 brew install python3出现错误 Error: An unexpected error occurred during the brew link step The formula built, but is not symlinked into /usr/local Permission denied dir_s_mkdir - /usr/local/Frameworks …

根据NVeloDocx Word模板引擎生成Word(一)

自从我们基于免费开放的E6开发平台&#xff0c;实现了根据Word模版生成Word文档的模版引擎后&#xff0c;也实实在在帮助到了一些有需要的朋友。但是由于制作Word模版的过程对于很多人会是一个很头疼的事情&#xff0c;虽然提供了详细的文档&#xff0c;但是我们也经常接到他们…

EcoPaste:重塑剪切板体验,让信息管理变得前所未有的高效

前言 科技&#xff0c;是连接梦想与现实的桥梁&#xff0c;它让人类的想象力得以飞翔&#xff0c;让未来的愿景变为现实。在它的引领下&#xff0c;我们跨越了时空的界限&#xff0c;打破了传统的束缚&#xff0c;以更加开放和包容的心态去迎接生活的挑战与机遇——在看似不相…

I2VGen-XL模型构建指南

一、介绍 VGen可以根据输入的文本、图像、指定的运动、指定的主体&#xff0c;甚至人类提供的反馈信号生成高质量的视频。它还提供了各类常用的视频生成模型工具&#xff0c;例如可视化、采样、训练、推理、使用图像和视频的联合训练&#xff0c;加速等各类工具和技术。 &quo…

图像处理基础篇-镜像仿射透视

一.图像镜像 图像镜像是图像旋转变换的一种特殊情况&#xff0c;通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心&#xff0c;将图像分为左右两部分进行堆成变换。如图7-1所示&#xff1a; 垂直镜像通常是以原图像的水平中轴线为中心&#xff0c;将…

快速搞定“照片调色”!50000+Lr预设滤镜模板,一键让你照片不再丑!

照片调色不仅仅是调整颜色&#xff0c;更是一种艺术表达。通过巧妙地运用 LR 预设&#xff0c;可以突出照片的主题&#xff0c;增强情感共鸣。比如&#xff0c;在风景照片中&#xff0c;使用特定的预设可以让天空更蓝、草地更绿&#xff0c;让大自然的美丽更加生动地展现出来。…

Java——踩坑Arrays.asList()

坑1&#xff1a;不能直接使用 Arrsys.asList() 来转换基本类型数据 public static void test1(){// 1、不能直接使用asList来转换基本类型数组int[] arr {1, 2, 3};List list Arrays.asList(arr);System.out.printf("list:%s size:%s class:%s", list, list.size(…