基于I2C协议的OLED显示(利用U82G库)

一、实验目的:

1、了解I2C协议的基本原理和时序协议;

2、掌握0.96寸OLED屏的工作原理,汉字点阵显示原理;

3、掌握开源GUI库U82G在stm32上的移植编译方法,以及图形界面可视化技术。

二、具体过程

1、利用stm32f103的GPIO管脚、VCC和GND连接 OLED屏的I2C接口,采用cubemx设计一个HAL库程序框架,然后下载U8G2源码,针对stm32f103和 0.96寸的I2C接口OLED屏,进行代码裁剪,然后移植到HAL程序程序中,完成OLED的各种显示,包括:

1)U82G的demo例程; 2)显示你自己的学号和名字(或网名昵称);3)掌握上下、左右滑动显示方法;4)显示一个图案(比如你的头像肖像),最好有动态效果。

使用u8g2生成代码

 

STM32CubeMX 配置

  1. 打开STM32CubeMX,选择你的STM32F103型号,配置时钟、GPIO管脚和I2C接口。
  2. 启用I2C外设,并配置相应的引脚连接和速度设置。
  3. 生成代码并打开生成的工程。

U8G2库的裁剪和移植

  1. 下载U8G2库的源码,并找到针对STM32的示例代码或相关驱动部分。
  2. 根据你的OLED屏的参数(比如分辨率、通信接口等),裁剪U8G2库,只保留你需要的部分代码。
  3. 将裁剪后的U8G2库源码文件添加到你的STM32项目中,确保文件路径正确。

在STM32项目中初始化和使用U8G2库

// 包含U8G2头文件
#include "u8g2.h"

// 定义并初始化U8G2对象
u8g2_t u8g2;

// 初始化函数
void u8g2_init() {
    u8g2_Setup_ssd1306_i2c_128x64_noname_f(&u8g2, U8G2_R0, u8x8_byte_hw_i2c, u8x8_gpio_and_delay_stm32);
    u8g2_InitDisplay(&u8g2);
    u8g2_SetPowerSave(&u8g2, 0);
}

// 1)U82G的demo例程
void display_demo() {
    u8g2_ClearBuffer(&u8g2);
    u8g2_DrawStr(&u8g2, 0, 10, "Hello World!");
    u8g2_SendBuffer(&u8g2);
}

// 2)显示你自己的学号和名字(或网名昵称)
void display_student_info() {
    u8g2_ClearBuffer(&u8g2);
    u8g2_DrawStr(&u8g2, 0, 10, "学号: 123456");
    u8g2_DrawStr(&u8g2, 0, 30, "名字: 张三");
    u8g2_SendBuffer(&u8g2);
}

// 3)上下、左右滑动显示方法
void slide_text(const char* text) {
    // 实现滑动显示的逻辑
}

// 4)显示一个图案,最好有动态效果
void display_image_with_dynamic_effect() {
    // 显示图案并实现动态效果
}

// 主函数
int main(void) {
    HAL_Init();
    // 其他初始化代码...

    u8g2_init(); // 初始化U8G2库

    while (1) {
        display_demo(); // 显示demo例程
        HAL_Delay(2000);

        display_student_info(); // 显示学号和名字
        HAL_Delay(2000);

        slide_text("滑动文本"); // 上下、左右滑动显示
        HAL_Delay(2000);

        display_image_with_dynamic_effect(); // 显示图案并实现动态效果
        HAL_Delay(2000);
    }
}

2. 如果使用Keil的虚拟逻辑分析仪去采集 I2C 引脚SDA的波形,是什么样子的? 如果无法采集到真实的I2C协议,你觉得可改用什么方法?

虚拟逻辑分析仪更多用于监控和分析软件变量,而不是直接采集硬件信号(如I2C SDA线上的实际电压波形)。虚拟逻辑分析仪可以帮助你查看寄存器和变量的值变化,但要看到真实的I2C通信波形,通常需要一个专门的硬件工具。

如果用Keil的虚拟逻辑分析仪来获取某种形式的I2C活动你可以通过记录与I2C通信相关的状态或变量的变化。例如,在你的I2C传输代码中添加一些标志位或计数器,然后在逻辑分析仪中观察这些变量的变化。

示波器可以显示I2C信号的电压波形。虽然它没有逻辑分析仪那样的协议解码功能,但对于查看信号质量和时序仍然非常有用。

步骤:

  1. 将示波器探头连接到I2C的SCL和SDA引脚,确保探头地线连接好。
  2. 设置示波器的触发条件(例如上升沿触发)。
  3. 执行你的I2C通信操作,然后观察示波器屏幕上的波形。

作者水平有限,不足之处欢迎指正。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珏决

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值