OLED(经典0.96英寸)--4SPI--SSD1306控制原理(含常用芯片_oled例程)

本文详细介绍了OLED显示屏的主要结构及工作原理,包括MCU、GDDRAM、Commandregister等关键部件。阐述了OLED显示屏的引脚功能,并提供了STM32F407平台上的OLED初始化程序实例。

OLED内部结构

主要结构

主要结构包括,MCU、 (经典款用的是SSD1306;方屏SSD1317;竖屏SH1107;有些新款用的是SSD1315)
GDDRAM(我们写入的显示数据存放在这里)、Command register(命令寄存器,写入的命令放在这里)等部分。

各芯片数据手册链接如下:
SSD1306:https://leoeinstein.lanzous.com/iTI83kivv9e
SSD1317:https://leoeinstein.lanzous.com/iiJTukivv8d
SSD1107:https://leoeinstein.lanzous.com/iYK41kivvaf
SSD1315:https://leoeinstein.lanzous.com/iLhlmkivvbg

在这里插入图片描述

部分引脚说明

" # "表示“”,低电平有效

引脚 说明
RES# 复位信号,拉低时芯片会开始初始化,置1的时候正常工作
CS# 片选脚,不接的情况下,默认低电平(默认选中)
D/C# 为1时,读写数据;为0时,读写指令
R/W# 读写控制端,为1时读;为0时写
E/(RD#) 串行模式下接到VSS,也就是低电平
D[7:0] 串行通信模式下,D0是串行时钟输入(SCLK);D1是串行数据输入(SDIN)

在选择不同的通信方式时,引脚的接法会有些差别,请看下表:
在这里插入图片描述

4线SPI

串行接口说明

四线串行接口由串行时钟: SCLK串行数据: SDIND/C#、CS组成

其中D0充当SCLK,D1充当 SDIN;

对于未使用的数据引脚,D2应该保持开路状态;D3到D7、E和 R/W# 的引脚连接到外部地

在这里插入图片描述

时序图

4SPI 时序图
通过时序图可以看到:

在SCLK的每个上升沿,SDIN数据从高到低逐位,移位到一个8位移位寄存器,其顺序为D7…D0。

8个时钟后,对D/C#进行采样(看看接下来的是数据还是命令),移位寄存器中的数据字节会同步写入到图形显示数据aRAM ( GDDRAM )或命令寄存器。

GDDRAM

在这里插入图片描述
如上图显示数据寄存器,被分为128 * 8页,每一页有8位,总的就有 128 *8 * 8=128 * 64

在这里插入图片描述
如上图所示,当一个字节(8位)数据写入GDDRAM时候,会从低位数据D0开始写入,一直到D7。

也就要求了,字符或者图片取模时要求 取模方式列行式取模走向低位在前

在这里插入图片描述

命令

命令表(部分)

Hex Command
AF 设置显示为打开
AE 设置显示为关闭
A4/A5 显示打开
A6/A7 正常显示(A6)/反转显示(A7)
81 设置对比度控制

在这里插入图片描述
更为详细的命令可参考:SSD1306手册

OLED 初始化程序

驱动芯片:STM32F407

//-----------------OLED端口定义----------------

#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOG,GPIO_Pin_12)//SCL
#define OLED_SCLK_Set() GPIO_SetBits(GPIOG,GPIO_Pin_12)

#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOD,GPIO_Pin_5)//DIN
#define OLED_SDIN_Set() GPIO_SetBits(GPIOD,GPIO_Pin_5)

#define OLED_RES_Clr() GPIO_ResetBits(GPIOD,GPIO_Pin_4)//RES
#def
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值