OLED点阵显示原理与IIC通信详解

OLED = 有机发光二极管 你可以理解成:屏幕上有无数个 tiny 小灯,每个小灯可以单独亮 / 灭

  • 亮 = 发光
  • 灭 = 黑色
  • 控制哪些亮、哪些灭 → 就显示出文字、图案
  • 很小一块屏
  • 黑底、蓝字 / 白字 / 黄字
  • 分辨率一般是 128×64
    • 横向 128 个点
    • 纵向 64 个点
    • 一共 8192 个小灯

OLED 屏幕就是一个点阵

复制代码
点 点 点 点 ...... 128个
点 点 点 点 ......
点 点 点 点 ......
......
64行
  • 你告诉单片机:
    • 第 3 行第 5 列 → 亮
    • 第 3 行第 6 列 → 灭
    • ......
  • 无数个点组合 → 就变成字、图、数字

这就叫:点阵显示原理

OLED 0.96 常用 IIC 通信只用到 4 根线:

  1. VCC ------ 供电
  2. GND ------ 接地
  3. SDA ------ 数据(发 0 和 1)
  4. 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)
  1. SCL 拉低
  2. SDA 变成 0 或 1
  3. SCL 拉高 → OLED 在这一刻读取 SDA 的值
  4. SCL 拉低

重复 8 次 = 发 1 个字节


③ 停止信号(结束通信)
  • SCL 高
  • SDA 低 → 高

意思:"发完了,拜拜!"


🔥 IIC 小白终极总结

  • SCL = 打拍子
  • SDA = 说 0 或 1
  • 拍子低 → 改说啥
  • 拍子高 → 对方听
  • 开头:SDA 从高变低
  • 结尾:SDA 从低变高

显示一个字的完整步骤

  1. 单片机通过 IIC 给 OLED 发命令
    • 我要在第几行、第几列写
  2. 单片机把字模数据(一堆 0 和 1)通过 IIC 发给 OLED
  3. OLED 收到数据,对应位置点亮 / 熄灭
  4. 字就显示出来了

OLED 如何显示:超声波距离、舵机角度

1. 显示超声波距离

你代码里有:

复制代码
distance_cm;  // 比如 15cm
  1. 单片机拿到数字 15

  2. 15 变成字模

  3. 通过 IIC 发给 OLED

  4. OLED 显示:

    复制代码
    距离:15 cm

2. 显示舵机角度

复制代码
zhuanjiao = 15;  // 90度
  1. zhuanjiao 换算成角度

  2. 转成字符串:90

  3. 发给 OLED

  4. 显示:

    复制代码
    角度:90°

最终效果(你能看到的)

OLED 上会显示:

复制代码
距离:18 cm
角度:90°
状态:前进
相关推荐
钟剑锋-JeffChong2 年前
stm32程序调试方式(OLED显示屏调试以及Keil调试模式)
stm32·单片机·嵌入式·oled显示屏·keil调试模式