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简单,不需要处理片选和数据/命令切换。
怎么选?我总结了一个决策流程:
- 引脚够吗? 不够 → 选I2C
- 需要高刷新率? 是 → 选SPI
- 需要挂多个I2C设备? 是 → 选I2C
- 代码要简单? 是 → 选I2C
- 以上都不明确? 选SPI,性能冗余总比不够好
1.5 知识体系总览:一张图看懂OLED选型
下面这张图把本章的核心知识点串起来了。从显示原理到驱动芯片,再到尺寸和接口,你一看就知道怎么选。
这张图把整个选型逻辑串起来了。从显示原理出发,到驱动芯片、屏幕尺寸、通信接口,每一步都有对应的选择依据。你以后做项目时,对着这张图走一遍,基本不会选错。
1.6 本章小结
OLED选型其实不复杂,但细节决定成败。记住几个关键点:
- 驱动芯片:SSD1306生态好,支持I2C和SPI;SSH1106只支持SPI,指令不兼容
- 屏幕尺寸:0.96寸细腻省电,1.3寸清晰易读
- 通信接口:I2C省引脚,SPI高性能
- 避坑:买屏前确认芯片型号,别信卖家标注