摘要:本文介绍了LCD和LCD驱动芯片的基本原理,以及8080并行时序逻辑。
1. 显示器和LCD
1.1 基础知识
显示器种类:断码屏,点阵屏,LCD屏,OLED屏等
LCD(Liquid Crystal Display),即液晶显示器。
组成部分:玻璃基板,背光,驱动IC
LCD的接口是由其驱动IC决定的。接口分类:
接口 | 分辨率 | 特性 |
---|---|---|
MCU | ≤800*480 | 带SRAM,无需频繁刷新,无需大内存,驱动简单 |
RGB | ≤1280*800 | 不带SRAM,需要实时刷新,需要大内存,驱动稍微复杂 |
MIPI | 4K | 不带SRAM,支持分辨率高,省电,大部分手机屏用此接口 |
LCD使用红绿蓝三基色混合显示彩色,格式有32位(ARGB888),24位(RGB888),16位(RGB565),数字为表示一个颜色的位数。
LCD驱动原理即LCD的芯片(ILI9341)驱动原理
LCD驱动基本知识:
- 8080时序
- 初始化序列,屏厂提供
- 画点函数和读点函数,实现绘图
1.2 8080时序简介(并行通信)
并口总线时序,常用于MCU屏驱动IC
信号共5个:片选(Chip Select)、读、写、数据/命令判断(Register Select)、数据线
信号 | 名称 | 控制状态 | 作用 |
---|---|---|---|
CS | 片选 | 低电平 | 选中器件,低电平有效,先选中,后操作 |
WR | 写 | ↑ | 写信号,上升沿有效,用于数据/命令写入 |
RD | 读 | ↑ | 读信号,上升沿有效,用于数据/命令读取 |
RS | 数据/命令 | 0=命/1=数 | 表示当前是读写数据还是命令,也叫DC信号 |
D[15:0] | 数据线 | 无 | 双向数据线,可以写入/读取驱动IC数据 |
1.2.1 8080时序(写/读)
8080写时序图如下。(图中上升下降沿的顺序似乎有问题),读时序图略。
写信号时序要求(deepseek):
- 拉低CS:选中目标外设。
- 设置RS:确定操作类型(命令或数据)。
- RS=0:写入命令(如屏幕初始化指令)。
- RS=1:写入数据(如像素颜色值)。
- 放置数据到总线:将数据或命令值设置到D0-D15。(操作ODR寄存器)
- 拉低WR:进入写使能阶段,外设开始监测总线。
- 等待建立时间(Tsu):确保数据在总线上的稳定时间。
- 拉高WR(上升沿触发):外设在上升沿锁存数据。
- 保持时间(Th):数据在上升沿后需保持短暂稳定。
- 释放总线:拉高CS,结束本次操作。
读信号时序要求(deepseek):
- 拉低CS:选中外设。
- 设置RS:选择读取数据类型(命令或数据)。
- 拉低RD:通知外设准备输出数据。
- 等待外设响应:外设将数据放到总线。
- 等待数据稳定(Tsu):确保总线数据有效。
- (读取数据)(操作IDR寄存器)
- 拉高RD(上升沿触发):MCU在上升沿读取数据。
- 保持时间(Th):数据在上升沿后需保持稳定。
- 释放总线:拉高CS,结束读取。
简化代码如下,和deepseek的时序略有出入。
2 LCD驱动芯片简介
常见型号:ILI9371/ST7789
以ILI9371为例,基本使用:6条指令
指令(HEX) | 名称 | 作用 |
---|---|---|
0XD3 | 读ID | 用于读取LCD控制器的ID,区分型号用 |
0X36 | 访问控制 | 设置GRAM读写方向,控制显示方向 |
0X2A | 列地址 | 一般用于设置X坐标 |
0X2B | 页地址 | 一般用于设置Y坐标 |
0X2C | 写GRAM | 用于往LCD写GRAM数据 |
0X2E | 读GRAM | 用于读取LCD的GRAM数据 |
2.1 读ID
一个写指令操作,四个读数据操作,后三个数据组成ID
2.2 访问控制
一个写指令操作,一个写数据操作,控制GRAM自增方向和RGB/BGR顺序
MX MY MV真值表略,从左到右,从上到下是000
2.3 X/Y坐标设置
结果:设置了一个矩形坐标区间,在该区域内进行绘制,地址可以自增,按照GRAM自增方向