1. LCD驱动基础:显示原理、像素与分辨率、RGB与灰度、接口类型
各位同学,咱们今天正式开始啃LCD驱动这块硬骨头。说实话,我最早接触LCD是在一个手持仪表的项目里,那时候用的是12864点阵屏,驱动起来还算简单。后来换成TFT彩屏,才发现这里面的门道真不少。今天这一章,咱们先把基础打牢。
1.1 LCD显示原理:从液晶分子到图像
LCD的全称是Liquid Crystal Display,液晶显示器。它的核心原理其实不复杂:液晶分子在电场作用下会改变排列方向,从而控制背光能否透过。
我简单画个示意图,你一看就明白:
你看,背光从底部往上照,经过下偏光片变成水平偏振光,然后穿过液晶层。液晶分子在电场作用下扭转,光的偏振方向也跟着转。最后经过上偏光片时,只有特定偏振方向的光能通过。说白了,就是通过电压控制每个像素的透光率。
1.2 像素与分辨率:屏幕上的「点阵」
像素(Pixel)是图像的最小单位。一个像素就是一个「点」,无数个点拼在一起就形成了图像。
分辨率就是屏幕上像素的总数,通常写成 宽×高。比如 320×240 的屏幕,横向有320个像素,纵向有240个,总共 76,800 个像素。
我整理了一个常见LCD分辨率对照表,方便你选型时参考:
| 分辨率 | 宽×高 | 总像素数 | 常见尺寸 | 典型应用 |
|---|---|---|---|---|
| QQVGA | 160×120 | 19,200 | 1.0" ~ 1.5" | 手环、小屏手表 |
| QCIF | 176×144 | 25,344 | 1.5" ~ 1.8" | 老式功能机 |
| QVGA | 320×240 | 76,800 | 2.0" ~ 3.5" | 入门级彩屏、MP4 |
| WQVGA | 480×272 | 130,560 | 3.5" ~ 4.3" | 便携设备、游戏机 |
| VGA | 640×480 | 307,200 | 5.0" ~ 7.0" | 工业终端、监控屏 |
| WVGA | 800×480 | 384,000 | 5.0" ~ 10.1" | 车载屏、智能家居 |
1.3 RGB与灰度:色彩是怎么来的
每个像素由三个子像素组成:R(红)、G(绿)、B(蓝)。通过控制这三个子像素的亮度比例,就能混合出各种颜色。
那灰度呢?灰度就是每个子像素的亮度等级。常见的灰度有:
- 1位灰度:每个子像素要么全亮要么全灭,总共 2³ = 8 种颜色。这就是最早的彩屏效果,颜色很生硬。
- 4位灰度:每个子像素有16级亮度,总共 16³ = 4096 种颜色。勉强能看,但过渡不自然。
- 6位灰度:每个子像素有64级亮度,总共 64³ = 262,144 种颜色。很多中低端屏用这个。
- 8位灰度:每个子像素有256级亮度,总共 256³ = 16,777,216 种颜色。这就是我们常说的「真彩色」。
我画个图,帮你理解RGB混色原理:
1.4 接口类型:SPI、8080、6800
LCD和MCU之间怎么通信?这就涉及到接口了。我接触过的LCD接口主要有三种:SPI、8080并口、6800并口。下面逐个说。
1.4.1 SPI接口(串行)
SPI是最简单的接口,只需要4根线:CS(片选)、SCLK(时钟)、MOSI(主出从入)、DC(数据/命令选择)。有些屏还会加一根RESET复位线。
SPI的优点:
- 引脚少,占用MCU资源少
- 适合小尺寸、低分辨率的屏(320×240以下)
- 布线简单,抗干扰能力相对好
SPI的缺点:
- 速度慢,串行传输,时钟频率受限于MCU和屏
- 刷新率上不去,不适合动态画面
1.4.2 8080并口(Intel总线)
8080接口是Intel公司提出的并行总线标准。它用一组数据线(8位、9位、16位或18位)加上控制信号线(WR写使能、RD读使能、CS片选、DC数据/命令选择)来传输数据。
8080接口的信号时序:
- 写操作:CS拉低 → 设置DC(数据/命令) → 数据放到数据线上 → WR拉低再拉高(产生写脉冲) → 数据被锁存
- 读操作:CS拉低 → 设置DC → RD拉低 → 从数据线上读取数据 → RD拉高
8080接口的优点:
- 速度快,一次传输8位或16位数据
- 适合高分辨率、高刷新率的应用
8080接口的缺点:
- 引脚多,占用大量GPIO
- 布线复杂,高速时信号容易串扰
1.4.3 6800并口(Motorola总线)
6800接口是Motorola公司提出的标准。它和8080类似,也是并行总线,但控制信号不同。6800用E(使能信号)和R/W(读写选择)来代替8080的WR和RD。
6800接口的信号时序:
- 写操作:CS拉低 → 设置DC → 设置R/W为写模式 → 数据放到数据线上 → E拉高再拉低(产生使能脉冲) → 数据被锁存
- 读操作:CS拉低 → 设置DC → 设置R/W为读模式 → E拉高 → 从数据线上读取数据 → E拉低
我整理了一个对比表,方便你选型时参考:
| 特性 | SPI | 8080并口 | 6800并口 |
|---|---|---|---|
| 引脚数(不含电源) | 4 ~ 5 | 12 ~ 20 | 12 ~ 20 |
| 最大传输速度 | ~40MHz(串行) | ~20MHz(并行) | ~20MHz(并行) |
| 数据线宽度 | 1位 | 8/9/16/18位 | 8/9/16/18位 |
| 控制信号 | CS、SCLK、MOSI、DC | CS、WR、RD、DC | CS、E、R/W、DC |
| 适用分辨率 | ≤ 320×240 | ≥ 480×272 | ≥ 480×272 |
| MCU资源占用 | 低 | 高 | 高 |
| 常见驱动IC | ST7735、ILI9341(SPI模式) | ILI9341、ILI9488 | RA8875、SSD1963 |
1.5 本章小结
这一章咱们把LCD驱动的基础知识过了一遍。从液晶显示原理,到像素和分辨率的概念,再到RGB混色和灰度等级,最后对比了三种常见接口的优缺点。