1. U8g2图形库与OLED显示基础
在嵌入式开发中,显示模块的选择往往需要在功能和资源消耗之间寻找平衡。对于资源受限的单片机系统(如STM32F103系列),0.96寸OLED(通常采用SSD1306驱动芯片)因其高对比度、低功耗和紧凑尺寸成为理想选择。而U8g2库的出现,则为这类单色显示屏提供了强大的图形支持。
U8g2是一个专注于单色显示的嵌入式图形库,最初为Arduino平台开发,现已支持多种微控制器。它采用纯C语言编写,具有以下核心特点:
- 支持超过220种显示控制器(包括SSD1306、SH1106等)
- 内置40多种字体(支持英文、数字和部分符号)
- 提供画线、矩形、圆形等基本绘图功能
- 支持位图显示和自定义图形
- 内存占用可配置(全缓冲/部分缓冲/无缓冲模式)
与常见的"直接写寄存器"式OLED驱动相比,U8g2提供了更高层次的抽象。开发者无需关心底层通信细节,只需调用统一的API即可实现复杂显示效果。例如,显示旋转文字只需设置旋转参数,而库会自动处理像素变换。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与工程配置
2.1 硬件连接与原理
典型的0.96寸OLED模块采用4线SPI接口,引脚定义如下:
| OLED引脚 | STM32连接 | 功能说明 |
|---|---|---|
| GND | GND | 电源地 |
| VCC | 3.3V | 电源正 |
| SCL | PB15 | 时钟线 |
| SDA | PB14 | 数据线 |
| RST | PB13 | 复位信号 |
| D/C | PC13 | 数据/命令选择 |
注意:虽然使用SPI接口,但OLED模块通常只要求单向通信(MCU→OLED),因此无需连接MISO线。实际项目中,RST和D/C引脚可根据情况连接到其他GPIO。
2.2 开发环境搭建
-
工具链准备:
- Keil MDK-ARM(建议V5.25+)
- STM32CubeMX(用于生成初始化代码)
- ST-Link/V2调试器驱动
-
工程创建步骤:
bash复制#
