OLED 运用 
Author:余生
一、电路连接 

二、预备代码 
目前我们先不管该 OLED 的原理,感兴趣的话可以先行跳转 I2C
由于缺少前置知识,我们直接使用该已经写好的库
按照这个样子来放置在文件上

之后,我们就可以直接使以下函数了
| 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, 0xAA55, 4); | 显示十六进制数字 | 
| OLED_ShowBinNum(4, 1, 0xAA55, 16); | 显示二进制数字 | 
三、代码编写 
cpp
#include "Delay.h"
#include "OLED.h"
#include "stm32f10x.h"  // Device header
int main(void) {
    OLED_Init();
    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, 0xAA55, 4);
    OLED_ShowBinNum(4, 1, 0xAA55, 16);
    while (1) {
    }
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1. 初始化 OLED
cpp
OLED_Init();1
作用:开机!点亮屏幕!
- 让 STM32 和 OLED 建立通信(通常是 I2C)
- 初始化屏幕设置,清屏,准备显示内容
类比:打开电视电源,等它进入待播放状态。
2. 开始往屏幕上 “写东西”
下面这些函数,都是在 “指定位置” 显示 “指定内容”。
我们一个一个说:
OLED_ShowChar(1, 1, 'A'); 
在第 1 行、第 1 列 显示一个字符:A
- 行和列是从 1 开始数的(不是 0)
- 'A'是单引号,表示一个字符
就像在表格里填一个格子:第 1 行第 1 格,写个 “A”
OLED_ShowString(1, 3, "HelloWorld!"); 
在第 1 行、第 3 列 显示一串文字:HelloWorld!
- "HelloWorld!"是双引号,表示字符串(多个字符)
- 从第 3 列开始,一个一个字母排下去
注意:OLED 屏幕宽度有限(128 列),太长会显示不下
OLED_ShowNum(2, 1, 12345, 5); 
在第 2 行、第 1 列 显示一个 正整数:12345,总共显示 5 位
- 12345是要显示的数字
- 5是显示几位数(不够前面补空格)
比如你写 OLED_ShowNum(2,1,7,3) → 显示 7 (前面两个空格)
OLED_ShowSignedNum(2, 7, -66, 2); 
在第 2 行、第 7 列 显示一个 有正负号的数:-66,显示 2 位
- 可以显示负数!比如 -66、-1
- 2表示最多显示 2 位数字(含符号也算位置)
注意:如果数字太大(比如 -100),会显示不全或变成??,要小心
OLED_ShowHexNum(3, 1, 0xAA55, 4); 
在第 3 行、第 1 列 显示一个 十六进制数:AA55,显示 4 位
- 0xAA55是十六进制写法
- 显示出来就是: AA55
单片机调试时常用十六进制看数据(比如寄存器值)
OLED_ShowBinNum(4, 1, 0xAA55, 16); 
在第 4 行、第 1 列 显示一个 二进制数:把
0xAA55转成二进制,显示 16 位
- 0xAA55的二进制是:- 1010101001010101
- 显示 16 位,刚好占满一整行
二进制适合看每一位是 0 还是 1,对理解寄存器很有帮助!
最后:进入无限循环 
cpp
while (1)
{
    // 啥也不干,就让程序一直运行
}1
2
3
4
2
3
4
因为显示内容已经全部写好了,不需要再更新,所以程序到这里就 “挂起”,保持屏幕一直亮着。
屏幕最终显示效果大概是这样 
txt
第1行:AHelloWorld!
第2行:12345 -66
第3行:AA55
第4行:10101010010101011
2
3
4
2
3
4