2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > OLED驱动芯片SSD1306解读

OLED驱动芯片SSD1306解读

时间:2019-05-25 18:19:58

相关推荐

OLED驱动芯片SSD1306解读

驱动OLED实际上是控制的OLED的驱动控制芯片。一般常用的芯片SSD1306等。这里以此芯片为例解读一下,也是自己的扫盲片作为自己学习过程中的笔记。有不对的地方欢迎指出。大佬绕过!

一般我们购买一块OLED屏。一般的屏厂家帮我们设置好了好几种单片机与屏通信接口。比如:SPI (3线或4线)、IIC、6800接口、8080接口等。

默认是其中一种,但是我们相用其他的通信接口,我们只需简单的条线就可以实现。这其实还是控制的SSD1306的驱动芯片来实现的,与屏没有多大的关系。

/*****************************************************************************************************************************************************************

SSD1306是一个单芯片CMOS OLED/PLED驱动器与控制器,用于有机/聚合物发光二极管点阵图形显示系统。它由128段和64公地组成。这种集成电路专为普通阴极型OLED面板设计。
SSD1306嵌入了对比度控制、显示RAM和振荡器,减少了显示器的数量外部元件和功耗。它有256步亮度控制。数据/命令通过硬件可选的通用MCU 6800/8000系列兼容并行接口发送,I2C接口或串行外围设备接口。它适用于许多紧凑的便携应用程序,例如手机子显示器、MP3播放器、计算器等

***************************************************************************************************************************************************************/

注意:

(1)阴极OLED。这个是由芯片限制了OLED的极性。

(2)128段和64公共地----->横向128个点纵向64个点

单片机接口的选择

SSD1306单片机接口由8个数据引脚和5个控制引脚组成。不同接口的pin分配模式如表8-1所示。在BS[2:0]引脚上通过硬件选择可以设置不同的MCU模式(BS[2:0]设置见表7-1)。

6800接口:

The parallel interface consists of 8 bi-directional data pins (D[7:0]), R/W#, D/C#, E and CS#

接口线:

6800双向数据接口有8个数据线,

一个R/W#(读写控制线【低电平表示写,高电平表示读】)、

一个D/C#(数据/命令选择线【低电平表示命令,高电平表示数据】)、

E(总使能线)、

CS#(片选【低电平有效】)。

(1)R/W# 线,给低电平信号表示向芯片写数据,给高电平表示从芯片读数据。

(2)D/C#线,给低电平表示命令的读或写,给高电平表示数据的读或写。

图标的含义:

(1)在E引脚的下降沿期间:CS#低电平表示芯片选中(选中芯片是读写的前提):

R/W# 低电平-----D/C#低电平表示:写命令

R/W# 低电平-----D/C#高电平表示:写数据

R/W# 高电平-----D/C#低电平表示:读命令

R/W# 高电平-----D/C#高电平表示:读数据

8080接口:

The parallel interface consists of 8 bi-directional data pins (D[7:0]), RD#, WR#, D/C# and CS#。

接口线:

8个双向数据端口、

RD#(读使能【低电平有效】)、

WR#(写使能【低电平有效】) 、

D/C# (数据/命令选择【高电平数据,低电平命令】)

CS#(片选【低电平有效】)。

时序解读:当cs#保持较低时,wr#输入的上升边作为数据/命令写锁存信号

写命令:CS#为低电平,D/C#为低电平,WR#为低电平,RD#为高电平。

片选信号发出选择从机----->给一个命令信号或者数据信号并保持----->RD#读信号由高到低期间(制造一个下降沿)把要发送的数据或命令房嫂数据线上。

4线SPI:

The 4-wire serial interface consists of serial clock: SCLK, serial data: SDIN, D/C#, CS#. In 4-wire SPI mode

接口线:

SCLK:时钟线

SDIN:数据线

D/C#:数据或命令线(低电平命令线,高电平数据线)

CS#:片选线(低电平有效)

时序解读:

片选选中—>命令还是数据设置好---->设置时钟上升沿(SCLK拉低延时一段时间再拉高)期间把数据放到数据线上。

3线SPI:SCLK、SDIN、CS# 这三条线,而没有D/C# 线。 只允许写操作。时序操作与4线一样。

IIC接口:就是IIC时序 :通讯协议IIC解读

OLED简介:

OLED分布图:

横向128个点,纵向64个点,纵向64个点又分成8页,每一页8个点。

SSD1306有3种不同的内存寻址模式:页面寻址模式、水平寻址模式和垂直寻址模式。这个命令将内存寻址的方法设置为上述方法之一

三种模式

在页面寻址模式中,在读取/写入显示RAM之后,列地址指针增加自动加1。如果列地址指针到达列结束地址,则列地址指针重置为列起始址和页地址指针不改变。用户必须设置新页面和列地址,以便访问下一页RAM内容页和移动的顺序页面寻址模式的列地址点如图10-1所示

在正常显示数据RAM的读或写和页寻址模式下,需要以下步骤定义启动RAM访问指针位置:

•通过命令将目标显示位置的页面起始地址设置为B0h-B7h。

•通过命令00h~0Fh设置指针的较低起始列地址。

•通过命令10h~1Fh设置指针的上开始列地址。

例如,如果页面地址设置为B2h,低列地址为03h,高列地址为00h,

这意味着开始列是PAGE2的SEG3。RAM访问指针的位置如图所示:

void OLED_Set_Pos(unsigned char x, unsigned char y) { OLED_WR_Byte(0xb0+y,OLED_CMD); //设置页地址b0-b7 表示1-8页OLED_WR_Byte((((x)&0xf0)>>4)|0x10,OLED_CMD); //通过命令10h~1Fh设置指针的上开始列地址OLED_WR_Byte(((x)&0x0f),OLED_CMD); //通过命令00h~0Fh设置指针的较低起始列地址}

关于此处的讲解可以看数据手册对照博主的文章:STM32学习笔记—OLED页寻址方式

水平寻址方式(A[1:0]=00b)

在水平寻址模式下,读取/写入显示RAM后,列地址指针增加自动加1。如果列地址指针到达列结束地址,则列地址指针重置为列起始地址,页面地址指针增加1。水平寻址模式的页面和列地址点如图10-3所示。当页面地址指针到达结束地址时,指针被重置为列开始地址和页面开始地址

垂直寻址方式:(A[1:0]=01b)

在垂直寻址模式下,读取/写入显示RAM后,页面地址指针增加自动加1。如果页面地址指针到达页面结束地址,页面地址指针将被重置页开始地址和列地址指针增加1。页面移动的顺序垂直寻址模式的列地址点如图10-4所示。当列和页同时地址指针到达结束地址时,指针被重置为列开始地址和页开始地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。