stm32液晶屏

1. 0.96寸OLED

OLED (Organic Light Emitting Diode) 又称有机发光二极管,性能优异的新型显示屏,具有功耗低、相应速度快宽视角、轻薄柔韧等特点,这里使用的0.96寸的OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块,供电:3~5.5V,通信协议:12C/SPI,分辨率:128*64。

一共又四种类型:
1717395045760.png

2. 驱动函数

函数 作用
OLED_Init(); 初始化
OLED Clear(); 清屏
OLED_ShowChar(1,1,’A’); 显示一个字符
OLED_ShowString(1,3,”HelloWorld!”); 显示字符串
OLED ShowNum(2,1,12345,5); 显示十进制数字
OLED ShowSignedNum(2,7,-66,2); 显示有符号十进制数字
OLED_ShowHexNum(3,1,xAA55,4); 显示十六进制数字
OLED ShowBinNum(4,1,0xAA55,16); 显示二进制数字

3. 程序编写

3.1 接线图

(注意OLED屏幕的版本,老版本和新版本的正负极两级位置不一样,需要将正负极对调)

1717396485129.jpg

3.2 引用库

项目驱动文件在文件1-4中提供,选择其中的4针版本,将其中的三个文件复制到工程文件(Hardware)中,为其添加索引和之前添加Delay延迟函数一样的操作。

1717396627931.png

1717396785457.png

如果需要修改SCL和SDA两个接口的位置,可以在OLED.c文件中修改引脚配置即刻。

1717396856035.png

3.3 主函数

在main.c中编写一下代码并且烧录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"

int main(void)
{
OLED_Init();

OLED_ShowChar(1,1,'A');

while (1)
{

}
}

3.4 实物

image-20241123221320493

出现显示 A 的字符则表示没有问题。

4. 函数测试

这里在main.c中添加所有的库函数进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"

int main(void)
{

OLED_Init();

OLED_ShowChar(1,1,'A');
OLED_ShowString(1,3,"HelloWord");
OLED_ShowNum(2,1,12345,5);\
OLED_ShowSignedNum(2,7,-66,2);
OLED_ShowHexNum(3,1,0xAA55,4);
OLED_ShowBinNum(4,1,0xAA55,16);
while (1)
{

}
}

4.1 实物

image-20241123221310173

这里由于OLED的闪烁导致相机没有拍全。

4.2 测试

如果烧录后没有显示内容,可以结合前面点亮LED的示例,两个添加在一起并插上小灯泡,如果小灯泡亮了说明是OLED的问题,检查屏幕的各个接口。