基于ILI9341的TFT-LCD屏幕显示要点总结

目录

LCD常用引脚及其功能

LCD驱动流程

RGB565

关键指令

GRAM自增方向

设置开始坐标和结束坐标

写GRAM指令

读GRAM指令


本文主要参考视频如下:

第37讲 LCD-TFTLCD原理与配置介绍-M4_哔哩哔哩_bilibili
说明:

目前,市面上常见的TFT-LCD驱动芯片的原理都是大同小异的,这篇文章是基于驱动芯片ILI9341来说的。其实,只要弄懂了一种IC的原理,其他的都是差不多的,具体差异看一下具体芯片的数据手册就能明白了。

另外,对于TFT-LCD来说,使用并口刷新肯定是更优的选择,但是也有很多小屏幕用的是SPI接口。这篇文章参考的视频里用的是并口。

关于接口,可以参考这篇文章:LCD常见接口总结_lcd接口-CSDN博客

LCD常用引脚及其功能

常用引脚如下:

其中:

CS片选是选中芯片;

RD读信号和WR写信号决定当前是读还是写;

RS命令/数据决定当前是写入命令还是写入数据。

这里的DB是16位并口,但是也有的是使用SPI接口,具体看数据手册和硬件连接即可。

LCD驱动流程

说明,大部分TFT-LCD的驱动流程都是一样的,比较另类的可能也不常用。

流程如下:

复位部分一般都可以找厂家要,自己写的话,麻烦而且容易出错。

设置坐标,然后发一个写GRAM指令;

然后就可以开始写入颜色数据;

LCD显示;

要明确一个问题,那就是LCD显示,关键点其实就是坐标和颜色数据,任何图案都是在某个坐标上刷新颜色值(更底层是驱动LED亮),所以设置坐标后,发写GRAM指令,然后写入颜色数据,LCD就会在对应坐标位置显示给定的颜色了。

RGB565

如下图:

比如0xF800,对应二进制就是1111 1000 0000 0000,高5位都是1,其他位都是0,也就是说全是红色分量,没有另外两种颜色的分量,因此0xF800表示的就是纯红色。

关键指令

这里有个细节问题需要注意下,虽然所有指令和大部分操作参数都是8位的,但是它们整体是16位的,只是高8位无效而已,另外,RGB565的颜色数据也是16位的,而且,颜色数据是主要的数据源,所以我们在使用DMA时,可以将操作的数据位数设置成16位的,从而实现统一操作,省得又是8位又是16位。具体得看IC芯片是否支持。

以读ID指令为例说明下

顺序这一列说明的是发指令还是发参数;

控制这一列,是表示发送当前数据时,各控制位需要处于什么样的状态,比如第一行发送指令时,RS要置0,RD要置高,WR是有效的并且会在上升沿时写入;

再后面就是各位的描述以及对应的HEX码。

后面的参数行的WR置1,RD有向上的箭头,表示这四行数据是读出来的参数。

剩下的几条指令同理。

GRAM自增方向

这里的三种关键控制位MY MX MV,决定了GRAM自增的方向,也就是LCD的扫描方向。

这个指令很重要。

正常我们如果想要往LCD上刷个像素点,就设置该点的坐标,然后刷上颜色值。

但是如果是想要刷一个区域的点呢?

最基础的方式就是设置一下坐标,刷一个点,再设置一下坐标,再刷一个点......如此循环往复,一次刷一个点,每次都要设置坐标。

但是这个GRAM自增指令就能让我们只用设置一个整体区域的开始和结束坐标,然后发送颜色数据时,GRAM坐标就会自动增长。这也是我们实现批量发送颜色数据的重要基础,我们可以通过DMA将数据批量发送出去,LCD收到数据时,就会按照设置好的坐标来刷新屏幕。

设置开始坐标和结束坐标

设置x的开始和x的结束坐标

设置y的开始和y的结束坐标

这里有个问题千万要注意,那就是最大的坐标会比屏幕的宽高各少1,因为坐标是从0开始的,和数组是一样的道理。

写GRAM指令

注意,GRAM是否自增是这个指令决定的,上面的0x36设置的是自增的方向。

读GRAM指令

注意,我们读数据时每读三个字节就要合成一个16位的颜色数据。
可以结合如下文章加深理解:

STM32实战总结:HAL之FSMC控制TFT-LCD_CSDN博客

TFT驱动ST7789使用总结-CSDN博客

LCD常见接口总结_lcd接口-CSDN博客

相关推荐
糖糖单片机设计4 小时前
基于STM32的电子密码锁设计与实现(矩阵键盘+防拆检测+GSM远程报警)
人工智能·stm32·单片机·嵌入式硬件
充哥单片机设计5 小时前
【STM32开源项目】智能家电控制系统
stm32·单片机·嵌入式硬件·毕业设计·智能家电控制·家电控制
捷瑞电子工坊8 小时前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
新晨单片机设计10 小时前
S004R-基于STM32单片机智能门禁系统(密码、指纹、人脸、刷卡、蓝牙)【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus
桀人10 小时前
MCU系统架构——总线——统一编址
stm32·单片机·嵌入式硬件
可乐鸡翅好好吃11 小时前
通讯协议--硬件模拟和软件模拟
stm32·嵌入式硬件
Zw-awa11 小时前
STM32F103C8T6 最小系统板:从型号差异到启动方式
stm32
LCG元1 天前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
染予1 天前
代码中相关C语言知识点总结
stm32
优信电子1 天前
STM32 驱动 DHT30 测量环境温湿度(兼容SHT30):从时序解析到完整代码实战
stm32·嵌入式·传感器·sht30·温湿度·环境测量·dht30