Skip to content

pigTom/i2c_study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I2C Display Demo for STM32F103

这是一个基于STM32F103微控制器的I2C显示演示项目,展示了如何使用I2C协议与OLED/LCD显示屏进行通信。

项目特性

🎯 核心功能

  • I2C通信: 支持多种I2C地址的显示屏自动检测
  • 多字体支持: 内置6x8小字体和8x16大字体
  • 动画效果: 多种有趣的显示动画模式
  • 自动模式切换: 程序自动循环显示不同内容

🖥️ 显示模式

  1. 欢迎界面 - 显示项目标题和欢迎信息
  2. 消息轮播 - 循环显示15条有趣的消息
  3. 图案动画 - 6种不同的几何图案动画
  4. 波浪动画 - 动态波浪效果
  5. 进度条 - 动态进度条显示
  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文件

核心模块

1. 显示驱动 (display_driver.c)

  • 显示屏初始化和配置
  • I2C通信协议实现
  • 像素级绘图函数
  • 字体渲染引擎

2. 字体数据 (font_data.c)

  • 6x8像素小字体 (ASCII 32-127)
  • 8x16像素大字体 (ASCII 32-90)
  • 特殊图案位图数据

3. 主程序 (main.c)

  • 显示模式管理
  • 动画逻辑控制
  • 用户界面实现

编译和烧录

开发环境

  • STM32CubeIDE 1.19.0 或更高版本
  • STM32F1 HAL库

编译步骤

  1. 在STM32CubeIDE中导入项目
  2. 确保所有源文件都已包含
  3. 配置正确的目标芯片 (STM32F103C8T6)
  4. 编译项目

烧录方法

  • 使用ST-Link V2烧录器
  • 通过STM32CubeIDE直接烧录
  • 或使用STM32 ST-Link Utility

使用方法

基本操作

  1. 连接硬件
  2. 烧录程序
  3. 上电运行
  4. 观察显示屏自动切换不同模式

自定义修改

添加新消息

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    // 波浪动画速度

添加新显示模式

  1. MODE_MAX后添加新模式
  2. 实现对应的显示函数
  3. 在主循环中添加case分支

故障排除

常见问题

显示屏不工作

  • 检查I2C连接是否正确
  • 确认电源电压 (3.3V)
  • 验证I2C地址设置

显示内容异常

  • 检查字体数据是否正确
  • 确认显示屏分辨率设置
  • 验证I2C通信时序

编译错误

  • 确保包含所有必要的头文件
  • 检查HAL库配置
  • 验证编译器设置

调试技巧

  • 使用逻辑分析仪观察I2C信号
  • 在关键位置添加调试输出
  • 检查I2C总线状态

扩展功能

可能的改进

  • 添加触摸屏支持
  • 实现图形用户界面
  • 支持更多字体样式
  • 添加网络通信功能
  • 实现数据记录显示

兼容性

  • 支持其他STM32F1系列芯片
  • 可适配不同分辨率的显示屏
  • 支持SPI等其他通信协议

许可证

本项目基于MIT许可证开源,您可以自由使用、修改和分发。

贡献

欢迎提交问题报告和功能请求!如果您想贡献代码,请:

  1. Fork本项目
  2. 创建功能分支
  3. 提交更改
  4. 创建Pull Request

联系方式

如有问题或建议,请通过以下方式联系:

  • 提交GitHub Issue
  • 发送邮件至项目维护者

享受您的STM32 I2C显示项目! 🚀

About

Using stm32 + 0.96inch oled screen study i2c.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages