【开源教程21】疯壳·开源编队无人机-SPI(OLED)

COCOFLY教程
——疯壳·无人机·系列
SPI(OLED)
    
    

    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第1张图片    
    图1
    
    
    一、OLED 简介
    
    OLED(OrganicElectroluminesence Display)有机发光显示器,与传统的显示器不同的是,传统的显示器需要背光,才能显示;而 OLED 则不需要,其自身就能够发光。
    而 OLED 之所以能够自发光,主要是通过电场驱动:有机半导体材料和发光材料通过过载流子注入和复合后实现发光。从本质上来说,就是通过 ITO 玻璃透明电极作为器件阳极,金属电极作为阴极,通过电源驱动,将电子从阴极传输到电子传输层,空穴从阳极注入到空穴传输层,之后分迁移到发光层,二者相遇后产生激子,让发光分子激发,经过辐射后产生光源。简单来说,一块 OLED 屏幕,就是由百千万个“小灯泡”组成。
    OLED 不仅更轻薄、功耗低、亮度高、发光率好、可以显示纯黑色,并且还可以做到弯曲,如当今的曲屏电视和手机等。当今国际各大厂商都争相恐后的加强了对 OLED 技术的研发投入,使得 OLED 技术在当今电视、电脑(显示器)、手机、平板等领域灵应用愈加广泛。如下图所示为 OLED 显示屏模块实物图。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第2张图片    
    图2
    
    二、SPI 驱动 OLED 实验
    
    在本节中应用的到的 SPI 与飞控开发基础篇《SPI(六轴传感器数据获取)》一节不同,本节用的到的是通过 GPIO 模拟的 SPI,而飞控开发基础篇《SPI(六轴传感器数据获取)》中应用的是 STM32 硬件 SPI。而 SPI 协议相关知识可以参考飞控开发基础篇《SPI(六轴传感器数据获取)》。
    根据原理图可知 OLED 屏的电气连接关系,如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第3张图片    

【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第4张图片
    图3
    可知 OLED 的复位脚 RES 接在 STM32 的 PB6、OLED 的命令/数据选择脚DC 接在 STM32 的 PB7、OLED 的时钟线接在 STM32 的 PA5、OLED 的数据输入接在 STM32 的 PA7。这里的 OLED 模块没有 CS 片选脚,是因为模块内部已经默认接地了。OLED 显示的整体代码编写思路如下。
    
    代码思路
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第5张图片    
    表1
    根据 OLED 的驱动芯片 SSD1306 的手册可以得知控制时序,如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第6张图片    
    图4
    根据时序就可以编写对应时序的代码了。如下图所示为 OLED 写时序的代码。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第7张图片    
    图5
    根据 SSD1306 手册可得知 OLED 的初始化流程,如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第8张图片    
    图6
    
    OLED 初始化代码实现如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第9张图片   

【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第10张图片

 【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第11张图片

 图7
    OLED 的所有显示都是基于描点得来的,由点成线,再由线成面。OLED 的描点函数代码实现如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第12张图片    
    图8
    OLED 显示单个字符的代码如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第13张图片    
    图9
    显示字符需要对相应的字符取模,这里已经提供了两种取好模的字体,按照“阴码、逐列式、顺向”的取模方式,分别是 12*6、16*8 大小的字体,在 oledfont.h 里,如下图所示。
    
    
    图10
    取模需要通过取模软件,这里使用的是“PCtoLCD2002”,该软件有两大功能,一种是字符取模,另一种是图片取模。这里我们用到的是字符取模,根据代码驱动的描点方向,生成的 12*6 字模的字模选项设置如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第14张图片    
    图11
    这里以生成 12*6 的字符“1”做举例,按照上图设置好字模选项设置后,输入“1”,点击“生成字模”,即可生成对应的 16 进制字模代码,如下图所示。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第15张图片    
    图12
    本次是实验需要通过 OLED 显示“COCOFLY”以及“www.fengke.club”, 具体实现代码如下。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第16张图片    
    图13
    保存编译下载,实现现象如下图。
    
【开源教程21】疯壳·开源编队无人机-SPI(OLED)_第17张图片    
    图14
    
    

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(无人机,开源,无人机,嵌入式硬件,嵌入式实时数据库,单片机)