文章目录
TFT屏幕介绍
LCD(Liquid CrystalDisplay)的全称是液晶显示器,是现在用的比较多的手机屏幕材料,特点是价格便宜,使用普及广泛,在显示的时候需要有背光的支持。
LCD 拥有不同显示技术包括:TFT、 IPS、SLCD、UFB、SNT、NOVA等,常见的就有今天要介绍的TFT屏。
TFT屏,又称薄膜场效应管液晶屏。 液晶屏内每个像素点都是由薄膜晶体管来驱动,每个像素点相对独立,并可以连续控制,可以精准控制显示色阶层。
LCD控制器
LCD控制器就是驱动TFT-LCD显示器的关键,它可以将接收到的信号转换的信号转成TFT-LCD屏需要的信号。控制器一般都集成在TFT-LCD模组内。
ILI9341控制器内部框图
RESX: 复位信号线
CSX: 片选信号线
D/CX: 数据与命令信号线
WRX: 写使能信号
RDX: 读使能信号线
DB[17:0]: 数据总线,支持8/9/16/18位
GRAM用于存放屏幕数据
ILI9341时序详解
ILI9341写时序:
1、片选CSX拉低(选中芯片)
2、数据与命令信号线D/CX拉低(发送命令)
3、写使能信号WRX拉低(写使能)
4、发送写命令数据(主机发送给LCD)
5、数据与命令信号线D/CX拉高
6、写使能信号WRX拉低(写使能)
7、发送数据(主机发送给LCD)
ILI9341读时序:
1、片选CSX拉低(选中芯片)
2、数据与命令信号线D/CX拉低(发送命令)
3、写使能信号WRX拉低(写使能)
4、发送写命令数据(主机发送给LCD)
5、数据与命令信号线D/CX拉高
6、读使能信号RDX拉低(读使能)
7、读取数据(LCD发送给主机)注:读出的第一个数据无效,第二个数据开始才是有效数据
RGB565数据格式
RGB565指的是红绿蓝(RGB)三原色在D[15:0]16位数据中的位数分布。
16位数据描述像素点的三原色比例为R:G:B=5:6:5
数据传输宽度:16位
红色:D11 - D15
绿色:D5 - D10
蓝色:D0 - D4
任何颜色都可以用三原色进行组合生成。可以组成25*26*2^5种颜色。
举例:
显示纯红色:0b11111 000000 00000
显示纯绿色:0b00000 111111 00000
显示纯蓝色:0b00000 000000 11111
显示纯黑色:0b00000 000000 00000
显示纯白色:0b11111 111111 11111
程序中只要控制每个像素点的D[15:0]16位数据值就能控制TFT屏幕中的每个像素点颜色。
相关命令详解
1、读芯片ID号 (0xD3)
1、先发命令0xD3
2、连续获取获取4个16位数据(注:读到的第一个16bit数据是无效的)
2、内存访问控制(0x36)
1、先发命令0x36
2、发送数据
Bit | 名字 | 描述 |
---|---|---|
MY | 横地址顺序 | 控制MUC读写内存的方向 |
MX | 列地址顺序 | |
MV | 横/列地址交换 | |
ML | 垂直刷新顺序 | LCD垂直刷新方向控制 |
BGR | RGB-BGR顺序 | 颜色选择开关控制 (0=RGB滤色器面板;1=BGR滤色器面板) |
MH | 水平刷新顺序 | LCD水平刷新方向控制 |
控制屏幕刷新顺序
3、横向窗口地址设置(2Ah)
此命令用于定义MCU可以访问的帧内存区域。
(1)先发命令0x2A
(2)发送窗口第一个横向坐标值的高8位 SC[15:8]
(3)发送窗口第一个横向坐标值的低8位 SC[7:0]
(4)发送窗口第二个横向坐标值的高8位 EC[15:8]
(5)发送窗口第二个横向坐标值的低8位 EC[7:0]
SC[15:0]和EC[15:0]定义
注:SC[15:0]必须等于或小于EC[15:0]。
当SC[15:0]或EC[15:0]大于00EFh(当MADCTL的B5 = 0)或013Fh时(当MADCTL的B5 = 1时),超出范围的数据将被忽略。
4、页地址设置(2Bh)
此命令用于定义MCU可以访问的帧内存区域。
(1)先发命令0x2B
(2)发送窗口第一个纵向坐标值的高8位 SP[15:8]
(3)发送窗口第一个纵向坐标值的低8位 SP[7:0]
(4)发送窗口第二个纵向坐标值的高8位 EP[15:8]
(5)发送窗口第二个纵向坐标值的低8位 EP[7:0]
注:SP[15:0]总是等于或小于EP [15:0]
当SP(15:0)或EP(15:0)大于013Fh(当MADCTL’s B5 = 0)或00EFh(当MADCTL’s B5 = 1)超出范围的数据将被忽略。
5、写内存(2Ch)
该命令用于将数据从MCU传输到帧内存。
当这个命令被接受时,列寄存器和页寄存器被重置到开始列/开始页的位置。然后将D[17:0]存储在帧存储器中,列寄存器和页寄存器加1。
发送任何其他命令都可以停止帧写入。
(1)先发命令0x2B
(2)连续发送需要显示的数据