Skip to content

One 单片机如何通过LCD屏幕显示数据?从零开始的完整认知

以下内容面向初学者,从历史背景出发,逐步带你理解你手中那块 2.0寸 240×320 SPI TFT LCD(ST7789V2驱动) 是如何工作的。


一、屏幕显示技术的发展历史(背景引入)

1. 最早的显示方式:段码显示

最早的电子设备用的是"七段数码管",只能显示数字,原理极简单:点亮哪个段,就显示哪个数字。数码管(单纯发光的灯)用来显示数

数码管正视图数码管正视图

数码管侧视图数码管侧视图

数码管引脚图数码管引脚图

2. CRT 显像管时代

电视机、早期电脑显示器用的是阴极射线管(CRT),通过电子束扫描荧光屏来显示图像。体积大、功耗高。

3. LCD 液晶显示时代(我们今天用的)

LCD(液晶显示器)利用液晶分子在电场下改变光的偏振方向来控制每个像素的亮暗,配合彩色滤光片实现彩色显示。它具有能耗低、寿命长、体积小、色彩还原度高等优点,广泛用于手机、平板、智能家电等。[LCD概述]

你手中的屏幕就是 TFT-LCD(薄膜晶体管液晶显示器),是目前物联网设备中最常见的显示技术。


二、LCD 屏幕的硬件结构

一块完整的 LCD 模块通常由四部分组成:[LCD概述]

组成部分作用
面板决定色彩、可视角度、分辨率(你的屏是 IPS 面板)
背光源液晶本身不发光,需要背光提供光源,可用 PWM 控制亮度
驱动 IC接收单片机的指令,控制液晶像素的电压,让画面显示出来
FPC柔性排线,连接驱动 IC 与单片机

你的屏幕驱动 IC 是 ST7789V2,它负责"翻译"单片机发来的数据,并驱动 240×320 个像素点显示对应颜色。


三、通信协议的发展历史(单片机如何"说话"给屏幕听)

单片机要控制屏幕,必须通过某种通信协议传输指令和图像数据。

通信协议演进简史

时代协议特点
早期并行总线(I80/MCU接口)8~16根数据线同时传输,速度快但占用引脚多
中期SPI 串行接口只需少量引脚,速度适中,成本低,适合小屏幕
现代QSPI / RGB / MIPI-DSI更高带宽,支持高分辨率、高刷新率大屏

[LCD接口对比]

你的屏幕使用的是 SPI 接口,这是目前小尺寸低分辨率屏幕中最主流的选择:占用引脚少、驱动简单、成本低。


四、SPI 通信协议详解

SPI(Serial Peripheral Interface,串行外设接口)是一种主从式同步串行通信协议,由单片机(主机)主动发起通信,屏幕(从机)被动接收。

你的屏幕的 8 个引脚说明

引脚名功能
VCC电源正极(3.3V)
GND电源负极
CS片选信号,低电平时选中屏幕
SCK(SCL)时钟信号,同步数据传输节拍
SDA(MOSI)数据线,单片机发数据给屏幕
DC(RS)数据/命令选择线,低电平=命令,高电平=数据
RST复位引脚,初始化时使用
BL背光控制

[SPI LCD详解]

典型的 SPI LCD 接线示意如下:

图片2

关键理解:DC 引脚是 SPI LCD 的核心设计——单片机通过它告诉屏幕"我现在发的是控制命令,还是要显示的像素数据"。


五、单片机显示数据的完整流程

以 ESP32 + ST7789V2 为例,显示一张图片的过程分三步:

第一步:初始化 SPI 总线

c
spi_bus_config_t buscfg = {
    .sclk_io_num = PIN_NUM_CLK,   // 时钟引脚
    .mosi_io_num = PIN_NUM_MOSI,  // 数据输出引脚
    .miso_io_num = -1,            // 小屏幕通常不需要读取数据
    .quadwp_io_num = -1,
    .quadhd_io_num = -1,
    .max_transfer_sz = 240 * 320 * 2, // 最大传输字节数
};
spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);

[SPI LCD示例]

第二步:挂载 LCD 面板驱动(ST7789)

c
esp_lcd_panel_io_spi_config_t io_config = {
    .dc_gpio_num = PIN_NUM_DC,    // DC 引脚
    .cs_gpio_num = PIN_NUM_CS,    // CS 引脚
    .pclk_hz = 40 * 1000 * 1000, // SPI 时钟频率 40MHz
    .spi_mode = 0,
    .trans_queue_depth = 10,
};
esp_lcd_new_panel_io_spi(SPI2_HOST, &io_config, &io_handle);

esp_lcd_panel_dev_config_t panel_config = {
    .reset_gpio_num = PIN_NUM_RST,
    .bits_per_pixel = 16,         // RGB565 色彩格式
};
esp_lcd_new_panel_st7789(io_handle, &panel_config, &panel_handle);

第三步:初始化并显示

c
esp_lcd_panel_reset(panel_handle);   // 复位屏幕
esp_lcd_panel_init(panel_handle);    // 发送初始化命令序列
esp_lcd_panel_disp_on_off(panel_handle, true); // 开启显示
// 将像素数据写入指定区域
esp_lcd_panel_draw_bitmap(panel_handle, x_start, y_start, x_end, y_end, color_data);

[ST7789驱动源码]


六、一句话总结整个过程

单片机通过 SPI 协议,用少量引脚向 ST7789V2 驱动芯片发送"初始化命令"和"像素颜色数据",驱动芯片再控制 240×320 个液晶像素点的电压,配合背光,最终在屏幕上呈现出你想要显示的内容。


七、各接口带宽对比(为什么你的屏用 SPI)

接口类型数据位宽带宽适用场景
SPI1位最小小尺寸低分辨率屏(如你的240×320)
QSPI4位较小中等分辨率
I808/16位较大中高分辨率
RGB8~24位较大高分辨率
MIPI-DSI1~4 Lane最大手机级高分辨率高刷新率

[接口参数对比]

你的 2.0寸 240×320 屏幕,SPI 接口完全够用,而且驱动简单,非常适合入门学习!

Two 单片机如何通过屏幕显示数据(内容)?

1. 多色的LED灯珠(拼成大屏幕)

LED广告大屏LED广告大屏

LED广告大屏组件LED广告大屏组件

2. OLED 单色的自发光显示屏

OLED单色显示屏模块OLED单色显示屏模块

3. LCD 显示屏(需要背光把颜色投影出来)

LCD与OLED结构图对比LCD与OLED结构图对比

LCD结构图LCD结构图

LCD显示屏模块LCD显示屏模块

觉醒,然后燎原。 © 2026 门主引擎