一、OLED简介 OLED(OrganicElectroluminesence Display)有机发光显示器,与传统的显示器不同的是,传统的显示器需要背光,才能显示;而OLED则不需要,其自身就能够发光。 而OLED之所以能够自发光,主要是通过电场驱动:有机半导体材料和发光材料通过过载流子注入和复合后实现发光。从本质上来说,就是通过ITO玻璃透明电极作为器件阳极,金属电极作为阴极,通过电源驱动,将电子从阴极传输到电子传输层,空穴从阳极注入到空穴传输层,之后分迁移到发光层,二者相遇后产生激子,让发光分子激发,经过辐射后产生光源。简单来说,一块OLED屏幕,就是由百千万个“小灯泡”组成。 OLED 不仅更轻薄、功耗低、亮度高、发光率好、可以显示纯黑色,并且还可以做到弯曲,如当今的曲屏电视和手机等。当今国际各大厂商都争相恐后的加强了对OLED技术的研发投入,使得OLED技术在当今电视、电脑(显示器)、手机、平板等领域灵应用愈加广泛。如下图所示为OLED 显示屏模块实物图。 二、SPI驱动OLED实验在本节中应用的到的SPI与飞控开发基础篇《SPI(六轴传感器数据获取)》一节不同,本节用的到的是通过GPIO模拟的SPI,而飞控开发基础篇《SPI(六轴传感器数据获取)》中应用的是STM32硬件SPI。而SPI协议相关知识可以参考飞控开发基础篇《SPI(六轴传感器数据获取)》。 根据原理图可知OLED屏的电气连接关系,如下图所示。 可知OLED的复位脚RES接在STM32的PB6、OLED的命令/数据选择脚DC接在STM32的PB7、OLED的时钟线接在STM32的PA5、OLED的数据输入接在STM32的PA7。这里的OLED模块没有CS片选脚,是因为模块内部已经默认接地了。OLED显示的整体代码编写思路如下。 代码思路 1 | | 1、定义结构体; 2、使能时钟; 3、填充结构体; 4、装载结构体; | | | | | | 1、OLED初始化; 2、OLED功能性函数实现(如刷屏、描点、清屏等)。 | | | |
根据OLED的驱动芯片SSD1306的手册可以得知控制时序,如下图所示。 根据时序就可以编写对应时序的代码了。如下图所示为OLED写时序的代码。 根据SSD1306手册可得知OLED的初始化流程,如下图所示。 OLED初始化代码实现如下图所示。 OLED的所有显示都是基于描点得来的,由点成线,再由线成面。OLED的描点函数代码实现如下图所示。 OLED显示单个字符的代码如下图所示。 显示字符需要对相应的字符取模,这里已经提供了两种取好模的字体,按照“阴码、逐列式、顺向”的取模方式,分别是12*6、16*8大小的字体,在oledfont.h里,如下图所示。 取模需要通过取模软件,这里使用的是“PCtoLCD2002”,该软件有两大功能,一种是字符取模,另一种是图片取模。这里我们用到的是字符取模,根据代码驱动的描点方向,生成的12*6字模的字模选项设置如下图所示。 这里以生成12*6的字符“1”做举例,按照上图设置好字模选项设置后,输入“1”,点击“生成字模”,即可生成对应的16进制字模代码,如下图所示。 本次是实验需要通过OLED显示“COCOFLY”以及“www.fengke.club”,具体实现代码如下。 保存编译下载,实现现象如下图。
|