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的手册,确认接口类型和时序要求,别像我当年那样,板子打回来才发现接口不匹配。