嵌入式学习:OLED_SSD1306芯片手册阅读

SSD1306

具体代码请看下一篇

初始化

在这里插入图片描述

Set Display Off(显示关闭)— 0xAE

核心原因:避免上电瞬间的“乱码闪烁”或“鬼影”

当你给 SSD1306 上电后,它会进入一个 不确定状态,此时:

  • 内部寄存器可能被随机初始化
  • 显示内存(GRAM)可能包含垃圾数据
  • 如果立即开启显示,屏幕上会出现 杂乱的图案、闪烁或花屏

X[0]=0b:显示关闭(睡眠模式)

Set Display ON (开启显示) — 0xAF

(RESET) AFh X[0]=1b:正常模式下显示 ON

Set Display Clock Divide Ratio/Oscillator Frequency (设置时钟分频比和振荡器频率) — 0xD5, 0X80

Oscillator Circuit and Display Time Generator(振荡电路和显示时间发生器)

在这里插入图片描述

该模块是一个片上低功耗 RC 振荡电路。操作时钟(CLK)可以由内部振荡器或外部源 CL 引脚产生。该选择由 CLS 引脚完成。如果 CLS 引脚被拉高,则选择内部振荡器,CL 应保持悬空。将 CLS 引脚拉低会禁用内部振荡器,并且必须将外部时钟连接到 CL 引脚以正常工作。当选择内部振荡器时,其输出频率 Fosc 可以通过命令 D5h A[7:4]改变。显示时序发生器的显示时钟(DCLK)由 CLK 导出。分频因子“D”可以通过命令 D5h 编程设置为 1 到 16。
DCLK=FOSC/D DCLK = F_{OSC}/D DCLK=FOSC/D
显示的帧频率由以下公式确定:
FFRM=FoscD×K×No. of Mux \text{F}_{{}_{\text{FRM}}}=\frac{\text{F}_{{}_{\text{osc}}}}{\text{D}\times \text{K}\times\text{No. of Mux}} FFRM=D×K×No. of MuxFosc

  • D 代表时钟分频比。它由命令 D5h A[3:0]设置。分频比的范围从 1 到 16。
  • K 是每行显示时钟的数量。K = Phase 1 period + Phase 2 period + BANK0 pulse width = 2 + 2 + 50 = 54 at power on reset
  • Number of multiplex ratio is set by command A8h.上电复位值为 63(即 64MUX)。
  • F 是振荡器频率。它可以通过命令 D5h A[7:4]改变。寄存器设置越高,频率越高。

**0xD5:**设置分频比,分频比= A[3:0] + 1,Reset值为0000b(分频比=1)

**0x80:**设置振荡频率,振荡器频率随 A[7:4]的值增加而增加,反之亦然。RESET 为 1000b。 范围:0000b~1111b

Set Multiplex Ratio(设置多路复用比)— 0xA8, 0X3F

该指令将默认的 63 路复用模式切换到任意复用比例,范围从 16 到 63。输出引脚 COM0~COM63 将切换到相应的 COM 信号。

**0xA8:**设置 MUX 比率至 N+1 MUX N=A[5:0]:从 16MUX 至 64MUX,RESET=111111b(即 63d,64MUX)A[5:0]从 0 到 14 都是无效输入。

**0x3F:**明确设置为 64MUX,即使它是默认值

Set Display Offse(设置显示偏移)— 0xD3, 0x00

这是一个双字节命令。第二个命令指定显示起始行映射到 COM0~COM63 之一(假设 COM0 是显示起始行,则显示起始行寄存器等于 0)。

例如,要将 COM16 向 COM0 方向移动 16 行,第二个字节的 6 位数据应为 010000b。要向相反方向移动 16 行,6 位数据应为 64-16,因此第二个字节为 100000b。以下两个表(表 10-1、表 10-2)显示了设置 C0h/C8h 和 D3h 的示例。

通过 COM 设置垂直位移,范围为 0d~63d。在 RESET 后,该值会重置为 00h。

Set Display Start Line(设置起始行) — 0x40

该命令设置显示起始行寄存器,通过从 0 到 63 中选择一个值来确定显示 RAM 的起始地址。当值为 0 时,RAM 行 0 映射到 COM0。当值为 1 时,RAM 行 1 映射到 COM0,以此类推。

Set display RAM display start line register from 0-63 using X 5X 3X 2X 1X 0. Display start line register is reset to 000000b during RESET.

Set Charge Pump(设置充电泵)— 0x8D, 0x10

电荷泵(Charge Pump) 就是一个 内部 DC-DC 升压电路,它能把 3.3V/5V 输入升压到约 9V 或更高,供 OLED 使用。

SSD1306_SendCommand(0x8D); // Set Charge Pump Enable
SSD1306_SendCommand(0x14); // Enable charge pump (recommended)
  • 命令字节:0x8D
  • 参数字节:
    • 0x10禁用电荷泵(默认上电状态!)
    • 0x14启用内部电荷泵

Set Segment Re-Map(设置段重映射)— 0xA1

该命令更改显示屏数据列地址与段驱动之间的映射。它允许 OLED 模块设计的灵活性。请参考表 9-1。该命令仅影响后续数据输入。已存储在 GDDRAM 中的数据将不会发生变化。

