【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用

一、液晶显示技术简介

1.RGB信号线

RGB是一种色彩模式,是工业界的一种颜色标准,是通过红(R)、绿(G)、蓝(B)三个颜色通道的变化,以及它们相互之间的叠加来得到各式各样的颜色。

在液晶控制器中可以定义不同的RGB颜色格式,有RGB16格式、RGB24格式、RGB32格式。

(1)RGB16格式主要有两种:RGB565格式和RGB555格式。

  • RGB565数据格式:
  • RGB555数据格式:

(2)RGB24格式:

  • RGB888数据格式:

(3)RGB32格式:

  • RGB888数据格式:

2.显存

在实际应用中一般为显示区域开辟一个存储区域,用于存储液晶屏上需要显示的图像数据,这个存储区域就是存储显示数据的存储器,被称为显存。

例如,分辨率为800像素×480像素的液晶屏,使用RGB888格式显示,一个像素需要3个字节数据,一帧显示数据大小为3×800×480= 1 152 000字节。使用CPU将图像数据复制到显存,使用LTDC将其显示在液晶屏上。

二、字符显示

在液晶显示器上显示的图形都是由一个个的像素组成的,而每个像素对应于一个特定格式的数据。因此,对于图片的显示,LTDC只能显示未经压缩编码的图片,而对于压缩编码过的图片格式,如JPEG、PNG格式的图片,需要应用程序解压后才能使用。

显示任意编码合适字符的原理也是一样的,需要先将字符按照特定的大小和字体格式转换成液晶显示器能够识别的像素数据,然后才能给LTDC使用,这种能够显示的字符格式就是字模。

cpp 复制代码
{0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x11,0x00,0x11,0x00,0x11,0xF8}
{0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xFE,0x00,0x00}
// 正

三、字符编码

常见的字符编码有 ASCII、ISO-8859-1、GB2312、GBK、Unicode、UTF-8、UTF-16 等。GB2312、GBK、UTF-8、UTF-16这几种格式都可以表示一个汉字。

1.ASCII

学过计算机的人都知道ASCII,它总共有128个字符,用一个字节的低7位表示,0~31是控制字符,如换行、回车、删除等;32~126是打印字符,可以通过键盘输入并且能够显示出来。

2.ISO-8859-1

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00~0xFF。0x00~0x7F完全和ASCII一致,0x80~0x9F是控制字符,0xA0~0xFF是文字符号。ISO-8859-1仍然是单字节编码,它总共能表示256个字符。

3.GB2312

GB2312的全称是《信息交换用汉字编码字符集基本集》,它是双字节编码。GB2312将所收录的字符分为94个区,区号为01~94。每个区收录94个字符,编号为01~94。

4.GBK

GBK全称是《汉字内码扩展规范》,是国家技术监督局为Windows 95所制定的新的汉字内码规范,它的出现是为了扩展GB2312,加入更多的汉字,它的编码范围是8140~FEFE(去掉xx7F),总共有23 940个码位,它能表示21 003个汉字。GBK编码和GB2312编码兼容,也就是说用GB2312编码的汉字可以用GBK编码来解码,并且不会有乱码。

5.GB18030

GB18030全称是《信息交换用汉字编码字符集》,它是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与GB2312编码兼容,这个虽然是国家标准,但是在实际应用系统中使用得并不广泛。

6.Unicode

Unicode(统一码、万国码、单一码)是计算机科学领域中的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

7.UTF-16

UTF-16具体定义了Unicode字符在计算机中的存取方法。UTF-16用两个字节来表示Unicode转化格式,这个是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是16bit,所以叫作UTF-16。UTF-16统一采用两个字节表示一个字符,虽然在表示上非常简单方便,但是也有其缺点,有很大一部分字符用一个字节就可以表示,但是UTF-16格式需要用两个字节表示,存储空间放多了一倍。

8.UTF-8

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,用1~4个字节编码Unicode字符。如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。

四、字模生成工具使用

字模生成工具很多,有PCtoLCD、字模提取V2.2及FontCvt_V522等。

这里介绍一下PCtoLCD2002,下载链接已放下边:

【免费】嵌入式开发点阵字模生成工具(OLED/LCD适配版)-PCtoLCD2002完美版资源-CSDN文库

1.在使用软件时一定记得去更改字模设置

2.以下是我在使用0.96OLED屏幕时的配置,一定要注意改自定义格式,发现这个每次打开时候都会默认选择A51格式,其他的参数一般不会变,但还是需要留意,过多的不再描述。

五、图片处理

如果我们想要将一张图片显示在屏幕上则需要更改其像素点,使其与我们使用的屏幕对应,比如使用1.8寸TFT屏幕,可以看到屏幕下方标注128*160,这是屏幕的像素点,我们要将上传的图片像素改为128*160才不会在屏幕上出现乱七八糟的情况。

1.更改图片像素

  • 下图是Win11电脑使用WPS直接打开的图片,可以看到此时是1200*1200像素。
  • 点击弹出下图
  • 如下图选择像素
  • 点击保存即可

2.图片取模

  • 将刚才的图片打开,设置为宽度128高度160,输出灰度为16位真彩,取模软件已放链接。

【免费】嵌入式开发图像取模工具-Image2Lcd2.9资源-CSDN文库

  • 随后点击保存就会生成数组
相关推荐
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
好奇龙猫8 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
saoys8 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
电子小白1239 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
清风6666669 小时前
基于单片机的多传感器智能云梯逃生控制器设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计
小何code9 小时前
STM32入门教程,第10课(上),OLED显示屏
stm32·单片机·嵌入式硬件
来自晴朗的明天9 小时前
高速画板-USB模块的PCB设计5-USB2.0/3.0布局布线要求
单片机·嵌入式硬件·硬件工程
唯情于酒9 小时前
Docker学习
学习·docker·容器
clorisqqq11 小时前
人工智能现代方法笔记 第1章 绪论(1/2)
人工智能·笔记
charlie11451419111 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++