2、LCD接口类型:并行接口(8080/6800)、串行接口(SPI/I2C)、LVDS接口、MIPI DSI接口

说到LCD的接口,我估计很多刚入行的朋友第一反应就是「怎么这么多接口?」。没错,我当年也懵过。其实说白了,这些接口就是LCD和主控芯片之间「对话」的方式。选对了接口,项目事半功倍;选错了,嗯…你可能要多加两层PCB板。

我个人习惯把LCD接口分成三大类:并行、串行、高速差分。咱们一个一个来拆解。

2.1 并行接口:8080与6800

并行接口,顾名思义,就是一次传多位数据。最常见的两种是Intel的8080和Motorola的6800。它们本质上都是「总线式」通信,区别在于控制信号的时序逻辑。

核心区别一句话:8080用「读/写」两根线控制方向,6800用「读/写」共用一根线加一根「使能」线。

8080接口

我在做早期的单片机项目时,用的最多的就是8080接口。它需要这些信号线:

  • CS(片选):选中这个LCD
  • RS(寄存器选择):数据/命令切换
  • RD(读):拉低时读数据
  • WR(写):拉低时写数据
  • D[0:7]D[0:15]:数据总线

时序其实很简单:先拉低CS,然后根据要读还是要写,拉低RD或WR,同时把数据放到总线上。我曾经在一个项目里用8位8080接口驱动一块320x240的屏,刷新率跑到了60fps,完全够用。

我的经验:如果你用的是STM32这类MCU,FSMC外设可以直接映射8080时序,连时序配置都不用你操心。我建议新手先从8080入手,资料多、坑少。

6800接口

6800接口现在用得少了,但有些老款LCD模块还在用。它的信号线是:

  • CS(片选)
  • RS(寄存器选择)
  • E(使能):相当于8080的RD+WR合体
  • R/W(读/写):高电平读,低电平写
  • D[0:7]D[0:15]

为什么6800会衰落?我个人觉得是因为它的时序对MCU的时钟要求更苛刻。你想想看,使能信号E既要控制读又要控制写,时序窗口比8080窄不少。

避坑指南:我曾经在一个项目里把8080的LCD接到了6800的MCU上,结果死活点不亮。后来发现是时序极性反了。记住:8080的RD/WR是低有效,6800的E是高有效。别搞混!

2.2 串行接口:SPI与I2C

串行接口的优势很明显——引脚少。对于小尺寸、低分辨率的LCD(比如128x64、160x80),串行接口是首选。

SPI接口

SPI驱动LCD,一般用4线模式:SCLK、MOSI、CS、DC(数据/命令选择)。有些模块把DC和CS合并了,但我不建议这么干,控制起来太别扭。

SPI的速率可以跑很高。我实测过,40MHz的SPI时钟驱动一块320x240的屏,刷新率大概能到30fps。对于静态显示完全够用,但要是播放视频就有点吃力了。

// SPI写命令示例(伪代码)
void LCD_WriteCmd(uint8_t cmd) {
    DC_LOW();           // 命令模式
    CS_LOW();           // 选中
    SPI_Transfer(cmd);  // 发送
    CS_HIGH();          // 释放
}

// SPI写数据示例
void LCD_WriteData(uint8_t data) {
    DC_HIGH();          // 数据模式
    CS_LOW();
    SPI_Transfer(data);
    CS_HIGH();
}

我的习惯:SPI的CS引脚不要用硬件自动控制,用手动拉高拉低。为什么?因为有些LCD模块在CS拉高后需要一点恢复时间,硬件自动控制容易出时序毛刺。

I2C接口

I2C接口更省引脚,只需要SDA和SCL两根线。但代价是速度慢。标准模式100kHz,快速模式400kHz,高速模式3.4MHz。你想想看,传一帧320x240的16位色图像,就算用3.4MHz也得传好几百毫秒。

所以I2C接口的LCD通常只用于:

  • 小尺寸OLED屏(0.96寸、1.3寸)
  • 低刷新率显示(比如静态仪表盘)
  • 引脚极度受限的场景(比如蓝牙模块扩展显示)

避坑指南:我曾经用I2C驱动一块1.3寸OLED,发现刷新一屏要200ms。后来查手册才发现,I2C的地址线被拉到了VCC,导致每次通信都要发两次地址。嗯,硬件设计时一定要确认地址引脚的电平。

2.3 LVDS接口

LVDS(Low-Voltage Differential Signaling)是低压差分信号。说白了,就是用两根线传一个信号,一根正一根负,靠电压差来判断0和1。

为什么用差分?因为抗干扰能力强。我在做工业平板项目时,LCD和主板之间隔了30cm的排线,如果用并行接口,画面全是雪花。换成LVDS后,稳如老狗。

LVDS接口的特点:

  • 高速:单通道速率可达几百Mbps
  • 抗干扰:差分信号共模抑制比高
  • 引脚少:4对差分线就能传24位RGB数据
  • 传输距离远:5-10米没问题

LVDS一般用于10寸以上的大屏。我建议,如果你的屏分辨率超过1024x600,就别考虑并行接口了,直接上LVDS。

2.4 MIPI DSI接口

MIPI DSI(Display Serial Interface)是移动设备的主流接口。手机、平板、车载中控,清一色用MIPI DSI。

MIPI DSI也是差分信号,但它比LVDS更先进。它支持:

  • 多通道:1-4 lane,每lane速率可达1Gbps以上
  • 低功耗:有专门的低功耗模式(LP mode)
  • 双向通信:可以读回LCD的状态信息
  • 命令模式与视频模式:灵活切换

我在做一款智能手表时,用的就是MIPI DSI 1-lane接口。分辨率454x454,刷新率60fps,功耗控制得很好。但要注意,MIPI DSI的时序非常严格,PCB走线必须等长,差分阻抗要控制在100Ω±10%。

一句话总结接口选型:

  • 小尺寸、低分辨率 → SPI/I2C
  • 中尺寸、中分辨率 → 8080并行
  • 大尺寸、高分辨率 → LVDS
  • 移动设备、超高分辨率 → MIPI DSI

知识体系结构图

LCD接口类型 并行接口 8080 (Intel) 6800 (Motorola) 8/16位数据总线 控制信号:CS/RS/RD/WR 串行接口 SPI I2C 引脚少,速度较慢 适合小尺寸低分辨率 高速差分接口 LVDS MIPI DSI 差分信号,抗干扰强 高速,适合大屏/高分辨率 选型建议 • 小尺寸OLED/低分辨率 → SPI / I2C • 中尺寸TFT (≤800x480) → 8080并行接口 • 大尺寸 (≥7寸) / 高分辨率 → LVDS • 移动设备 / 超高分辨率 → MIPI DSI

嗯,接口类型就讲到这里。每种接口都有它的脾气,选对了就是好搭档。我个人建议,做项目前先看看LCD的手册,确认接口类型和时序要求,别像我当年那样,板子打回来才发现接口不匹配。

专注资料整理