OLED 驱动器 SSD1309

SSD1309 是一款 128 * 64 像素的 OLED/PLED 驱动控制器。专为共阴极 OLED 面板而设计,LCD 面板不能使用。

OLED:有机发光二极管
PLED:聚合物发光二极管,柔性好,尚未广泛应用。
二者都不需要背光,都是自发光。

特性

  • 分辨率:128 * 64 点阵面板
  • 供电:IC 供电 VDD = 1.65V ~ 3.3V、面板驱动供电 VCC = 7.0V~16.0V
  • 256 级对比度调节
  • 内嵌 128 x 64 bit SRAM 显示缓存
  • 多种 MCU 接口:
    • 8-bit 6800/8080 并口
    • 3/4 线串行 SPI 接口 (本文使用 4 线 SPI 接口)
    • I2C 接口
  • 片上晶振,典型值 450KHz,范围 360~540KHz。
  • 可编程帧频率
  • 使用温度范围:-40℃ ~ 85℃

引脚描述

  • BS 引脚
    在这里插入图片描述

  • CS#:片选信号,低有效

  • RES#:复位信号,低有效

  • D/C#:数据/命令控制引脚,IIC 作为地址引脚,3 线 SPI 接口必须接地。

  • R/W#、E 引脚,串行接口必须接地

MCU 串行接口(4 线 SPI)

四线指的是:SCLK、SDIN,D/C#、CS#
在 SCLK 的上升沿,SDIN 上的数据位送入移位寄存器,顺序是 D7、D6…D0。D/C# 引脚信号在每个字节的第八个时钟采样,在这个时钟采样周期中,移位寄存器数据被写入到图形显示 RAM 或命令寄存器。

在串行模式中,只能写操作

四线串口模式时序图:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

帧频率

帧频率由以下公式确定:
在这里插入图片描述
这里:

  • D:时钟分频因子,由命令 D5h 设置,取值范围 1~16
  • K:每行需要的显示时钟数目:阶段 1 周期 + 阶段 2 周期 + 65。上电复位后,阶段 1 周期 = 阶段 2 周期 = 2 (可由设置预充电周期 D9h 命令设置)
  • No. of Mux:多路复用因子,由命令 A8h 设置,上电默认值为 63
  • FOSC:晶振频率,可由 D5h 命令更改

按照上电默认配置,FFRM = 450000/1/69/64 ≈ 102 帧

注:买到的显示屏为了简化硬件电路,一般会定义好 Mux 数值,比如我买的显示屏在手册中明确规定 Drive Duty 为 1/64,这就要求 A8h 命令必须设置为 63 (3Fh)。

Mux :multiplex ratio(复用比率)。指的是在一个矩阵 LCD 中,行电极被共享的程度。换句话说,它是用来描述同时驱动多行像素的方式。比如 Drive Duty 为 1/64,这意味着如果 LCD 屏幕有 64 行像素(一个 8*8 的字符,占用 8 行像素),则每一行每隔 64 个时间周期才被更新一次。换句话说,为了控制整个屏幕,控制器会在每个时间间隔内选择不同的行进行刷新,每64次循环后,所有行都被刷新了一次。

在一个 1/64 占空比的 LCD 中,驱动器会将电压施加到一个特定的行上,并同时为所有列提供数据信号,以此来设置该行中各个像素的状态。然后,在下一个时间周期里,它会移动到下一行并重复这一过程,直到所有 64 行都已经被更新过。

较高的复用比率(例如 1/64)通常会导致对比度下降和响应速度变慢(帧频率变慢),因为每个像素接收到的有效电压时间和频率较低。这可能会导致图像模糊或者颜色不够鲜明。

复位电路

RES# 引脚为低电平时,内部复位成:

  • 显示关闭
  • 128x64显示模式
  • 显示地址复位到 RAM 00h 地址
  • 移位寄存器数据清除
  • 列地址计数器设置为 0 ,对比度控制寄存器设置为 7Fh
  • 正常显示模式

注意:复位低电平最少应持续 3us。

上电初始化序列:

  1. 电源关闭状态
  2. VDD 上电
  3. 等待电源稳定,建议使用软件延时
  4. 设置 RES# 为低电平,至少 3us,然后设置为高,
  5. 设置引脚 RES# 为高电平,然后延时至少 3us
  6. 引脚 RES# 置低至少 3us 后,VCC 上电,延时 100ms,等待 VCC 稳定。

发送命令 AFh 开启显示,SEG/COM 在 100ms 后开启。

图形显示 RAM

静态 RAM,大小为 128 x 64 个位,分成 8 个页面(page),分别为 PAGE0 ~ PAGE7。

COMx:公共引脚
SEGx:段引脚

