COCOFLY教程

——疯壳·无人机·系列

SPI(OLED)






1.png    
    图1


    一、OLED 简介

    OLED(OrganicElectroluminesence Display)有机发光显示器,与传统的显示器不同的是,传统的显示器需要背光,才能显示;而 OLED 则不需要,其自身就能够发光。
    而 OLED 之所以能够自发光,主要是通过电场驱动:有机半导体材料和发光材料通过过载流子注入和复合后实现发光。从本质上来说,就是通过 ITO 玻璃透明电极作为器件阳极,金属电极作为阴极,通过电源驱动,将电子从阴极传输到电子传输层,空穴从阳极注入到空穴传输层,之后分迁移到发光层,二者相遇后产生激子,让发光分子激发,经过辐射后产生光源。简单来说,一块 OLED 屏幕,就是由百千万个“小灯泡”组成。
    OLED 不仅更轻薄、功耗低、亮度高、发光率好、可以显示纯黑色,并且还可以做到弯曲,如当今的曲屏电视和手机等。当今国际各大厂商都争相恐后的加强了对 OLED 技术的研发投入,使得 OLED 技术在当今电视、电脑(显示器)、手机、平板等领域灵应用愈加广泛。如下图所示为 OLED 显示屏模块实物图。

2.png    
    图2

    二、SPI 驱动 OLED 实验

    在本节中应用的到的 SPI 与飞控开发基础篇《SPI(六轴传感器数据获取)》一节不同,本节用的到的是通过 GPIO 模拟的 SPI,而飞控开发基础篇《SPI(六轴传感器数据获取)》中应用的是 STM32 硬件 SPI。而 SPI 协议相关知识可以参考飞控开发基础篇《SPI(六轴传感器数据获取)》。
    根据原理图可知 OLED 屏的电气连接关系,如下图所示。

3.0.png
3.1.png    
    图3
    可知 OLED 的复位脚 RES 接在 STM32 的 PB6、OLED 的命令/数据选择脚DC 接在 STM32 的 PB7、OLED 的时钟线接在 STM32 的 PA5、OLED 的数据输入接在 STM32 的 PA7。这里的 OLED 模块没有 CS 片选脚,是因为模块内部已经默认接地了。OLED 显示的整体代码编写思路如下。

    代码思路

表1.png    
    表1
    根据 OLED 的驱动芯片 SSD1306 的手册可以得知控制时序,如下图所示。

4.png    
    图4
    根据时序就可以编写对应时序的代码了。如下图所示为 OLED 写时序的代码。

5.png   
    图5
    根据 SSD1306 手册可得知 OLED 的初始化流程,如下图所示。

6.png    
    图6

    OLED 初始化代码实现如下图所示。

7.0.png
7.1.png
7.2.png    
    图7
    OLED 的所有显示都是基于描点得来的,由点成线,再由线成面。OLED 的描点函数代码实现如下图所示。

8.png
    图8
    OLED 显示单个字符的代码如下图所示。

9.png    
    图9
    显示字符需要对相应的字符取模,这里已经提供了两种取好模的字体,按照“阴码、逐列式、顺向”的取模方式,分别是 12*6、16*8 大小的字体,在 oledfont.h 里,如下图所示。

10.png    
    图10
    取模需要通过取模软件,这里使用的是“PCtoLCD2002”,该软件有两大功能,一种是字符取模,另一种是图片取模。这里我们用到的是字符取模,根据代码驱动的描点方向,生成的 12*6 字模的字模选项设置如下图所示。

11.png    
    图11
    这里以生成 12*6 的字符“1”做举例,按照上图设置好字模选项设置后,输入“1”,点击“生成字模”,即可生成对应的 16 进制字模代码,如下图所示。

12.png    
    图12
    本次是实验需要通过 OLED 显示“COCOFLY”以及“www.fengke.club”, 具体实现代码如下。

13.png    
    图13
    保存编译下载,实现现象如下图。

14.png    
    图14




文件下载请点击:   【4】SPI(OLED).pdf (1.31 MB, 下载次数: 0)
全部回复 0
暂无评论,快来抢沙发吧