ssd1306中文手册.docx
- 文档编号:23716518
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:55
- 大小:2.03MB
ssd1306中文手册.docx
《ssd1306中文手册.docx》由会员分享,可在线阅读,更多相关《ssd1306中文手册.docx(55页珍藏版)》请在冰豆网上搜索。
ssd1306中文手册
ssd1306中文手册
简介
SSD1306是一个单片CMOSOLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。
由128segments和64Commons组成。
该芯片专为共阴极OLED面板设计。
SSD1306中嵌入了对比度控制器、显示RAM和晶振,并因此减少了外部器件和功耗。
有256级亮度控制。
数据/命令的发送有三种接口可选择:
6800/8000串口,I2C接口或SPI接口。
适用于多数简介的应用,注入移动电话的屏显,MP3播放器和计算器等。
特性
1.分辨率:
128*64点阵面板
2.电源:
a)VDD=1.65Vto3.3V用于IC逻辑
b)VCC=7Vto15V用于面板驱动
3.点阵显示
a)OLED驱动输出电压,最大15V
b)Segment最大电流:
100uA
的硬件选择设置。
引脚
总线接口
Data/Command接口
控制信号
D7
D6
D5
D4
D3
D2
D1
D0
E
R/W#
CS#
D/C#
RES#
8-bit8080
D[7:
0]
RD#
WR#
CS#
D/C#
RES#
8-bit6800
D[7:
0]
E
R/W#
CS#
D/C#
RES#
3-wireSPI
TieLOW
NC
SDIN
SCLK
TieLOW
CS#
TieLOW
RES#
4-wireSpi
TieLOW
NC
SDIN
SCLK
TieLOW
CS#
D/C#
RES#
I2C
TieLOW
SDAout
SDAin
SCl
TieLOW
SA0
RES#
MCU并口6800系列接口
不翻译
MCU并口8080系列接口
不翻译
MCU串口(4-wireSPI)
不翻译
MCU串口(3-wireSPI)
不翻译
MCUI2C接口
I2C通讯接口由从机地址为SA0,I2C总线数据信号(SDAout/D2输出和SDAin/D1输入)和I2C总线时钟信号SCL(D0)组成。
数据和时钟信号线都必须接上上拉电阻。
RES#用来初始化设备。
a.从机地址位(SA0)
SSD1306在发送或接受任何信息之前必须识别从机地址。
设备将会响应从机地址,后面跟随着从机地址位(SA0位)和读写选择位(R/W#位),格式如下:
b7b6b5b4b3b2b1b0
011110SA0R/W#
SA0位为从机地址提供了一个位的拓展。
0111100或0111101都可以做为SSD1306的从机地址。
D/C#引脚作为SA0用于从机地址选择。
R/W#为用来决定I2C总线接口的操作模式。
R/W#=1,读模式。
R/W#=0写模式
b.I2C总线数据信号SDA
SDA作为发送者和接受者之间的通讯通道。
数据和应答都是通过SDA发送。
应该注意的是ITO轨道电阻和SDA引脚上的上拉电阻会变成一个潜在的电压分压器。
结果就是SDA上的应答可能不能达到有效的逻辑0。
SDAin和SDAout绑定到了一起作为SDA。
SDAin引脚必须连接到SDA。
SDAout引脚可以不连接。
当SDAout引脚不连接,应答信号将会被I2C总线忽略。
c.I2C总线时钟信号SCL
I2C总线上的信息传输任务是随着一个时钟信号的,SCL。
每个数据位的传输任务发生在SCL的单个的时钟周期中。
I2C总线写数据
I2C总线接口提供了写数据和命令到设备的接口。
关于I2C总线的写模式的时序请参考下图:
I2c的写模式
1.主机设备通过开始条件初始化数据通讯。
开始条件的定义在下面的图中展示。
开始条件通过将SDA从高拉低而SCL保持高建立。
2.从机地址紧跟着开始条件作为标志用。
对于SSD1306,从机地址可以是“b0111100”或“b0111101”通过改变SA0到LOW或HIGH(D/C引脚作为SA0)。
3.写模式的建立是通过设置R/W#为到逻辑0实现的。
4.应答位信号将在接收到一个字节的数据后发生包括从机地址和R/W#位。
可以参考下面的应答位信号的图示。
应答位的定义是在应答位相关的时钟脉冲的高周期中把SDA线拉低。
5.传输完从机地址之后,控制字节或数据字节开始通过SDA传输。
一个控制字节主要由CO和D/C#位后面再加上六个0组成的。
a)如果Co为设为逻辑0,,后面传输的信息就只包含数据字节。
b)D/C为决定了下个数据字节是作为命令还是数据。
如果D/C#位设为0,下一个数据就是命令。
如果D/C#位设为1,下一个数据就是数据,将会存在GDDRAM中。
GDDRAM列地址指针将会在每次数据写之后自动加1.
6.应答位将会在接收到每个控制字节或数据字节之后发生
7.写模式会在用了停止条件之后结束。
停止条件:
将SDA从低拉高,而SCL保持高。
请注意数据位的传输是有限制的
1.数据位,在每个SCL脉冲阶段传输,必须在时钟脉冲高周期内保持稳定状态。
可以参考下面的图示。
除了开始或停止条件,数据线只能在SCL为LOW的时候转换状态。
2.SDA和SCL都必须接外接上拉电阻
命令解码器
这个模块决定了输入数据被解读为数据还是命令。
数据的解读是基于D/C#引脚的输入。
如果D/C#引脚是高,D[7:
0]就被解读为写到图像显示数据RAM(GDDRAM)中的显示数据。
如果是低,D[7:
0]的输入就被解读为一个命令。
然后数据输入就会被解码并写到相关的命令寄存器中。
晶振电路和显示时间发生器
这是一个片上低功耗RC震荡电路。
操作时钟(CLK)可以由内部震荡器或外部CL引脚生成。
这个选择是通过CLS引脚完成的。
当CLS引脚拉高,内部振荡器开启,CL应该保留开启。
将CLS拉低可以静止内部振荡器,外部时钟必须连接到CL引脚上。
当选择了内部振荡器之后,输出频率Fosc可以通过命令D5hA[7:
4]修改。
用于显示时钟发生器的显示时钟(DCLK)是源于CLK的。
分频因子“D”可以通过命令D5h编程范围为1到16
DCLK=Fosc/D
显示的帧率是由下面的公式决定
D代表时钟分频。
由D5hA[3:
0]设置。
范围是1到16
K是每行显示时钟的数量。
值的计算如下:
K=相1周期+相2周期+BANK0脉冲宽度=2+2+50=54在上电重启时
Numberofmultiplexratio通过commandA8h设置。
上电重启值为63。
Fosc是振荡器频率,可以通过命令D5hA[7:
4]修改。
值越大频率越大。
FR同步
不翻译
重启电路
当RES#输入为LOW时,芯片初始化为下面的状态:
1.显示关
2.128*64显示模式
3.正常的segment和显示数据列地址和行地址映射(SEG0映射到address00h,COM0映射到address00h)
4.在串口中清除移位寄存器数据
5.显示开始行设置为显示RAM地址0
6.列地址计数设为0
7.正常扫描COM输出方向
8.对比度控制寄存器设为7Fh
9.正常显示模式(等同于A4h命令)
Segment驱动/Common驱动
Segment驱动实现了128个电路源来驱动OLED面板。
驱动电流的范围可以在0到100uA以内调节,有256个等级。
Common驱动产生电压脉冲。
segment驱动波形分为3个阶段:
1.在阶段1,OLED用于显示上一个图片的像素停止充电目的是为了准备显示下一张图片的内容。
2.在阶段2,OLED像素被充到目标电压。
像素被从Vss驱动到相关电压水平。
阶段2时间可以通过编程在1到15个DCLK内变化。
如果OLED面板的像素的电容值比较大,那么就需要更长的时间周期来给电容充电以达到想要的电压。
3.在阶段3,OLED驱动转换为使用电流源来驱动OLED像素,这就是电流源驱动阶段了。
当完成阶段3之后,驱动芯片会回到阶段1来显示下一行图像信息。
这三部循环持续运行来刷新OLED面板上的图像显示。
在阶段3,如果电流驱动脉冲长度设为50,在电流驱动阶段完成50个DCLK后,驱动芯片回到阶段1准备下一行的显示。
图形显示数据RAM(GDDRAM)
GDDRAM是一个为映射静态RAM保存位模式来显示。
该RAM的大小为128*64为,RAM分为8页,从PAFE0到PAGE7,用于单色128*64点阵显示,如下图所示
当一个数据字节写到GDDRAM中,所有当前列的同一页的行图像数据都会被被填充(比如,被列地址指针指向的整列(8位)都会被填充)。
数据位D0写到顶行,而数据位D7写到底行,如下图所示。
为了灵活性,segment和common上的重映射都可以通过软件选择。
对于显示的垂直移动,一个内部的寄存器保存了显示开始行可以用来设置控制RAM数据部分来映射显示(命令D3h)。
SEG/COM驱动块
不翻译
上电和断电顺序
不翻译
命令表
(D/C#=0,R/W#(WR#)=0,E(RD#=1),除非有别的状态声明)
1.基本命令表
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
0
81
A[7:
0]
1
A7
0
A6
0
A5
0
A4
0
A3
0
A2
0
A1
1
A0
设置对比度
双字节命令选择256级对比度中的一种。
对比度随着值的增加而增加
(RESET=7Fh)
0
A4/A5
1
0
1
0
0
1
0
X0
整体显示开启状态
A4h,X0=0b:
恢复RAM内容的显示(RESET)
输出跟随RAM
A5h,X0=1b:
进入显示开启状态,输出不管RAM内容
0
A6/A7
1
0
1
0
0
1
1
X0
设置正常显示或反相显示
A6h,X[0]=0b:
正常显示(RESET)
在RAM中的0:
在显示面板上为关
在RAM中的1:
在显示面板上为开
A7h,X[0]=1b:
反相显示
在RAM中的0:
在显示面板上为开
在RAM中的1:
在显示面板上为关
0
AE
AF
1
0
1
0
1
1
1
X0
设置显示开或关
AEh,X[0]=0b:
显示关(睡眠模式)
(RESET)
AFhX[0]=1b:
显示开,正常模式
2.滚屏命令
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
0
0
0
0
26/27
A[7:
0]
B[2:
0]
C[2:
0]
D[2:
0]
0
0
*
*
*
0
0
*
*
*
1
0
*
*
*
0
0
*
*
*
0
0
*
*
*
1
0
B2
C2
D2
1
0
B1
C1
D1
X0
0
B0
C0
D0
持续水平滚动设置
26h,X[0]=0,向右水平滚动
27h,X[0]=1,向左水平滚动
(水平平移1列)
A[7:
0]:
空字节
B[2:
0]:
定义开始页地址
000b–PAGE0
011b–PAGE3
110b–PAGE6
001b–PAGE1
100b–PAGE4
111b–PAGE7
010b–PAGE2
101b–PAGE5
C[2:
0]:
在帧率范围内设置每次滚屏的时间间隔
000b–5frames
100b–3frames
001b–64frames
101b–4frames
010b–128frames
110b–25frame
011b–256frames
111b–2frame
D[2:
0]:
定义结束页地址
000b–PAGE0
011b–PAGE3
110b–PAGE6
001b–PAGE1
100b–PAGE4
111b–PAGE7
010b–PAGE2
101b–PAGE5
D[2:
0]的值必须大于或等于B[2:
0]
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
0
0
0
0
0
29/2A
A[2:
0]
B[2:
0]
C[2:
0]
D[2:
0]
E[5:
0]
0
0
*
*
*
*
0
0
*
*
*
*
1
0
*
*
*
E5
0
0
*
*
*
E4
1
0
*
*
*
E3
0
0
B2
C2
D2
E2
X1
0
B1
C1
D1
E1
X0
0
B0
C0
D0
E0
持续垂直和水平滚屏设置
29h,X1X0=01b:
垂直和右水平滚屏
2Ah,X1X0=10b:
垂直和左水平滚屏
(水平滚动一列)
A[7:
0]:
空字节
B[2:
0]:
定义开始页地址
000b–PAGE0
011b–PAGE3
110b–PAGE6
001b–PAGE1
100b–PAGE4
111b–PAGE7
010b–PAGE2
101b–PAGE5
C[2:
0]:
在帧频范围内设置每次滚屏的时间间隔
000b–5frames
100b–3frames
001b–64frames
101b–4frames
010b–128frames
110b–25frame
011b–256frames
111b–2frame
D[2:
0]:
定义结束页地址
000b–PAGE0
011b–PAGE3
110b–PAGE6
001b–PAGE1
100b–PAGE4
111b–PAGE7
010b–PAGE2
101b–PAGE5
D[2:
0]的值必须大于或等于B[2:
0]
E[5:
0]:
垂直滚屏的位移
比如
E[5:
0]=01hoffset=1row
E[5:
0]=3Fhoffset=63rows
注意
(1)没有持续垂直滚屏功能
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
2E
0
0
1
0
1
1
1
0
关闭滚屏
关闭因命令
26h/27h/29h/2Ah开启的滚屏功能
注意:
在使用2Eh命令来关闭滚屏动作后,RAM的数据需要重写
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
2F
0
0
1
0
1
1
1
1
激活滚屏
开始滚屏,滚屏命令26h/27h/29h/2Ah配置的,有效的顺序是:
有效命令顺序1:
26h;2Fh
有效命令顺序2:
27h;2Fh
有效命令顺序3:
29h;2Fh
有效命令顺序4:
2Ah;2Fh
举例说明:
如果发布命令26h;2Ah;2Fh,那么最后的一个滚屏命令会被执行,在这里是2Ah。
换句话说最后的滚屏命令会重写以前的滚屏设置命令。
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
0
0
A3
A[5:
0]
B[6:
0]
1
*
*
0
*
B6
1
A5
B5
0
A4
B4
0
A3
B3
0
A2
B2
1
A1
B1
1
A0
B0
设置垂直滚动区域
A[5:
0]设置顶层固定的行数。
顶层固定区域的行数参考GDDRAM的顶部(比如row0)重置为0
B[6:
0]设置滚动区域的行数。
这个行的数量用于垂直滚动滚动区域。
滚动区域开始于顶层固定区域的下一行。
重置为64.
Note
1.A[5:
0]+B[6:
0]<=MUXratio
2.B[6:
0]<=MUXratio
3.垂直滚动偏移(29h/2Ah命令中的E[5:
0])
0]
4.设置显示开始线(40h~7Fh中的X5X4X3X2X1X0)
0]
5.滚动区域的最后一行移动到滚动区域的第一行
6.对于64d最大显示
A[5:
0]=0,B[6:
0]=64整个区域滚动
A[5:
0]=0,B[6:
0]<64顶层区域滚动
A[5:
0]+B[6:
0]<64中心区域滚动
A[5:
0]+B[6:
0]=64底部区域滚动
3.地址设置命令表
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
00~0f
0
0
0
0
X3
X2
X1
X0
设置低一点的列的开始地址作为页地址模式
Setthelowernibbleofthecolumnstartaddress
registerforPageAddressingModeusingX[3:
0]
asdatabits.Theinitialdisplaylineregisteris
resetto0000bafterRESET.
0
10~1F
0
0
0
2
X3
X2
X1
X0
设置列的高地址作为页的开始地址
Setthehighernibbleofthecolumnstartaddress
registerforPageAddressingModeusingX[3:
0]
asdatabits.Theinitialdisplaylineregisteris
resetto0000bafterRESET.
0
0
20
A[1:
0]
0
*
0
*
1
*
0
*
0
*
0
*
0
A1
0
A0
设置内存地址模式
A[1:
0]=00b,HorizontalAddressingMode
A[1:
0]=01b,VerticalAddressingMode
A[1:
0]=10b,PageAddressingMode(RESET)
A[1:
0]=11b,Invalid
0
0
0
21
A[6:
0]
B[6:
0]
0
*
*
0
A6
B6
1
A5
B5
0
A4
B4
0
A3
B3
0
A2
B2
0
A1
B1
1
A0
B0
设置列地址
设置列的开始和结束地址
A[6:
0]:
Columnstartaddress,range:
0-127d,
(RESET=0d)
B[6:
0]:
Columnendaddress,range:
0-127d,
(RESET=127d)
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
0
0
0
22
A[2:
0]
B[2:
0]
0
*
*
0
*
*
1
*
*
0
*
*
0
*
*
0
A2
B2
1
A1
B1
0
A0
B0
设置页地址
设置页的开始结束地址
A[2:
0]:
PagestartAddress,range:
0-7d,
(RESET=0d)
B[2:
0]:
PageendAddress,range:
0-7d,
(RESET=7d)
0
B0~B7
1
0
1
1
0
X2
X1
X0
设置页开始地址作为页地址模式
SetGDDRAMPageStartAddress
(PAGE0~PAGE7)forPageAddressingMode
usingX[2:
0].
硬件配置
D/C#
Hex
D7
D6
D5
D4
D3
D2
D1
D0
命令
描述
9.1数据读写
为了往GDDRAM中写数据,在6800系列并口和8080系列并口模式中将R/W#(WR#)引脚置低,D/C#引脚置高。
串口模式总是处于写模式。
GDDRAM列地址指针在写完一个数据之后会自动加一。
10命令描述
10.1基本命令
10.1.1设置低列开始地址作为页地址模式(00h~0Fh)
10.1.2设置高列开始地址作为页地址模式(10h~1Fh)
10.1.3设置内存地址模式(20h)
SSD1306中有三种不同的内存地址模式:
页地址模式,水平地址模式,垂直地址模式。
这个命令将内存地址模式设置成这三种中的一种。
在这里COL的意思是图形显示数据RAM列。
页地址模式(A[1:
0]=10xb)
在页地址模式下,在显示RAM读写之后,列地址指针自动加一。
如果列地址指针达到了列的结束地址,列地址指针重置为列开始地址并且也地址指针不会改变。
用户需要设置新的页和列地址来访问下一页RAM内从。
页地址模式下PAGE和列地址指针的移动模式参考下图
在正常显示数据RAM读或写和页地址模式,要求使用下面的步骤来定义开始RAM访问的位置:
1.通过命令B0h到B7h来设置目标显示位置的页开始地址
2.通过00h~0Fh来设置低开始列地址的指针
3.通过命令10h~1Fh来设置高开始列地址
比如说,如果页地址设置为B2h,低列地址是03h高列地址为00h,那么就意味着开始列是PAGE2的SEG3.RAM访问指针的位置如下图所示。
输出数据字节将写到RAM列3的位置。
水平寻址模式(A[1:
0]=00b)
在水平寻址模式下,当显示RAM被读写之后,列地址指针自动加一。
如果列地址指针达到列的结束地址,列地址指针重置为列的开始地址,并且页地址指针自动加1。
水平寻址模式下页和列地址的移动顺序如下图所示。
当列地址和页地址都达到了结束地址,指针重设为列地址和页地址的开始地址。
垂直寻址模式(A[1:
0]=01b)
在垂直寻址模式下,当显示RAM被读写之后,页地址指针自动加一。
如果页地址达到了页的结束地址,页地址自动重置为页的开始地址,列地址自动加一。
页地址和列地址的移动顺序如下图所示。
当列地址和页地址都达到结束地址后,指针自动重置为开始地址。
在正常显示RAM读或写,水平/垂直寻址模式下,要求用下面的步骤来定义RAM访问指针位置:
1.用21h命令设置目标显示位置的列的开始和结束地址;
2.用命令22h设置目标显示位置的页的开始和结束地址
10.1.4设置列地址(21h)
这个三字节命令指定了显示数据RAM列开始地址和结束地址。
这个命令也会设置列地址指针到列开始地址。
这个指针用于定义当前读写的显示数据RAM列地址。
如果用20h命令开启了水平寻址命令,在完成读写一个列数据之后,该指针就会自动指向下一列地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ssd1306 中文 手册