1. LCD驱动基础:显示原理、像素与分辨率、RGB与灰度、接口类型

各位同学,咱们今天正式开始啃LCD驱动这块硬骨头。说实话,我最早接触LCD是在一个手持仪表的项目里,那时候用的是12864点阵屏,驱动起来还算简单。后来换成TFT彩屏,才发现这里面的门道真不少。今天这一章,咱们先把基础打牢。

1.1 LCD显示原理:从液晶分子到图像

LCD的全称是Liquid Crystal Display,液晶显示器。它的核心原理其实不复杂:液晶分子在电场作用下会改变排列方向,从而控制背光能否透过。

我简单画个示意图,你一看就明白:

LCD单像素工作原理 背光层(白光LED) 下偏光片(0°偏振) 液晶分子层(电场控制扭转角度) 电压高 → 分子直立 → 光通过 | 电压低 → 分子扭转 → 光被阻挡 上偏光片(90°偏振) 彩色滤光片(R/G/B子像素) 每个像素由R/G/B三个 子像素组成,独立控制

你看,背光从底部往上照,经过下偏光片变成水平偏振光,然后穿过液晶层。液晶分子在电场作用下扭转,光的偏振方向也跟着转。最后经过上偏光片时,只有特定偏振方向的光能通过。说白了,就是通过电压控制每个像素的透光率。

我的经验: 很多新手以为LCD是自己发光的,其实它是「透光」的。背光一直亮着,液晶只是「开关」或「阀门」。这个理解很重要,后面讲刷新率和功耗优化时会反复用到。

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" 车载屏、智能家居
避坑提醒: 我曾经在一个项目里选了320×240的屏,结果发现要显示汉字时,16×16点阵的字体在屏幕上占的面积太大,信息量根本不够。后来换成了480×272的屏才解决问题。选分辨率时,一定要先算清楚你要显示的内容需要多少像素。

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混色原理:

RGB混色原理与灰度等级 R G B R+G = 黄 G+B = 青 R+B = 紫 R+G+B = 白 灰度等级 = 每个子像素的亮度级数 8位灰度 → 256级亮度 → 16.7M色(真彩色)
关键点: 灰度位数直接决定了颜色数量和显示效果,也决定了你需要传输的数据量。8位灰度下,一个像素需要 3×8 = 24位数据。320×240的屏,一帧就是 320×240×24 = 1,843,200 位,约 230KB。这个数据量对MCU来说不小,后面讲刷新率优化时会重点分析。

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和屏
  • 刷新率上不去,不适合动态画面
我的习惯: 做小尺寸界面(比如2.0寸以下)时,我优先用SPI接口。引脚省下来的GPIO可以干别的。但如果你要做动画或者视频播放,SPI基本没戏,得上并口。

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
避坑指南: 我曾经在一个项目里选了ILI9341的屏,数据手册上写着支持SPI和8080两种模式。我图省事用了SPI模式,结果发现刷新率只有15fps,显示菜单翻页时明显卡顿。后来改成8080 16位模式,直接飙到45fps。所以,如果你的应用对刷新率有要求,别偷懒,上并口。

1.5 本章小结

这一章咱们把LCD驱动的基础知识过了一遍。从液晶显示原理,到像素和分辨率的概念,再到RGB混色和灰度等级,最后对比了三种常见接口的优缺点。