U8G2库使用案例(stm32)

U8G2官网:

复制代码
自己移植的U8g2库,OLED库超好用,自己封装了用户层不需要再去查资料使用,注释写的很多很详细,有示例上手就会,初始化也很简单

个人移植的U8g2库:

超简单的stm32 U8g2移植

大家可以自己去官网移植,也可以用我的 U8G2官网

简单的波形生成和显示程序:

cpp 复制代码
#include <stdio.h>
#include <stdint.h>
#include <math.h>
#include "../../WU/OLED_U8g2/U8g2/WU_U8g2_Init.h"
#include "USER_OLED.h"
#include "../../WU/OLED_U8g2/U8g2/u8g2.h"

// 定义屏幕的宽度和高度
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// 定义波形参数
#define WAVE_AMPLITUDE 20  // 波形的振幅
#define WAVE_FREQUENCY 0.2 // 波形的频率(加快频率)

// 初始化波形数据
void InitWave(void) {
    // 无需初始化,因为每次都会重新计算正弦波
}

// 更新波形数据(生成正弦波)
void UpdateWave(uint8_t *waveData, float time) {
    for (int i = 0; i < SCREEN_WIDTH; i++) {
        // 计算正弦波的值,并将其映射到屏幕范围内
        float value = WAVE_AMPLITUDE * sin(WAVE_FREQUENCY * (i + time));
        waveData[i] = SCREEN_HEIGHT / 2 + (uint8_t)value;
    }
}

// 绘制波形
void DrawWave(uint8_t *waveData) {
    // 清空屏幕
    WU_OLED_U8G2_ClearBuffer();

    // 绘制波形
    for (int i = 0; i < SCREEN_WIDTH; i++) {
        // 确保波形在屏幕范围内
        if (waveData[i] < SCREEN_HEIGHT) {
            WU_OLED_U8G2_DrawPixel(i, waveData[i]);
        }
    }

    // 刷新发送缓冲区
    WU_OLED_U8G2_SendBuffer();
}

// 主函数
int main(void) {
    uint8_t waveData[SCREEN_WIDTH];  // 存储每个像素点的Y坐标
    float time = 0;                  // 时间变量,用于生成动态波形

    // 初始化OLED
    WU_OLED_U8G2_Init();

    // 主循环
    while (1) {
        // 更新波形数据
        UpdateWave(waveData, time);

        // 绘制波形
        DrawWave(waveData);

        // 更新时间(加快波形移动速度)
        time += 1.0;

        // 延时一段时间,控制波形刷新速度(减少延时时间)
        // 这里假设有一个延时函数 delay_ms
        //delay_ms(20);  // 将延时时间从50ms减少到20ms
    }

    return 0;
}
相关推荐
Linux猿8 小时前
基于单片机的自行车里程表设计|附源码
单片机·嵌入式硬件·嵌入式·课程设计
学嵌入式的小杨同学10 小时前
STM32 进阶封神之路(三十九)FreeRTOS 临界区、挂起 / 删除、钩子函数、调度底层原理|从应用到内核深度解析
c++·stm32·单片机·嵌入式硬件·mcu·硬件架构·pcb
恒森宇电子有限公司12 小时前
南麟SA8304 单通道 H 桥直流有刷电机驱动芯片 ESOP8封装
单片机·嵌入式硬件
FreakStudio12 小时前
ESP32 实现在线动态安装库和自动依赖安装-使用uPyPI包管理平台
python·单片机·嵌入式·面向对象·电子diy·sourcetrail
4caf112 小时前
【51单片机】26/4/2 --0416
单片机·嵌入式硬件·51单片机
EmbeddedCore14 小时前
硬核实战:基于 C 语言宏定义的物联网网关命令分发框架设计
单片机·嵌入式
EmbeddedCore15 小时前
轻量级消息防重模块全解析:从原理到高性能优化
linux·运维·服务器·嵌入式硬件
啃玉米的艺术家16 小时前
中断 ------ 中断方式
嵌入式硬件
悠哉悠哉愿意16 小时前
【物联网学习笔记】ADC
笔记·单片机·嵌入式硬件·物联网·学习
foundbug99916 小时前
基于STM32的步进电机加减速程序设计(梯形加减速算法)
stm32·单片机·算法