1. OLED基础与选型:从原理到实战选型

做嵌入式这几年,我接触最多的显示器件就是OLED。为什么?因为它够小、够省电、够亮。你想想看,一个0.96寸的屏幕,功耗才几十毫瓦,却能显示清晰的文字和图形。这在很多物联网设备里,简直是刚需。

但OLED也不是随便买来就能用的。选型不对,后面调试能让你怀疑人生。我刚开始做项目时就踩过坑——买了一批0.96寸的屏,结果驱动芯片是SSH1106,而我代码写的是SSD1306的驱动。嗯,那几天加班到凌晨的滋味,至今记忆犹新。

所以这一章,咱们先把OLED的基础和选型讲透。后面写代码才不会翻车。

1.1 OLED显示原理:自发光到底好在哪?

OLED的全称是Organic Light Emitting Diode,有机发光二极管。说白了,就是每个像素点自己会发光,不需要背光。

这和LCD完全不同。LCD需要背光板一直亮着,哪怕你只显示一个像素,背光也得全开。OLED呢?黑色像素直接不发光,所以黑色是真正的纯黑,对比度极高。

核心优势:

  • 自发光,无背光 → 更薄、更省电
  • 响应速度微秒级 → 动画流畅无拖影
  • 对比度极高 → 阳光下也能看清
  • 视角接近180° → 从侧面看也不变色

但OLED也有短板。蓝色像素寿命相对短,长时间显示固定画面容易烧屏。我在一个工控项目里就遇到过——界面上的状态栏一直显示,半年后那块区域明显变暗了。所以做UI时,记得加屏保或定期移动显示内容。

1.2 SSD1306 vs SSH1106:两个主流驱动芯片怎么选?

市面上小尺寸OLED屏,绝大多数用的就是这两款芯片。它们功能相似,但细节差异很大。我列个表,你一看就明白。

对比项 SSD1306 SSH1106
分辨率 128×64(最常见) 128×64 / 132×64
显存大小 128×64 = 1024字节 132×64 = 1056字节
页模式 8页,每页8行 8页,每页8行
I2C支持 是(0x3C/0x3D) 否(仅SPI)
SPI支持 是(4线/3线) 是(4线/3线)
指令兼容性 标准指令集 部分指令不同
价格 较低 略高

避坑指南:我曾经在淘宝上买过一批标称"SSD1306"的0.96寸屏,结果发来的是SSH1106。两个芯片的初始化指令不一样,直接套用SSD1306的驱动,屏幕死活不亮。后来用逻辑分析仪抓I2C波形才发现地址不对。所以买屏时,一定让卖家确认芯片型号,或者直接买带原理图的模块。

我个人习惯:做I2C项目时首选SSD1306,因为SSH1106不支持I2C。做SPI项目时,两者都能用,但SSD1306的生态更好,开源驱动多,调试起来省心。

1.3 0.96寸 vs 1.3寸:屏幕尺寸怎么选?

这两个尺寸是市面上最常见的。0.96寸分辨率128×64,1.3寸也是128×64。分辨率一样,但像素点大小不同。

0.96寸的像素更密,显示文字更细腻。1.3寸的像素更大,看起来更清晰,适合远距离观看。

参数 0.96寸 1.3寸
分辨率 128×64 128×64
像素尺寸 0.15mm 0.21mm
可视面积 21.7×10.8mm 29.4×14.7mm
功耗 约20mA 约25mA
常见驱动 SSD1306 SSH1106 / SSD1306
适用场景 手环、小仪表 手持设备、菜单屏

我的建议:如果设备空间紧张,选0.96寸。如果用户需要频繁看屏幕,选1.3寸,眼睛不累。我在一个智能门锁项目里用了1.3寸,用户反馈说显示清晰,比之前0.96寸的体验好很多。

1.4 I2C vs SPI:接口差异与选型策略

这是选型时最纠结的地方。两种接口都能驱动OLED,但各有优劣。

I2C接口:

  • 只需要2根线(SDA、SCL)
  • 速度通常100kHz~400kHz
  • 支持多设备挂载
  • 适合引脚少的MCU

SPI接口:

  • 需要4根线(CS、DC、SCLK、MOSI)
  • 速度可达10MHz以上
  • 全双工通信
  • 适合需要高刷新率的场景

实战经验:我做过一个需要显示动态波形的小项目,用I2C驱动OLED,刷新率只有15fps,波形看起来一卡一卡的。换成SPI后,轻松跑到30fps以上,动画流畅多了。所以如果你要做动画或视频播放,别犹豫,直接上SPI。

但I2C也有它的优势。有一次我帮朋友改一个智能手环,MCU只剩两个空闲引脚,正好I2C能搞定。而且I2C的代码实现比SPI简单,不需要处理片选和数据/命令切换。

怎么选?我总结了一个决策流程:

  1. 引脚够吗? 不够 → 选I2C
  2. 需要高刷新率? 是 → 选SPI
  3. 需要挂多个I2C设备? 是 → 选I2C
  4. 代码要简单? 是 → 选I2C
  5. 以上都不明确? 选SPI,性能冗余总比不够好

1.5 知识体系总览:一张图看懂OLED选型

下面这张图把本章的核心知识点串起来了。从显示原理到驱动芯片,再到尺寸和接口,你一看就知道怎么选。

OLED选型知识体系 OLED显示模块 显示原理 驱动芯片 屏幕尺寸 自发光 高对比度 响应快 视角广 SSD1306 SSH1106 0.96寸 1.3寸 通信接口 I2C(2线) SPI(4线) 选型核心:看引脚数 → 看刷新率需求 → 看驱动芯片兼容性 → 看屏幕尺寸

这张图把整个选型逻辑串起来了。从显示原理出发,到驱动芯片、屏幕尺寸、通信接口,每一步都有对应的选择依据。你以后做项目时,对着这张图走一遍,基本不会选错。

1.6 本章小结

OLED选型其实不复杂,但细节决定成败。记住几个关键点:

  • 驱动芯片:SSD1306生态好,支持I2C和SPI;SSH1106只支持SPI,指令不兼容
  • 屏幕尺寸:0.96寸细腻省电,1.3寸清晰易读
  • 通信接口:I2C省引脚,SPI高性能
  • 避坑:买屏前确认芯片型号,别信卖家标注