1. TFT-LCD 显示模块工程解析:基于 STM32 的 1.8 寸 ST7735 驱动实践
在嵌入式人机交互系统中,显示单元是信息呈现的核心通道。当项目需求从单色字符显示升级为彩色图形界面时,TFT-LCD 模块便成为不可回避的技术选型。本节将聚焦于一款广泛应用的 1.8 寸 TFT-LCD 模块(驱动芯片 ST7735),深入剖析其硬件接口、色彩模型、寄存器配置逻辑及软件驱动框架。所有内容均基于真实工程实践,不依赖任何特定开发环境或抽象层,可直接移植至裸机或 HAL 库项目。
1.1 硬件拓扑与电气特性
该模块采用标准 SPI 接口,物理上为 8-pin 引脚布局,其定义如下:
| 引脚名 | 功能说明 | 电平要求 | 连接目标 |
|---|---|---|---|
| VCC | 模块供电正极 | 3.3V 或 5V(兼容) | MCU 电源域 |
| GND | 地线 | 0V | MCU 公共地 |
| SCL / SCK | SPI 时钟线 | 3.3V LVTTL | MCU SPIx_SCK |
| SDA / MOSI | SPI 主机输出/从机输入数据线 | 3.3V LVTTL | MCU SPIx_MOSI |
| RES / RST | 复位信号(低电平有效) | 3.3V LVTTL | MCU GPIO(推挽输出) |
| DC / A0 | 数据/命令选择线 | 3.3V LVTTL | MCU GPIO(推挽输出) |
| CS / NSS | 片选信号(低电平有效) | 3.3V LVTTL | MCU GPIO(推挽输出) |
| BLK / LED | 背光控制线 | 3.3V LVTTL(高电平点亮) | MCU GPIO(推挽输出) |
需特别注意两点工程细节:第一,模块标称工作电压为 3.3V,但内部 LDO 设计使其可直接接入 5V 电源,简化了供电设计;第二,BLK 引脚并非 PWM 调光接口,而是数字使能信号,因此背光亮度为全开/全关两级控制。若需实现灰度调节,必须外置 PWM 电路驱动 LED 串。
模块核心参数决定了底层驱动的数据吞吐能力:
- 分辨率 :128 × 160 像素(非字幕所述 128×106,此为典型 ST7735S 屏幕规格)
- 驱动 IC :ST7735 或 ST7735S(二者寄存器映射高度兼容,仅部分初始化序列存在微小差异)
- 色彩深度 :支持 RGB565(16-bit)、RGB666(18-bit)、RGB888(24-bit)模式,本方案采用主流的 RGB565
- 典型工作电流 :30mA(不含背光),背光电流另计,总功耗约 80–120mA(取决于背光亮度)
1.2 RGB565 色彩模型与像素编码
TFT-LCD 的彩色显示本质是空间混色原理的应用。每个像素点由红(R)、绿(G)、蓝(B)三个子像素构成,通过独立控制其亮度比例,合成人眼感知的任意颜色。RGB565 是嵌入式领域最常用的紧凑型编码格式,其位分配如下:
Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R R R R R G G G G G G B B B B B
↑ ↑ ↑
5-bit 6-bit 5-bit
- 红色分量(R) :占用最高 5 位(bit15–bit11),取值范围 0–31(2⁵)
- 绿色分量(G) :占用中间 6 位(bit10–bit5),取值范围 0–63(2⁶)
- 蓝色分量(B) :占用最低 5 位(bit4–bit0),取值范围 0–31(2⁵)
由此,一个 16-bit 的 uint16_t 变量即可完整描述一个像素点的颜色。例如:
- 纯白 :R=31, G=63, B=31 → 0b1111111111111111 = 0xFFFF
- 纯黑 :R=0, G=0, B=0 → 0b0000000000000000 = 0x0000
- 纯红 :R=31, G=0, B=0 → 0b111110000000


4629

被折叠的 条评论
为什么被折叠?



