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简介:
128*64点阵分布
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所示。当列和页同时地址指针到达结束地址时,指针被重置为列开始地址和页开始地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值