SSD1306 初始化配置说明
关于具体的代码实现,请参见后续章节内容。
显示开关控制
Set Display Off(关闭显示)— 命令码 0xAE
- X[0] = 0b:进入显示关闭状态(睡眠模式)
核心作用:防止上电瞬间出现“乱码闪烁”或“鬼影”现象。
当 SSD1306 刚通电时,芯片处于未定义的初始状态:
- 内部寄存器可能被随机赋值
- 显存(GRAM)中可能存在残留数据
若此时直接开启显示,屏幕很可能显示出杂乱图案、花屏或异常闪烁。因此,在初始化流程开始前先执行关显示操作,是确保显示稳定的关键步骤。
Set Display ON(开启显示)— 命令码 0xAF
- RESET 后默认值为 AFh,X[0] = 1b:进入正常工作模式并打开显示输出
时钟与振荡器设置
Set Display Clock Divide Ratio/Oscillator Frequency — 命令序列 0xD5, 0x80
该功能涉及振荡电路和显示时序发生器模块,其主要构成如下:
- 片上集成低功耗 RC 振荡器
- 支持内部或外部时钟源选择
通过 CLS 引脚决定时钟来源:
- CLS 高电平:启用内部振荡器,CL 引脚悬空
- CLS 低电平:禁用内部振荡器,需外接时钟信号至 CL 引脚
当使用内部振荡器时,其输出频率 Fosc 可通过命令 D5h 的 A[7:4] 位进行调节。显示时钟 DCLK 由主时钟分频得到,公式为:
DCLK = FOSC / D
其中 D 为可编程分频系数,取值范围为 1 到 16,由命令 D5h 的 A[3:0] 设置。
帧刷新率(Frame Rate)由以下公式决定:
FFRM = Fosc / (D × K × Number of Mux)
- D:时钟分频比(命令 D5h A[3:0] 控制)
- K:每行对应的时钟周期数,上电复位后 K = Phase1 + Phase2 + BANK0 pulse width = 2 + 2 + 50 = 54
- Multiplex Ratio(MUX 数量):由命令 0xA8 设置,默认为 63(即 64MUX)
- Fosc:振荡器频率,可通过 D5h A[7:4] 调整,数值越大频率越高
详细参数说明:
- 0xD5:设置分频比,实际分频值 = A[3:0] + 1;复位默认值为 0000b(对应分频比为 1)
- 0x80:设定振荡频率初始值,A[7:4] 越大则频率越高;复位值为 1000b,有效范围为 0000b ~ 1111b
多路复用比率配置
Set Multiplex Ratio — 命令序列 0xA8, 0x3F
此命令用于设定 COM 输出端口的数量,即可驱动的行数。支持从 16MUX 至 63MUX(即 16 到 64 行)之间的任意配置。
COM0~COM63 将根据设定值动态映射到相应的扫描线。
- 0xA8:设置 MUX 比率为 N+1,其中 N = A[5:0];复位值为 111111b(即 63d,代表 64MUX)
- A[5:0] 取值在 0 到 14 之间为无效输入
- 0x3F:显式设置为 64MUX,即使该值已是默认值,也建议明确写入以增强兼容性
显示偏移设置
Set Display Offset — 命令序列 0xD3, 0x00
这是一个双字节命令,第二字节用于指定显示起始行相对于 COM0 的垂直偏移量(0~63),从而实现画面整体上下移动。
例如:
- 若希望将 COM16 对齐至 COM0 位置,向上偏移 16 行,则第二个字节设为 010000b(即 16)
- 若向下偏移 16 行,则偏移值为 64 - 16 = 48,对应二进制 110000b(即 48)
该设置可用于校正物理安装偏差或实现滚动效果。系统复位后该寄存器自动清零(00h)。
设置显示起始行
Set Display Start Line — 命令码 0x40
该命令用于设定显示 RAM 中哪一行作为当前显示的第一行(映射到 COM0)。参数范围为 0 到 63:
- 0x40:起始行为第 0 行 → RAM 行 0 映射到 COM0
- 0x41:起始行为第 1 行 → RAM 行 1 映射到 COM0
- 依此类推...
此命令仅改变显示映射关系,不影响显存内容本身,常用于快速实现画面垂直翻滚而无需重写数据。
设置显示 RAM 的起始行寄存器(0–63),使用指令 X5X4X3X2X1X0。在系统复位(RESET)时,该寄存器将被重置为 000000b。
设置充电泵(Set Charge Pump)— 0x8D, 0x10
电荷泵(Charge Pump) 是一种内置的 DC-DC 升压电路,能够将输入电压(如 3.3V 或 5V)提升至约 9V 或更高,以满足 OLED 屏幕的工作需求。
SSD1306_SendCommand(0x8D); // 启用充电泵设置 SSD1306_SendCommand(0x14); // 开启内部电荷泵(推荐配置)
命令字节:
0x8D
参数字节:
0x10
→ 禁用内部电荷泵(默认上电状态)
0x14
→ 启用内部电荷泵
设置段重映射(Set Segment Re-Map)— 0xA1
此命令用于调整显示屏的数据列地址与段驱动器之间的映射关系,提高 OLED 模块设计的灵活性。具体配置可参考表 9-1。该操作仅影响后续写入的数据,GDDRAM 中已存储的内容不会发生改变。
- A0h, X[0]=0b:列地址 0 映射到 SEG0(复位状态)
- A1h, X[0]=1b:列地址 127 映射到 SEG0(镜像模式)
设置 COM 输出扫描方向 — 0xC8
该命令控制 COM 驱动信号的扫描顺序,支持 OLED 面板布局的多样化设计。一旦执行此命令,显示画面会立即响应变化。例如,在正常显示过程中发送此命令,图像将垂直翻转。
- C0h, X[3]=0b:正常扫描模式(复位值),从 COM0 扫描至 COM[N-1]
- C8h, X[3]=1b:反向扫描模式,从 COM[N-1] 扫描至 COM0(实现上下翻转)
注:N 表示当前设定的复用比率(MUX Ratio)。
设置 COM 引脚硬件配置 — 0xDA, 0x12
此命令用于配置 COM 信号引脚的物理连接方式,以适配不同 OLED 面板的硬件结构。以下为 MUX 比率为 64 时的配置选项:
- A[4]=0b:顺序 COM 引脚排列
- A[4]=1b(复位值):交替 COM 引脚排列
- A[5]=0b(复位值):禁用 COM 左右重映射
- A[5]=1b:启用 COM 左右重映射功能
设置对比度控制 — 0x81, 0xCF
通过该命令调节 OLED 显示屏的对比度水平。芯片支持从 00h 到 FFh 共 256 级亮度调节。随着数值增大,段驱动电流增强,显示对比度也随之提升。
这是一个双字节命令,允许从 256 种级别中选择其一。复位默认值为 7Fh。
设置预充电周期 — 0xD9, 0xF1
此命令定义 OLED 像素预充电阶段的时间长度,时间单位为 DCLK 周期数,复位时默认为 2 个 DCLK。
- A[3:0]:第一阶段持续时间,范围为 1–15 DCLK(0 为无效值,默认为 2h)
- A[7:4]:第二阶段持续时间,范围为 1–15 DCLK(0 为无效值,默认为 2h)
OLED 像素本质上是有机发光二极管,其阳极需先进行“预充电”至一定电压,才能在点亮时快速响应并稳定发光。SSD1306 将此过程分为两个阶段:
- 阶段 1(Phase 1):从 COM 信号开始上升至达到导通阈值,持续时间由 A[3:0] 控制(1–15 DCLK),不可设为 0。
- 阶段 2(Phase 2):从阈值继续充电至完全饱和,持续时间由 A[7:4] 控制(1–15 DCLK),同样不能为 0。
设置 VCOMH 取消选择电平 — 0xDB, 0x30
该命令用于调节 Vregulator 的输出电压,进而影响 VCOMH 的电平设置。不同配置如下表所示:
| A[6:4] | 十六进制码 | VCOMH 取消极电平 | 特性说明 |
|---|---|---|---|
| 000b | 00h | ~0.65 × Vcc | 对比度高,但可能出现残影(暗区发灰) |
| 010b | 20h | ~0.77 × Vcc | 上电复位默认值,性能均衡 |
| 011b | 30h | ~0.83 × Vcc | 推荐设置,减少残影,提升黑色纯净度 |
在 OLED 技术中,VCOMH 指的是公共电极(Common Electrode)在非选通状态下的电压水平。每个 OLED 像素由阳极(Segment)和阴极(Common, COM)组成,精确控制 VCOMH 有助于优化显示质量。
在 OLED 显示驱动中,像素的点亮通过行(COM)与列(SEG)之间的电压差实现。当某一行被选中(即扫描到该行)时,对应的 COM 信号会被拉低至低电平(如 0V),同时在 SEG 线上施加数据电压,从而形成足够的电位差使像素导通并点亮。
而当该行未被选中时,COM 信号将保持在高电平状态(例如 VCOMH),此时即使 SEG 上存在电压,由于两端压差不足,像素仍处于关闭状态,不会被点亮。
接下来介绍几个关键的显示控制指令:
Set Entire Display On/Off(开启/关闭整个显示屏)— 指令码 0xA4
该指令用于控制显示屏是否根据 GDDRAM 中的数据进行输出显示。
- A4h 指令:显示屏恢复为依据 GDDRAM 内容显示模式。即每个像素的状态由显存中的数据决定,此为默认或复位状态。
- A5h 指令:强制整个显示屏进入“全开”状态,忽略 GDDRAM 中的实际数据内容,所有像素均被点亮。
具体配置如下:
- A4h, X0=0b:启用 RAM 控制模式,输出跟随显存内容。
- A5h, X0=1b:启用全局点亮模式,输出不受 RAM 数据影响。
Set Normal/Inverse Display(设置正常/反转显示模式)
此命令允许切换显示的极性,即正常显示或反相显示。
- 在正常显示模式下,GDDRAM 中值为 1 的位对应点亮的像素,值为 0 的位则对应熄灭的像素。
- 在反转显示模式下,逻辑相反:GDDRAM 中值为 0 表示像素点亮,值为 1 表示像素关闭。
对应的指令设置包括:
- A6h, X[0]=0b:设置为正常显示模式(复位状态)。此时 RAM 值为 0 → 像素关闭;RAM 值为 1 → 像素开启。
- A7h, X[0]=1b:设置为反转显示模式。此时 RAM 值为 0 → 像素开启;RAM 值为 1 → 像素关闭。


雷达卡


京公网安备 11010802022788号







