0.96寸OLED显示(7针款SPI)

文章最后附源代码链接

一、OLED屏

1、各项模式配置

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

  • 2、通讯模式

  • 通常我们所用的OLED屏有白色、蓝色、黄蓝双色等几种;屏的大小为0.96寸,像素点为128*64,所以我们也称之为0.96OLED屏或者12864屏。

  • 内部驱动IC为SSD1306;通信方式一般为SPI或者I2C。如下图所示,配置哪种模式主要是根据BS0、BS1和BS2这三个管脚的电平逻辑来的。

  • ①IIC模式:

  • 电阻焊接R1、R4、R6、R7、R8。D1作为SCK时钟线,D0作为SDA数据线。SSD1306作为从机地址为0x78,DC脚作为更改从机地址引脚,DC接VCC,从机地址0x79,什么都不接地址为0x78。

  • 发送数据:起始信号-从机地址-应答-写数据模式(0x40)-应答-数据(8bit)-结束信号

  • 发送命令:起始信号-从机地址-应答-写命令模式(0x00)-应答-命令(8bit)-结束型号

  • ②四线SPI模式:

  • 电阻焊接R3、R4。D1作为SClk时钟线,D0作为MOSI线,CS为片选NSS,DC为数据/命令线、RES复位线。

  • 发送数据:CS拉低-DC拉高-发送数据(8bit)-CS拉高

  • 发送命令:CS拉低-DC拉低-发送命令(8bit)-CS拉高

  • ③三线SPI模式:

  • 电阻焊接R2,R3。D1作为SCLK时钟线,D0作为MOSI线,CS片选NSS,RES复位,DC拉低不用。数据有9位,首位就是数据/命令,因此不用DC线。

  • 发送数据:CS拉低-首位为1再接着发送8位数据-CS拉高

  • 发送命令:CS拉低-首位为0再接着发送8位命令-CS拉高

  • 二、显示原理与取模方式

    1、显示原理

    OLED的显存分布情况。我们可以理解为:水平方向分布了128个像素点,垂直方向分布了64个像素点。而驱动芯片在点亮像素点的时候,是以8个像素点为单位的。官方的例程推荐的是垂直扫描的方式,也就是先画垂直方向的8个像素点(如下图所示),所以我们在画点的时候Y的取值为0-7,X的取值为0-127。页是芯片设计者为了方便将同一列的8个点阵编成一组,用一个8bit数表示,这样的8行128个数被称为1页。

    2、取模方式

    选择阴码、行列式(搭配页寻址模式)、逆向

    三、OLED命令

    1、命令的格式

    ①单级命令:直接发送一个命令就能设置OLED屏。

    OLED_WriteCmd(0xAE); //关闭显示OLED_WriteCmd(0xA4); //设置整个显示打开/关闭OLED_WriteCmd(0xAF); //开启显示OLED_WriteCmd(0xA4); //设置整个显示打开/关闭

    ②多级命令:先发送一个命令,紧接着发送该命令的参数

    OLED_WriteCmd(0x20); //打开寻址模式选择OLED_WriteCmd(0x02); //寻址模式选择页寻址模式

    2、寻址模式设置命令

    寻址模式命令:0x20

    模式

    命令

    水平寻址模式

    0x00

    垂直寻址模式

    0x01

    页寻址模式

    0x02

    ①页寻址模式(默认模式):

  • 从设定的页和列开始发送数据,列地址自动累加,页地址不会更新,如果超出范围则超出部分无效,可以不用事先指定每页中每列的长度。

  • 地址设置:

  • y是页地址的编号:

  • 使用或命令将这低四位与固定前缀0xb连接起来(0xb0 | y)

  • x是列地址的编号:

  • 发送高四位的程序,先使用与命令(&)取得x的高4位(x & 0xf0)之后向右移4位,将高4位数据放到低4位((x & 0xf0) >> 4)之后使用或命令(|)加上固定前缀0x1即可(((x & 0xf0) >> 4) | 0x10)

    发送低四位命令因为地址低四位的高四位为0x0,因此只需要使用与命令(&)将高四位置零即可(x & 0x0f)

    ②水平寻址:

  • 横向编码,列地址自动加,遇到设置范围的页尾时自动跳转到下一页,传输到设置范围的最后一页最后一列时自动复位。

  • 地址设置:

    OLED_WriteCmd(0x20) //寻址模式选择:(0x00水平/0x01垂直/0x02页)OLED_WriteCmd(0x00) //水平寻址模式OLED_WriteCmd(0x21) //设置列地址OLED_WriteCmd(0x00) //设置列起始位置OLED_WriteCmd(0x7F) //设置列终止位置OLED_WriteCmd(0x22) //设置页地址OLED_WriteCmd(0x00) //设置页起始位置OLED_WriteCmd(0x07) //设置页终止位置

    ③垂直寻址:

    在垂直寻址模式下,当对显示内存进行读写操作后,页面地址指针自动加1。如果页地址指针到达页结束地址,则页地址指针重置为页开始地址,并且列地址指针加1。垂直寻址模式下页和列地址点的移动顺序如图所示。当列地址和页地址指针都到达结束地址时,指针被重定向到列的开始地址和通道的开始地址。

    地址设置:

    OLED_WriteCmd(0x20) //寻址模式选择:(0x00水平/0x01垂直/0x02页)OLED_WriteCmd(0x01) //垂直寻址模式OLED_WriteCmd(0x21) //设置列地址OLED_WriteCmd(0x00) //设置列起始位置OLED_WriteCmd(0x7F) //设置列终止位置OLED_WriteCmd(0x22) //设置页地址OLED_WriteCmd(0x00) //设置页起始位置OLED_WriteCmd(0x07) //设置页终止位置

    3、基本命令

    ①对比度设置命令

    进入对比度设置模式:0x81

    之后输入对比度数值范围是0x00 – 0xFF(对比度实际上在这里就是设置发光部分的亮度,数值越大,亮度越大)

    ②显示开启/关闭

    显示开启:0xA4

    显示关闭:0xA5

    ③显示模式

    阳码显示:0xA6

    阴码显示:0xA7

    ④显示控制命令

    关闭显示:0xAE

    开启显示:0xAF

    4、滚动命令

    关闭滚动:0x2E(设置滚动参数前要先关闭滚动,防止RAM错乱)

    开启滚动:0x2F

    向右滚动:0x29

    向左滚动:0x2a

    A-F滚动参数配置,5个字节配置参数。

    5、硬件配置(面板分辨率和布局相关)命令

    ①设置显示开始行

    默认起始行:0x40

    ②设置列重映射(就是设置是否水平镜像)

    将列地址0映射到SEG0:0xA0

    将列地址127映射到SEG0:0xA1

    设置左右方向,0xA1正常 0xA0左右反置

    ③设置多路复用率

    开启多路复用率:0xA8

    参数:A[5:0] 0到63配置参数。

    ④设置COM输出扫描方向

    设置上下方向,0xC8正常 0xC0上下反置

    ⑤设置显示偏移量

    开启显示偏移量:0xD3

    参数:A[5:0] 垂直偏移量0-63

    ⑥设置COM引脚硬件配置

    开启COM应交硬件配置;0xDA

    参数:

    A[4]=0b,顺序COM引脚配置

    [4]=1b(RESET),可选COM引脚配置

    A[5]=0b(RESET),禁用COM左右重映射

    A[5]=1b,启用COM左右重映射

    6、定时驱动方案设置命令

    ①设置显示时钟分频率/振荡器频率

    开启命令:0xD5

    参数A[7:0]:

    A[3:0]:定义显示时钟(DCLK)的分割比(D):除比= A[3:0] + 1, RESET为0000b(除比= 1)

    A[7:4]:设置振荡器频率,FOSC。振荡器频率随着A[7:4]的值增加,反之亦然。RESET为1000b范围:0000 ~ 1111 b频率随设定值增加而增加。

    ②设置预充电周期

    开启命令:0xD9

    参数A[7:0]:

    A[3:0]:阶段1周期最多15个DCLK时钟,0是无效的条目(重置= 2h)

    A[7:4]:阶段2周期最多15个DCLK时钟,0是无效的条目(重置= 2h)

    ③设置VCOMH取消选择级别

    开启命令:0xDB

    参数A[6:4]

    ④无操作命令

    开启无操作:0xE3

    四、代码

    1. 引脚初始化和OLED初始化配置

    2、显示功能代码(部分)

    3、滚动显示代码

    源文件连接:

    链接:https://pan.baidu.com/s/1xlNhgYBokVcr8njH9ntNjQ

    提取码:xiao

    物联沃分享整理
    物联沃-IOTWORD物联网 » 0.96寸OLED显示(7针款SPI)

    发表评论