STM32 —— OLED 屏幕入门
OLED 屏幕官方历程虽然没有给出 STM32C8T6 的对应版本,这里使用与我们使用的芯片最接近的芯片的历程 STM32RCT6 的官方历程
简介
OLED 屏 -- 有机发光二极管 当通上电的时候,管道内的有机材料就会发光 投射出红蓝绿三种颜色的光,并且每个单元都是独立工作,所以显示出来得画面,是的屏幕会更加得饱满;优点:显示效果画面细腻、颜色丰富、画质好,OLED 屏幕每一个像素点都是独立工作 可以在某个区域单独开启、功耗低、成本较低。缺点:在价格上面 同尺寸得LED液晶屏要比 LCD 液晶屏贵上一倍之多 OLED 屏则更贵、使用寿命短。
而另一种屏幕是:LCD 屏 -- LCD利 用背光来进行发光 这些背光灯只能发出白颜色光,想要投射出红绿蓝光 必须利用一层彩色得滤光片来进行上色 因为多了一层背光层 所以 LCD 是因为光通过折射来显示得 所以彩色饱和度没有那么强烈,显示效果也会偏自然一点。优点:显示效果真实、寿命长
硬件组成
实物如下图:
OLED 裸屏总共种接口包括:6800、8080 两种并行接口方式、3 线或 4 线的串行 SPI 接口方式、 IIC 接口方式(只需要 2 根线就可以控制 OLED 了!),这五种接口是通过屏上的 BS0~BS2 来配置的
0.96 寸 OLED 模块(SPI接口模块):
引脚封装
引脚说明如下表:
序号 | 模块引脚 | 引脚说明 |
---|---|---|
1 | GND | OLED 电源地 |
2 | VCC | OLED 电源正(3.3V~5V) |
3 | D0 | OLED SPI 和 IIC 总线时钟信号 |
4 | D1 | OLED SPI 和 IIC 总线数据信号 |
5 | RES | OLED 复位信号,低电平复位(选择 IIC 总线时,该引脚需要接高电平(可以接 VCC )) |
6 | DC | OLED 命令/数据输入选择信号,高电平:数据,低电平:命令(选择3线制 SPI 总线时,该引脚不需要使用(可以不接);选择 IIC 总线时,该引脚需要接电源地) |
7 | CS | OLED 片选信号,低电平使能(选择 IIC 总线时,该引脚需要接电源地) |
硬件配置
由于 OLED 可以自发光,所以该 OLED 模块没有背光控制电路,只有 OLED 显示控制电路和总线模式切换控制电路
OLED 显示控制电路主要用于控制 OLED 显示,包括片选、复位以及数据、命令传输控制
总线模式切换控制电路用于选择不同的总线模式:3 线制 SPI、4 线制 SPI 以及 IIC
该 OLED 模块默认采用 4 线制 SPI 通信方式,另外还可以选择 3 线制 SPI 或者 IIC 通信方式,硬件配置 7 个引脚,不同的通信方式,选择的引脚不一样(具体见接口说明部分)
STM32 使用说明
接线说明
序号 | 模块引脚 | 对应MiniSTM32开发板接线引脚 |
---|---|---|
1 | GND | GND |
2 | VCC | 3.3v/5v |
3 | D0 | PB13 |
4 | D1 | PB15 |
5 | RES | PB12 |
6 | DC | PB10 |
7 | CS | PB11 |
操作步骤
按照上述接线说明将 IPS 模块和 STM32 单片机连接起来,并上电;
根据单片机型号选择测试示例,如下图所示:
(测试程序说明请查阅测试程序包中测试程序说明文档)
代码构架
主程序运行时的 Demo API 代码包含在 test 代码中
OLED 初始化以及相关的操作都包含在 OLED 代码中
画点、线、图形以及中英文字符显示相关的操作都包含在 GUI 代码中
主函数实现应用程序运行
平台代码因平台而异
SPI 初始化及配置相关的操作包含在 SPI 代码中
软件 SPI 和硬件 SPI 说明
该 IPS 模块分别提供了软件 SPI 和硬件 SPI 示例代码(STC89C52RC 只有软件 SPI 功能),两种示例代码在显示内容上没任何区别,但是如下方面有区别:
A. 显示速度
硬件 SPI 明显比软件 SPI 要快,这是由硬件决定的
B. GPIO 定义
软件 SPI 全部控制引脚都要定义,可以使用任何空闲引脚,硬件 SPI 的数据和时钟信号引脚是固定的(因平台而异),其他控制引脚要自己定义,也可使用任何空闲引脚
C. 初始化
软件 SPI 初始化时,只需要对用于引脚定义的 GPIO 进行初始化,硬件 SPI 初始化时,需要对相关的控制寄存器以及数据寄存器进行初始化
汉字显示原理
OLED 上是通过点阵的方式进行显示汉字或图像的,所以我们需要首先知道我们要进行显示的汉字或图像的对应的点阵,所以我们在这里会用到两款工具:
-
PCtoLCD2002
-
Image2LCD
下面以显示汉字为例:
首先设置我们需要生成的汉字的对应矩阵点位的格式,也就是我们需要在 OLED 上显示的格式,设置如下:
我们首先根据我们需要显示的汉字的相关矩阵:
然后只需要将我们所获得的汉字的矩阵按照不同的字体大小,添加到我们的程序中的头文件 oledfont.h 中即可,然后可以根据官方或者第三方驱动中给出的相对应的函数进行显示即可