公共引脚和段引脚可以通过软件重映射,实现 180° 反转效果,这样做可以让产品的结构设计更灵活。

像图形显示 RAM 中写 一字节 数据,填充的是 当前页面一列 (即由列地址指针执行的整个列,共 8bit)。数据位 D0 写入顶行,D7 写入底行:

在这里插入图片描述
为了显示内容垂直移动,可以通过 D3h 命令设置一个内部寄存器,该寄存器存储显示开始的 ,通过该寄存器控制 RAM 数据的哪些部分映射到显示器上。

命令表

1 基本命令


  • 81h + 对比度值:设置对比度 ( 256 级 ),功耗随对比度值增加而增加。
  • A4/A5h:开启显示方式
    • A5:不管显示 RAM 内容,整个显示全部开启
    • A4:根据显示 RAM 内容显示(复位默认值),推荐使用这种方式,可以达到省电、增加 OLED 面板使用寿命
  • A6/A7h:设置显示模式
    • A6:正常显示模式,显示 RAM 为 0 表示关闭显示面板
    • A7:反向显示模式,显示 RAM 为 0 表示关闭显示面板
  • AE/AFh:设置显示开/关
    • AE:显示关(睡眠模式)(复位默认值)
    • AF:显示开
  • E3h:NOP
  • FDh + 12/16h:设置命令锁
    • 12:解锁 OLED 驱动 IC MCU 接口
    • 16:上锁
      注:一旦上锁,除了 FDh 命令外,其它所有命令包括内存访问都被禁止

2 滚屏命令


  • 26/27h:连续水平滚屏(内容左右滚动,最多可以 128 列滚动)。该命令由七个连续字节组成,用于设置水平滚动参数,包括滚动起始页、结束页、滚动速度、起始列和结束列。
    注意:在发出此命令之前,必须停用水平滚动(2Eh)。否则,RAM内容可能会损坏。
    在这里插入图片描述

  • 29/2Ah:连续垂直和水平滚屏。该命令由七个连续字节组成,用于设置连续垂直滚动参数,包括滚动起始页、结束页、滚动速度和垂直滚动偏移;
    如果命令 29h/2Ah 的垂直滚动偏移字节 E[5:0] 设置为零,则仅执行水平滚动(如命令 26/27h)。另一方面,如果列滚动偏移字节 A[0] 设置为零,则仅执行垂直滚动。
    如果 A[0] 和 E[5:0] 都设置为非零,则将启用连续对角线(水平+垂直)滚动,而通过设置 F[7:0]=00h 和 G[7:0]=7Fh 建议使用全列对角线滚动模式。
    注意:在发出此命令之前,必须停用滚动(2Eh),否则 RAM 内容可能会损坏。
    例1:全屏滚动
    在这里插入图片描述
    例2:部分滚动
    在这里插入图片描述
    例3:对角线滚动
    在这里插入图片描述

  • 2Eh:取消滚屏,注意取消滚屏后,需要重写 RAM 数据

  • 2Fh:启动滚屏,必须先设置滚屏参数,然后紧跟着使用 2Fh 命令启动滚屏
    激活滚动后,禁止执行以下操作:
    1 RAM 访问(数据写入或读取)
    2 更改水平滚动设置参数

  • A3h:设置垂直滚动区域,配合 29/2Ah 命令,实现部分垂直滚动。

  • 2C/2Dh:内容滚屏设置,一次滚动一列像素。
    此命令由七个连续字节组成,包括水平滚动参数并确定滚动起始页、结束页、起始列和结束列。
    注意:如果连续发送 2C/2Dh 命令,两次发送之间需至少延时 2/FrameFreq ,如果帧速率为 100 ,则延时 20ms。

