OLED
接口方式(由硬件电路确定):6800、8080、spi、i2c.
常见的驱动芯片:ssd1306、ssd1315。
oled屏幕的发光原理不同于lcd,上电后无法直接显示,需要初始化后才能正常显示。
SSD1315手册资料
SSD1315是一款单芯片CMOS OLED/PLED驱动控制芯片,直接从内部128*64位GDDRAM中显示数据。
GDDRAM(Graphic Display Data RAM,图形显示数据RAM)
GDDRAM是位映射静态RAM,保存要显示的位模式。RAM的大小为128*64位,又分为8页(PAGE0~PAGE7),用于单色128*64点阵显示。
当一个数据字节写入GDDRAM时,将当前列同一页的所有行图像数据全部填充(即填充列地址指针所指向的整列,8位)。D0数据位写在最上面一行,D7数据位写在最下面一行。
ssd1315基本命令
设置页寻址模式的列起始地址(00h~0fh、10h~17h)
00h~0fh该命令指定页面寻址模式的RDDRAM的8位列起始地址的较低部分(8位列地址的低四位)。列地址将随着每次数据访问而增加。
10h~17h该命令指定页面寻址模式的RDDRAM的8位列起始地址的较高部分(8位列地址的高四位)。列地址将随着每次数据访问而增加。
页寻址模式会讲到,这命令就会很清楚了。
设置页寻址模式的页起始地址(B0h~B7h)
该命令指定页面寻址模式的RDDRAM的页起始地址(PAGE0~PAGE7)。页寻址模式会讲到,这命令就会很清楚了。
设置内存寻址模式(20h)
3种内存寻址模式:水平寻址模式、垂直寻址模式、页寻址模式。
页寻址模式(A[1:0]=10b)
在页寻址模式下,在GDDRAM进行读写后会自动移向下一个COL,用户必须设置新的PAGE和COL地址才能访问下一个PAGE的内容。在页寻址模式下,PAGE的移动顺序和列地址方向如下图所示。(先确定PAGE,再确定COL,最后写入数据)
页寻址模式下正常的GDDRAM读写,需要通过以下步骤来定义RAM的起始访问指针位置:
通过命令 b0h~b7h 设置目标显示位置的页面起始地址(b固定,0~7对应PAGE0~PAGE7)。
通过命令 00h~0fh 设置指针的较低部分的起始列地址(0固定,0~f搭配下方的0~7)。
通过命令 10h~17h 设置指针的较高部分的起始列地址(1固定,0~7搭配上方的0~f)。
举例:假如页地址 = b2h,较低的起始列地址 = 03h,较高的起始列地址 = 15h。
那么较低的起始列地址剥离开始的0,3对应8位的低4位,即03h。
那么较高的起始列地址剥离开始的1,5对应8位的高4位,即50h。
所以起始列地址 = 50h | 03h = 53h = 83。即对应的PAGE2的COL83。
水平寻址模式(A[1:0]=00b)
在水平寻址模式下,在GDDRAM进行读写后会自动移向下一个COL。当列地址指针到达COL127时,列地址指针重置为COL0,页面地址指针加1。当列地址指针和页地址指针都到达结束地址时,指针被重置为PAGE0_COL0。
水平寻址模式下正常的GDDRAM读写,需要通过以下步骤来定义RAM的起始访问指针位置:
通过命令 21h 设置目标显示位置的列起始地址和列结束地址。(水平)
通过命令 22h 设置目标显示位置的页起始地址和页结束地址。(垂直)
垂直寻址模式(A[1:0]=00b)
在垂直寻址模式下,在GDDRAM进行读写后会自动移向下一个PAGE。当页地址指针到达PAGE7时,页地址指针重置为PAGE0,列地址指针加1。当列地址指针和页地址指针都到达结束地址时,指针被重置为PAGE0_COL0。
垂直寻址模式下正常的GDDRAM读写,需要通过以下步骤来定义RAM的起始访问指针位置:
通过命令 21h 设置目标显示位置的列起始地址和列结束地址。(水平)
通过命令 22h 设置目标显示位置的页起始地址和页结束地址。(垂直)
设置列地址和页地址(21h、22h)
21h这个三字节命令指定GDDRAM的列起始地址和列结束地址。该命令还设置列地址指针为列起始地址。
22h这个三字节命令指定GDDRAM的页起始地址和页结束地址。该命令还设置页地址指针为页起始地址。
举例:假如列起始地址 = 2,列结束地址 = 125,页起始地址 = 1,页结束地址 = 6,通过 20h 命令设置为水平寻址模式。
那么GDDRAM的可访问范围仅为COL2~COL125和PAGE1~PAGE6。另外,将列地址指针设置为2,页地址指针设置为1。
指针移动方向还是和水平寻址方式一样,只不过范围限制了,即在范围内维持了水平寻址模式的指针移动方向。即使指针到达了PAGE6_COL125,指针会重置为PAGE1_COL2。
设置显示起始线(40h~7fh)
该命令设置显示起始行寄存器,通过选择 0~63 值来确定GDDRAM的起始地址。
当值为0时,将RAM第0行映射到COM0;当值为1时,将RAM第0行映射到COM1;类推。(40h~0~COM0、50h~16~COM16、...)
设置对比度控制(81h)
该命令设置显示屏的对比度设置(有效范围:01h~ffh)。分段输出电流随着对比阶跃值的增加而增加。
正反显示(A6h / A7h)
正常显示:1表示开像素。
反向显示:0表示开像素。
设置显示开关(AEh / AFh)
AEh:显示关闭。
AFh:显示打开。
设置COM输出扫描方向(C0h / C8h)
该命令设置COM输出的扫描方向,允许oled模块设计的布局灵活性。此外,一旦发出此命令,显示将显示。例如,如果在正常显示期间发送此命令,则图像显示将立即垂直翻转。
NOP(E3h)
无操作命令。
电荷泵设置(8Dh)
此命令控制电荷泵的开关。
电荷泵必须通过以下命令顺序启动:
8Dh:电荷泵设置
14h / 94h / 95h:使能不同输出模式下的电荷泵
AFh:显示打开
水平滚动设置(26h / 27h)
该命令由7个连续字节组成,用于设置水平滚动参数,并确定滚动的起始页、结束页和滚动速度。
在发出此命令之前,必须禁用水平滚动(2Eh),否则RAM内容可能会损坏。
连续垂直和水平滚动设置(29h / 2Ah)
该命令由8个连续字节组成,用于设置连续垂直滚动参数,并确定滚动的起始页、结束页、起始列、结束列、滚动速度、水平和垂直滚动偏移量。
在发出此命令之前,必须禁用水平滚动(2Eh),否则RAM内容可能会损坏。
如果命令29h / 2Ah的垂直滚动偏移字节E[3:0]被设置为0,则只执行水平滚动(如命令26h / 27h);
如果将列滚动偏移字节A[0]被设置为0,则只执行垂直滚动;
如果E[3:0]和A[0]都设置为0,则可以启用(水平+垂直)滚动;
建议设置F[6:0]=00h和G[6:0]=7Fh,则可以启用全列对角线滚动模式。
取消滚动(2Eh)
此命令停止滚动。发送2Eh命令去停止滚动后,RAM数据需要重写。
激活滚动(2Fh)
该命令启动滚动,只有在滚动设置命令26h / 27h / 29h / 2Ah定义了滚动设置参数后才应该发出。最后一个滚动设置命令中的设置将覆盖前一个滚动设置命令中的设置。
激活滚动后,禁止以下操作:
RAM访问(数据读写)
更改水平滚动设置参数
设置垂直滚动区域(A3h)
该命令由3个连续字节组成,用于设置垂直滚动区域。对于连续垂直滚动功能(29h / 2Ah命令),可以设置垂直滚动的行数小于或等于MUX比率。
内容滚动设置(2Ch / 2Dh)
该命令由7个连续字节组成,用于设置水平滚动参数,并确定滚动的起始页、结束页、开始列和结束列。
发送一次命令2Ch / 2Dh,将水平滚动一列。
设置淡出和闪烁(23h)
该命令设置淡出模式并调整每个淡出步骤的时间间隔。
设置放大(D6h)
在“放大”模式下,显示屏的一行显示内容将扩展为两行,即第0~31行内容填充整个64行的显示面板。
注意:面板必须在可选的COM引脚配置放大功能(DAh命令 A[4]=1)。