SSD1306(OLED驱动芯⽚)指令详解
基础命令:
1.页地址模式下设置列起始地址低位(Set Lower Column Start Address For Page Addressing Mode)(00h~0Fh)
此指令⽤于在页地址模式下设置GDDRAM的列起始地址(8位)的低4位, 页地址会在数据访问后递增
2.页地址模式下设置列起始地址⾼位(Set Higher Column Start Address For Page Addressing Mode)(10h~1Fh)
此指令⽤于在页地址模式下设置GDDRAM的列起始地址(8位)的⾼4位, 页地址会在数据访问后递增
3.设置内存地址模式(Set Memory Addressing Mode)(20h)
在SSD1306中有三种地址模式: 页地址模式, ⽔平地址模式和垂直地址模式, 此命令⽤于将地址模式设置为以上三种之⼀
'COL'的含义是GDDRAM列(column)
页地址模式(A[1:0]=10b)
当处于此模式时, 在GDDRAM访问后(读/写), 列地址指针将⾃动增加1。如果列地址指针到达列终⽌地址, 列地址指针将复位到列起始地址, 但页地址指针不会改变。
为了访问GDDRAM中下⼀页的内容, ⽤户必须设置新的页地址和列地址。页地址模式下页以及列地址指针的⾏为如下图所⽰
通常在页地址模式下访问GDDRAM, 需要如下步骤来定义起始RAM访问指针指向:
-通过命令(B0h-B7h)设置⽬标显⽰位置页起始地址
-通过命令(00h-0Fh)设置列起始地址低位
-通过命令(10h-1Fh)设置列起始地址⾼位
例如, 如果页地址是B2h, 列地址低位是03h, 列地址⾼位是10h, 起始列将为PAGE2的SEG3, GDDRAM访问指针的指向如下图所⽰
⽔平地址模式(A[1:0]=00b)
当处于此模式时, 在GDDRAM访问后(读/写), 列地址指针将⾃动增加1。如果列地址指针到达列终⽌地址, 列地址指针将复位到列起始地址, 且页地址指针将⾃动增加1。
⽔平地址模式下页以及列地址指针的⾏为如下图所⽰, 如果列地址指针和页地址指针都到达各⾃的终⽌地址时, 他们都将复位到各⾃的起始地址。(图中虚线)
垂直地址模式(A[1:0]=01b)
当处于此模式时, 在GDDRAM访问后(读/写), 页地址指针将⾃动增加1。如果页地址指针到达页终⽌地址, 页地址指针将复位到页起始地址, 且列地址指针将⾃动增加1。
垂直地址模式下页以及列地址指针的⾏为如下图所⽰, 如果列地址指针和页地址指针都到达各⾃的终⽌地址时, 他们都将复位到各⾃的起始地址。(图中虚线)
通常在(垂直/⽔平)地址模式下访问GDDRAM, 需要如下步骤来定义起始RAM访问指针指向:
-通过命令(21h)设置⽬标显⽰位置列起始地址以及列终⽌地址
-通过命令(22h)设置⽬标显⽰位置页起始地址以及页终⽌地址
4.设置列地址(Set Column Address)(21h)
offset命令此指令⽤于设置GDDRAM的列起始地址和列结束地址, 并使列地址指针(指向GDDRAM中当前访问的列地址)指向列起始地址。
若内存地址模式为⽔平地址模式, 在访问⼀列数据后, 列地址指针将增加到下⼀个列地址。当结束访问终⽌列地址时, 列地址指针将复位⾄列起始地址, 且⾏地址指针将增加到下⼀⾏。
5.设置页地址(Set Page Address)(22h)
此指令⽤于设置GDDRAM的页起始地址和页结束地址, 并使页地址指针(指向GDDRAM中当前访问的页地址)指向页起始地址。
若内存地址模式为垂直地址模式, 在访问⼀页数据后, 页地址指针将增加到下⼀个页地址。当结束访问终⽌页地址时, 页地址指针将复位⾄页起始地址。
下图展⽰了例⼦中列地址指针和页地址指针的移动⽅式: 列起始地址设为2, 列终⽌地址设为125, 页起始地址设为1, 页终⽌地址设为6, 并使⽤⽔平地址模式。
在此情况下, GDDRAM数据可范围范围在列2-列125, 页1-页6之内。同时列地址指针被设为2, 页地址指针被设为1。在访问数据后, 列地址⾃动增加1, 以访问下⼀数据(图中实线)
当结束访问终⽌列地址(125)时, 列地址指针复位到列2, 页地址指针⾃动增加1(图中实线), 当访问终⽌页地址6和终⽌列地址125所在数据后,页地址指针复位到1, 列地址指针复位到2(图中虚线)
6.设置屏幕起始⾏(Set Display Start Line)(40h-7Fh)
此命令⽤于设置屏幕起始⾏寄存器以设置GDDRAM起始地址, 取值范围为[0, 63]。若值为0, 则RAM第0⾏映射⾄COM0, 若值为1, 则RAM第1⾏映射到COM0, 以此类推。
7.设置对⽐度(Set Contrast Control for BANK0)(81h)
此命令⽤于设置屏幕对⽐度。此芯⽚有256级对⽐度(从00h⾄FFh)。段输出电流和对⽐度值同增同减。
8.设置段重映射(Set Segment Re-map)(A0h/A1h)
此指令⽤于改变屏幕数据列地址和段驱动器间的映射关系, 这增强和OLED模块设计的可伸缩性。
此命令只影响其后的数据输⼊, 已存储在GDDRAM中的数据将保持不变。
9.全屏点亮(Entire Display ON)(A4h/A5h)
命令A4h启⽤输出GDDRAM中的数据
如果命令A5h已被调⽤, 通过A4h指令, 可以将屏幕显⽰从全屏点亮状态中恢复
命令A5h通过忽略GDDRAM中的数据以点亮全屏
10.设置正常/反转显⽰(A6h/A7h)
此命令⽤于设置显⽰是否反转, 正常模式下, RAM中的数据1表⽰点亮像素; 在反转模式下, RAM中的数据0表⽰点亮像素
11.设置复⽤率(A8h)
此命令⽤于将默认的63复⽤率更改⾄任何范围为[16, 63]的值, COM0~COM64输出将切换到正确的输出信号
12.设置屏幕开启/关闭(AEh/AFh)
此指令⽤于开启或关闭OLED屏幕
当屏幕关闭时, 这些电路将被断开, 且段和公共的输出都被分别置为Vss和⾼阻态。
此指令设置屏幕状态为以下⼆者的其中之⼀:
AEh: 关闭屏幕
AFh: 开启屏幕
13.页地址模式下设置页起始地址
此指令⽤于设置在页地址模式下GDDRAM的页起始地址, 取值范围为[0, 7]
14.设置列输出扫描⽅向(Set COM Output Scan Direction)(C0h/C8h)
此指令⽤于设置列输出的扫描⽅向, 增强了OLED模块设计的布局的伸缩性。
注意, 此指令会⽴即⽣效。例如当屏幕正常显⽰时调⽤此指令, 屏幕将会⽴刻垂直翻转。
15.设置显⽰偏移(Set Display Offset)(D3h)
此命令为双字节命令, 第⼆个字节⽤于设置屏幕起始⾏为COM0~COM63之⼀(假设COM0为屏幕起始⾏, 那么屏幕起始⾏寄存器值为0)例如, 要使COM16向COM0⽅向移动16⾏, 第⼆个字节的值应该为010000b; 向COM0相反⽅向移动16⾏, 第⼆个的值应该为64-16, 即100000b, 下表展⽰了调⽤指令C0h/C8h和D3h的例⼦
16.设置显⽰时钟分频值/震荡频率(Set Display Clock Divide Ration/Oscillator Frequency)(D5h)
此指令包括两个功能:
-设置显⽰时钟分频值(D)(A[3:0])
由于设置从CLK分频得到的DCLK(显⽰时钟, Display clock)的分频值, 分频值取值范围为[1, 16], 初始值为1, (Please refer to Secion 8.3 for more details)
-设置震荡频率(A[7:4])
如果CLS脚被拉⾼, 可⽤于编程震荡频率。默认值为1000b
17.设置预充电周期(Set Pre-charge Period)(D9h)
此指令⽤于设置预充电周期的时长, 此周期单位为⼀DCLK的周期, 复位值为2 DCLK
18.设置列引脚硬件配置(Set COM Pins Hardware Configuration)(DAh)
此指令⽤于设置列信号引脚配置来适应OLED⾯板的硬件布局。下表展⽰了在不同条件下的列引脚配置效果。(图中芯⽚⾦⼿指向上)
-1.序列的列引脚配置(DAh A[4]=0), 列输出扫描⽅向从COM0到COM63(C0h), 禁⽤列左/右映射(DAh A[5]=0)
-2.序列的列引脚配置(DAh A[4]=0), 列输出扫描⽅向从COM0到COM63(C0h), 启⽤列左/右映射(DAh A[5]=1)
-3.序列的列引脚配置(DAh A[4]=0), 列输出扫描⽅向从COM0到COM63(C8h), 禁⽤列左/右映射(DAh A[5]=0)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论