3 寻址设置命令


  • 20h + 0~3:设置内存地址模式(水平寻址、垂直寻址、页面寻址)

    • 页面寻址:在读/写显示 RAM 后,列地址指针会自动增加 1。如果列地址指针到达列结束地址,则列地址指针重置为列开始地址,页地址指针不变。用户必须设置新的页面和列地址,才能访问下一页 RAM 内容
      在这里插入图片描述
      必须使用下列步骤定义起始 RAM 指针位置:
      1 设置页起始地址,通过命令 B0~B7h 完成;
      2 设置列起始地址的低四位,通过命令 00~0Fh 完成
      3 设置列起始地址的高四位,通过命令 10~1Fh 完成
      例如,如果页面地址设置为 B2h,列起始地址的低四位为 03h,列起始地址的高四位 10h,则意味着起始列是 PAGE2 的SEG3。RAM 访问指针的位置如图:
      在这里插入图片描述

    • 水平寻址
      在水平寻址模式下,在读取/写入显示 RAM 后,列地址指针会自动增加 1。如果列地址指针到达列结束地址,则列地址指针重置为列开始地址,页地址指针增加 1。当列和页地址指针都到达结束地址时,指针将重置为列开始地址和页开始地址。
      在这里插入图片描述

    • 垂直寻址
      在垂直寻址模式下,在读取/写入显示 RAM 后,页面地址指针会自动增加 1。如果页地址指针到达页结束地址,则页地址指针重置为页开始地址,列地址指针增加 1。当列和页地址指针都到达结束地址时,指针将重置为列开始地址和页开始地址。
      在这里插入图片描述
      在水平/垂直寻址模式下,需要以下步骤来定义 RAM 访问指针位置:
      1 设置目标显示位置的列开始结束地址,通过命令 21h 完成
      2 设置目标显示位置的页开始结束地址,通过命令 22h 完成

  • 00~0Fh:在页寻址模式下,设置显示 RAM 的列起始地址的低四位。每次数据访问(读写 RAM )时,列地址都会递增。
    上电默认为 0。
    注:仅用于页寻址模式

  • 10~1Fh:在页寻址模式下,设置显示 RAM 的列起始地址的高四位。
    上电默认为 0。
    注:仅用于页寻址模式

  • B0~B7h:在页寻址模式下,设置页起始地址,注:仅用于页面寻址模式

  • 21h + 列起始地址 + 列结束地址:此三字节命令指定显示数据 RAM 的列起始地址和结束地址。此命令还将列地址指针设置为列起始地址。此指针用于定义图形显示数据RAM中的当前读/写列地址。
    默认为 0~127。
    注:仅用于水平或垂直寻址模式

  • 22h + 页起始地址 + 页结束地址:此三字节命令指定显示数据 RAM 的页开始地址和结束地址。此命令还将页地址指针设置为页开始地址。此指针用于定义图形显示数据 RAM 中的当前读/写页地址。
    默认 0~7。
    注:仅用于水平或垂直寻址模式
    下图显示了列和页地址指针移动的方式:列起始地址设置为 2,列结束地址设置为 97,页起始地址设置 1,页结束地址设置 2;通过命令 20h 启用水平地址增量模式。在这种情况下,图形显示数据 RAM 列的可访问范围是从列 2 到列 97,并且仅从页面 1 到页面 2。此外,列地址指针被设置为 2,页地址指针被设为 1。在完成一个像素的数据读/写后,列地址会自动增加 1,以访问下一个 RAM 位置进行下一次读/写操作。每当列地址指针完成对结束列 97 的访问时,它就会重置回列 2,页面地址会自动增加 1。当访问页 2和列 97 的 RAM 位置时,页地址重置为 1,列地址重置为 2。
    在这里插入图片描述

4 硬件配置命令


  • 40~7Fh:设置显示起始行,当下发 40h 命令时,RAM 的第 0 行映射到 COM0,当下发 41h 命令时,RAM 的第 1 行映射到 COM0,依次类推。
  • A0/A1h:设置段重映射,此命令仅影响后续数据输入。已存储在GDDRAM中的数据将保持不变。
    • A0h:列地址 0 映射到段 0 (SEG0)
    • A1h:列地址 127 映射到段 0 (SEG0)
  • A8h + 15~63d:设置多路复用比率,注意需要查看显示屏供应商手册,以确定该值。供应商产品的硬件电路决定了该值。
  • C0/C8h:设置公共(COM)输出扫描方向,一旦设置后,立即生效。
    • C0h:正常模式,扫描方式为从 COM0 ~ COM[N-1] (上电默认值)
    • C8h:重映射模式,扫描方式为 COM[N-1] ~ COM0
      这里 N 为多路复用比率。
  • D3h + 00~63d:设置显示垂直偏移。双字节命令,第二个命令指定显示起始行到COM0-COM63之一的映射(假设COM0是显示起始行,则显示起始行寄存器等于0)。
    这与设置显示起始行寄存器(40~47h命令)效果相等。
  • DAh + X:设置 COM 引脚硬件配置:顺序 COM 引脚配置和交替 COM 引脚配置(默认)、禁止(默认)/使能 COM 左/右重映射。
  • DCh + 0~3d:设置 GPIO
  • D5h + X:定义显示时钟(DCLK)的分频比、设置晶振频率(频率随设置值的增加而增加)
  • D9h + X:设置预充电周期
  • DBh + X:设置 COM 信号非选中电压级别(即引脚 VCOMH 电压)

数据读/写

读:串行模式操作中不提供数据读取。
写:串行接口模式始终处于写入模式。每次数据写入后,GDDRAM列地址指针将自动增加一个。

命令描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值