A0h, X[0]=0b: 列地址 0 映射到SEG0 (RESET)

A1h, X[0]=1b:列地址 127 映射到SEG0(镜像)

Set COM Output Scan Direction (设置COM输出扫描方向) — 0xC8

该命令设置 COM 输出的扫描方向,允许在 OLED 模块设计中实现布局的灵活性。此外,一旦发出此命令,显示将显示。例如,如果在正常显示期间发送此命令,图形显示将立即垂直翻转。请参考表 10-3 以获取详细信息。

  • C0h, X[3]=0b: 正常模式(Reset)扫描自COM0 到 COM[N-1]
  • C8h, X[3]=1b: 重映射模式。扫描自COM[N-1]到 COM0, (可设置上下翻转)

​ 其中 N 是复用比率。

Set COM Pins Hardware Configuration(设置串行端口引脚硬件配置)— 0xDA, 0x12

此命令设置 COM 信号引脚配置以匹配 OLED 面板的硬件布局。下表显示了不同条件下的 COM 引脚配置(对于 MUX 比率=64):

A[4]=0b, 顺序 COM 引脚配置 A[4]=1b(RESET), 替代 COM 引脚配置

A[5]=0b(复位), 禁用 COM 左右重映射 A[5]=1b, 启用 COM 左右重映射

Set Contrast Control (设置对比度控制) — 0x81, 0xCF

该命令设置显示的对比度设置。芯片具有从 00h 到 FFh 的 256 级对比度。随着对比度级值的增加,段输出电流也会增加。

双字节命令,从 256 种中选择 1 种。

对比步骤。对比度随值的增加而增加。(RESET = 7Fh )

Set Pre-Charge Period (设置预充电周) — 0xD9, 0xF1

此命令用于设置预充电期的持续时间。间隔以 DCLK 的数量计算,其中 RESET 等于 2 DCLK。

A[3:0]:第一阶段周期最长为 15 个 DCLK 时钟 0 是无效输入(RESET=2h)

A[7:4] : 第二阶段周期最长为 15 DCLK 时钟 0 为无效输入(RESET=2h )

OLED 像素本质上是 有机发光二极管,其阳极需要先被“预充电”到一定电压,才能在正式点亮时快速响应并稳定发光。

SSD1306 将这个过程分为两个阶段:

📌 阶段 1(Phase 1):从 COM 信号开始上升到达到阈值

  • 时间由 A[3:0] 设置(1~15 DCLK)
  • 不能为 0(无效,会被忽略或视为默认值)

📌 阶段 2(Phase 2):从阈值到完全充电完成

  • 时间由 A[7:4] 设置(1~15 DCLK)
  • 不能为 0

Set VCOMH Deselect Level(设置VCOMH取消选择级别)— 0xDB, 0x30

此命令调整 Vregulator 输出。

A[6:4]Hex codeV COMH deselect level特点
000b00h~ 0.65 x Vcc对比度高,但可能出现残影(暗处发灰)
010b20h~ 0.77 x Vcc (RESET)上电复位默认值,平衡性好
011b30h~ 0.83 x Vcc推荐值,减少残影,提升黑色纯度

在 OLED 显示技术中:

  • VCOMH公共电极(Common Electrode)在“非选通”状态下的电压水平
  • OLED 像素由 阳极(Segment)阴极(Common, COM) 构成。
  • 当某一行被选中(扫描到该行)时,COM 被拉低(比如到 0V),而 SEG 上加数据电压 → 像素点亮。
  • 当该行未被选中时,COM 会被拉高到 VCOMH 电平,此时即使 SEG 有电压,像素也不会导通(因为压差不够)

Set Entire Display On/Off (打开/关闭整个显示屏) — 0xA4

A4h 指令根据 GDDRAM 内容使显示屏输出。

如果发出 A5h 指令,则通过使用 A4h 指令,显示屏将恢复到 GDDRAM 内容。换句话说,A4h 指令从整个显示屏“开启”阶段恢复显示。

A5h 指令强制整个显示屏为“开启”状态,无论显示数据 RAM 中的内容如何。

  • A4h, X0=0b: 恢复到 RAM 内容显示(RESET)输出跟随 RAM 内容
  • A5h, X0=1b: 整个显示屏开启 输出忽略 RAM 内容

Set Normal/Inverse Display (设置正常/反转显示) —

该指令将显示屏设置为正常或反转模式。在正常显示模式下,RAM 数据中的 1 表示“开启”的像素,而在反转显示模式下,RAM 数据中的 0 表示“开启”的像素。

  • A6h, X[0]=0b: 正常显示(RESET) RAM 中为 0: 显示面板关闭 RAM 中为 1: 显示面板开启
    启 输出忽略 RAM 内容

Set Normal/Inverse Display (设置正常/反转显示) —

该指令将显示屏设置为正常或反转模式。在正常显示模式下,RAM 数据中的 1 表示“开启”的像素,而在反转显示模式下,RAM 数据中的 0 表示“开启”的像素。

  • A6h, X[0]=0b: 正常显示(RESET) RAM 中为 0: 显示面板关闭 RAM 中为 1: 显示面板开启
  • A7h, X[0]=1b: 反转显示 RAM 中为 0:显示面板中为 ONRAM 中为 1:显示面板中为 OFF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值