这是一个基于STM32F103微控制器的I2C显示演示项目,展示了如何使用I2C协议与OLED/LCD显示屏进行通信。
- I2C通信: 支持多种I2C地址的显示屏自动检测
- 多字体支持: 内置6x8小字体和8x16大字体
- 动画效果: 多种有趣的显示动画模式
- 自动模式切换: 程序自动循环显示不同内容
- 欢迎界面 - 显示项目标题和欢迎信息
- 消息轮播 - 循环显示15条有趣的消息
- 图案动画 - 6种不同的几何图案动画
- 波浪动画 - 动态波浪效果
- 进度条 - 动态进度条显示
- 倒计时 - 10秒倒计时动画
- 支持128x64 OLED显示屏
- 兼容多种I2C地址 (0x3C, 0x3D, 0x27)
- 完整的字体位图数据
- 高效的显示缓冲区管理
- 模块化代码设计
- STM32F103C8T6 开发板 (Blue Pill)
- I2C OLED显示屏 (128x64像素)
- 连接线
STM32F103 OLED显示屏
PB10 ------> SCL (时钟线)
PB11 ------> SDA (数据线)
3.3V ------> VCC (电源)
GND -------> GND (地线)
Core/
├── Inc/
│ ├── main.h # 主程序头文件
│ ├── stm32f1xx_hal_conf.h # HAL配置
│ ├── stm32f1xx_it.h # 中断处理
│ └── display_driver.h # 显示驱动头文件
├── Src/
│ ├── main.c # 主程序
│ ├── display_driver.c # 显示驱动实现
│ ├── font_data.c # 字体数据
│ └── ... # 其他STM32文件
- 显示屏初始化和配置
- I2C通信协议实现
- 像素级绘图函数
- 字体渲染引擎
- 6x8像素小字体 (ASCII 32-127)
- 8x16像素大字体 (ASCII 32-90)
- 特殊图案位图数据
- 显示模式管理
- 动画逻辑控制
- 用户界面实现
- STM32CubeIDE 1.19.0 或更高版本
- STM32F1 HAL库
- 在STM32CubeIDE中导入项目
- 确保所有源文件都已包含
- 配置正确的目标芯片 (STM32F103C8T6)
- 编译项目
- 使用ST-Link V2烧录器
- 通过STM32CubeIDE直接烧录
- 或使用STM32 ST-Link Utility
- 连接硬件
- 烧录程序
- 上电运行
- 观察显示屏自动切换不同模式
在main.c中修改fun_messages数组:
const char* fun_messages[] = {
"Your Message Here!",
"Another Message!",
// ... 更多消息
};调整各种延迟参数:
#define ANIMATION_DELAY_MS 800 // 动画延迟
#define TEXT_DELAY_MS 3000 // 文本显示时间
#define WAVE_DELAY_MS 150 // 波浪动画速度- 在
MODE_MAX后添加新模式 - 实现对应的显示函数
- 在主循环中添加case分支
- 检查I2C连接是否正确
- 确认电源电压 (3.3V)
- 验证I2C地址设置
- 检查字体数据是否正确
- 确认显示屏分辨率设置
- 验证I2C通信时序
- 确保包含所有必要的头文件
- 检查HAL库配置
- 验证编译器设置
- 使用逻辑分析仪观察I2C信号
- 在关键位置添加调试输出
- 检查I2C总线状态
- 添加触摸屏支持
- 实现图形用户界面
- 支持更多字体样式
- 添加网络通信功能
- 实现数据记录显示
- 支持其他STM32F1系列芯片
- 可适配不同分辨率的显示屏
- 支持SPI等其他通信协议
本项目基于MIT许可证开源,您可以自由使用、修改和分发。
欢迎提交问题报告和功能请求!如果您想贡献代码,请:
- Fork本项目
- 创建功能分支
- 提交更改
- 创建Pull Request
如有问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件至项目维护者
享受您的STM32 I2C显示项目! 🚀