OLED = 有机发光二极管 你可以理解成:屏幕上有无数个 tiny 小灯,每个小灯可以单独亮 / 灭
- 亮 = 发光
- 灭 = 黑色
- 控制哪些亮、哪些灭 → 就显示出文字、图案

- 很小一块屏
- 黑底、蓝字 / 白字 / 黄字
- 分辨率一般是 128×64
- 横向 128 个点
- 纵向 64 个点
- 一共 8192 个小灯
OLED 屏幕就是一个点阵:
点 点 点 点 ...... 128个
点 点 点 点 ......
点 点 点 点 ......
......
64行
- 你告诉单片机:
- 第 3 行第 5 列 → 亮
- 第 3 行第 6 列 → 灭
- ......
- 无数个点组合 → 就变成字、图、数字
这就叫:点阵显示原理
OLED 0.96 常用 IIC 通信只用到 4 根线:
- VCC ------ 供电
- GND ------ 接地
- SDA ------ 数据(发 0 和 1)
- SCL ------ 时钟(同步节奏)
这就是:串行通信(只用两根线传数据)
LCD1602 对比
| LCD1602 | OLED 0.96 | |
|---|---|---|
| 显示方式 | 字符型(固定字母) | 点阵型(任意显示) |
| 能不能显示汉字 | 不能 | 能 |
| 接线 | 很多线 | 4 根线 |
| 清晰度 | 一般 | 很高 |
| 功耗 | 较高 | 很低 |
| 视角 | 差 | 超好 |
IIC 通信原理(只看 SDA、SCL 高低电平)
IIC 只需要 2 根线:
- SCL :时钟线 → 负责打节拍
- SDA :数据线 → 负责发 0 和 1
1. 先记住 4 种电平状态
高电平 = 1 = 没电
- 低电平 = 0 = 拉低
2. IIC 最核心规则(小白必背)
只有 SCL 是低电平时,SDA 才能变。 SCL 是高电平时,SDA 不能变,这时候代表 "读数据"。
3. 完整电平变化流程
① 起始信号(开始通信)
- SCL 高
- SDA 高 → 低
单片机说:"喂!OLED,我要发数据了!"
② 发 1 个 bit(0 或 1)
- SCL 拉低
- SDA 变成 0 或 1
- SCL 拉高 → OLED 在这一刻读取 SDA 的值
- SCL 拉低
重复 8 次 = 发 1 个字节。
③ 停止信号(结束通信)
- SCL 高
- SDA 低 → 高
意思:"发完了,拜拜!"
🔥 IIC 小白终极总结
- SCL = 打拍子
- SDA = 说 0 或 1
- 拍子低 → 改说啥
- 拍子高 → 对方听
- 开头:SDA 从高变低
- 结尾:SDA 从低变高
显示一个字的完整步骤
- 单片机通过 IIC 给 OLED 发命令 :
- 我要在第几行、第几列写
- 单片机把字模数据(一堆 0 和 1)通过 IIC 发给 OLED
- OLED 收到数据,对应位置点亮 / 熄灭
- 字就显示出来了
OLED 如何显示:超声波距离、舵机角度
1. 显示超声波距离
你代码里有:
distance_cm; // 比如 15cm
-
单片机拿到数字
15 -
把
1和5变成字模 -
通过 IIC 发给 OLED
-
OLED 显示:
距离:15 cm
2. 显示舵机角度
zhuanjiao = 15; // 90度
-
把
zhuanjiao换算成角度 -
转成字符串:
90 -
发给 OLED
-
显示:
角度:90°
最终效果(你能看到的)
OLED 上会显示:
距离:18 cm
角度:90°
状态:前进