【I²C总线】OLED屏幕
下载例程代码: 下载代码
注意
请一定按照 例程使用方法🔗 导入例程,否则下载的可能不是例程而是其他工程。
OLED屏幕(I2C_OLED)
在OLED屏幕上显示文字、图形和BMP图像
板载OLED规格:
参数 | 值 |
---|---|
芯片型号 | 芯颖科技 CH1116 |
分辨率 | 128 × 64 |
屏幕尺寸 | 1.3 英寸 |
I²C地址 | 0x7A |
信息
如何使用例程
编译并下载程序到学习板,即可看到程序效果:
OLED屏幕循环显示不同画面:
- 汉字显示(反色)、中英文混合字符串显示、符号字符串显示
- 变量显示
- 绘制直线演示
- 绘制(空心)矩形演示
- 绘制(空心)圆形演示
- 显示bmp图像

例程讲解
下面介绍了如何自己实现该例程的功能
1、工程配置
- 开启外部晶振:在Pinout&Configuration -> System Core -> RCC 页面,将 High Speed Clock (HSE) 配置为 Crystal/Ceramic Resonator

- 配置时钟频率:在Clock Configuration 页面,将PLL Source 选择为 HSE,将System Clock Mux 选择为 PLLCLK,然后在HCLK (MHz) 输入72并回车,将HCLK频率配置为 72 MHz

- 配置I²C1:在
I2C1
配置页,将I2C模式选择为I2C
,并在下方Parameter Settings
将I2C Speed Mode
选择为Fast Mode

- 配置生成单独.c/.h文件:在Project Manager -> Code Generator页面中,勾选Generate peripheral initialization as ... per peripheral
2、代码
(1) 初始化过程
-
拷贝库文件:将oled.c、font.c文件拷贝到Core -> Src目录下,将oled.h、font.h文件拷贝到Core -> Inc目录下。
-
在main.c中添加include:
#include "string.h"
#include "oled.h"
#include "stdio.h" -
初始化OLED:
HAL_Delay(20); // 单片机启动比OLED上电快,需要延迟等待一下
OLED_Init(); // 初始化OLED
(2) 显示函数
-
将缓存内容更新到屏幕显示:
OLED_ShowFrame();
提示任何操作都需要调用此函数才能显示到屏幕上,否则只是改变显示缓冲区
-
新建空白缓冲区:
OLED_NewFrame();
提示只存在一个Frame,NewFrame后之前的内容将被清空
-
显示一个像素点:
uint8_t x
横坐标uint8_t y
纵坐标OLED_ColorMode mode
颜色模式OLED_COLOR_NORMAL
正常OLED_COLOR_REVERSE
反色
void OLED_SetPixel(uint8_t x, uint8_t y, OLED_ColorMode color);
// 示例
OLED_NewFrame(); // 新建一个空白缓冲区
OLED_SetPixel(0, 0, OLED_COLOR_NORMAL); // 在(0, 0)处显示一个黑色的像素点
OLED_ShowFrame(); // 将缓冲区内容显示到屏幕上
- 显示字符串
uint8_t x
纵坐标 [0, 127]uint8_t y
纵坐标 [0, 63]char *str
要显示的字符串const Font *font
字体OLED_ColorMode color
颜色模式
void OLED_PrintString(uint8_t x, uint8_t y, char *str, const Font *font, OLED_ColorMode color);
// 示例
OLED_NewFrame(); // 新建一个空白缓冲区
OLED_PrintString(0, 22, "B站-KEYSKING", &font16x16, OLED_COLOR_NORMAL); // 中文、英文、符号混合显示
OLED_ShowFrame(); // 将缓冲区内容显示到屏幕上