江协STM32学习笔记+自测--OLED显示屏
·

🎯 OLED 自测题
一、基础概念题
- 填空题:0.96 寸 I2C 接口 OLED 的分辨率为______,I2C 通信核心引脚为______(数据线)和______(时钟线);OLED 显示数字的函数是______,显示字符串的函数是______。
- 选择题:OLED 初始化的核心步骤不包括()A. 配置 I2C 通信引脚 B. 发送 OLED 寄存器初始化命令 C. 直接点亮全屏幕 D. 设置显示对比度
- 判断题:OLED 的
ShowString()函数可直接显示中文汉字,无需额外操作()(对打√,错打 ×) - 简答题:简述 OLED 显示一个字符串的核心流程。
二、代码实操题
- OLED 0~99 循环计数显示:实现2行 8列显示 2 位数字,1 秒刷新一次,计数到 99 后重置为 0。
- 声光报警器 + OLED 模式联动显示:
- 开机默认自动模式,按键点按切换自动 / 手动模式;
- 自动模式:OLED1 行显示
Auto Mode,2 行根据光敏显示Light: Bright/Light: Dark,光敏暗时蜂鸣器响 + LED 闪烁,光敏亮时蜂鸣器关 + LED 常亮; - 手动模式:OLED1 行显示
Manual Mode,2 行显示Buzzer: OFF,光敏失效,强制 LED 常亮、蜂鸣器关
参考答案
一、基础概念题
1. 填空题
0.96 寸 I2C 接口 OLED 的分辨率为128×64,I2C 通信核心引脚为SDA(数据线)和SCL(时钟线);OLED 显示数字的函数是OLED_ShowNum,显示字符串的函数是OLED_ShowString。
2. 选择题
OLED 初始化的核心步骤不包括(C)
A. 配置 I2C 通信引脚 B. 发送 OLED 寄存器初始化命令 C. 直接点亮全屏幕 D. 设置显示对比度
3. 判断题
OLED 的ShowString()函数可直接显示中文汉字,无需额外操作(×)
4. 简答题
简述 OLED 显示一个字符串的核心流程
答:① 调用OLED_Init()初始化 OLED 模块;② 调用OLED_ShowString(行,列,字符串)指定显示位置和内容;③ 驱动函数将字符串点阵数据写入 OLED 显存;④ 屏幕根据显存数据点亮对应像素完成显示。
二、代码实操题(可直接跑通,适配你的工程)
题目 1:OLED 0~99 循环计数显示(1 秒刷新,2行 8 列显示 2 位数字)
#include "stm32f10x.h"
#include "Delay.h"
#include "OLED.h"
int main(void)
{
OLED_Init();
int num = 0;
while(1)
{
OLED_ShowNum(2,8, num, 2); // 第4行显示2位数字
num++;
if(num>99) num=0;
Delay_ms(10); // 1秒加1
}
}
题目 2:声光报警器 + OLED 模式联动显示
管脚和之前相同
#include "stm32f10x.h"
#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "LightSensor.h"
#include "Buzzer.h"
#include "OLED.h"
int main(void)
{
LED_Init();
Key_Init();
LightSensor_Init();
Buzzer_Init();
OLED_Init();
OLED_Clear(); // 开机清屏(重要!),启动写了,不写也行
uint8_t KeyNum;
uint8_t Mode = 0; // 0=自动 1=手动
while(1)
{
KeyNum = Key_GetNum();
// 按键切换模式
if(KeyNum == 1)
{
Mode = !Mode;
}
// 自动模式
if(Mode == 0)
{
OLED_ShowString(1,1,"Auto Mode");
if(LightSensor_Get() == 1)
{
OLED_ShowString(2,1,"Light: Dark ");
Buzzer_ON();
LED_Turn();
Delay_ms(100);
}
else
{
OLED_ShowString(2,1,"Light: Bright");
Buzzer_OFF();
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
}
}
// 手动模式
else
{
OLED_ShowString(1,1,"Manual Mode");
OLED_ShowString(2,1,"Buzzer: OFF ");
Buzzer_OFF();
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
}
}
}
排错总结
题目 1:OLED 通电后无任何显示,代码无报错,排查 3 个核心原因 + 解决方法
答:① 未调用OLED_Init():在main开头添加初始化代码;② OLED 硬件接线错(SDA/SCL 接反、未共 GND):重新核对引脚接线,确保所有模块共 GND;③ OLED 正负极接反:调换 OLED 供电正负极。
题目 2:OLED 显示字符有残影(如 Bright 切换为 Dark 后,末尾仍显示 t),解决方法
答:用空格补齐短字符串,使新字符串长度与旧字符串一致,覆盖原有显存数据(如Light: Dark 加 2 个空格,与Light: Bright长度匹配)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)