登录/注册

STM32进度条显示

更多

在STM32上实现进度条显示,通常涉及LCD或OLED屏幕的控制。以下是详细步骤和代码示例(使用常见的SSD1306 OLED和STM32 HAL库):

步骤概览:

  1. 硬件连接:STM32与显示屏(如I2C接口的SSD1306 OLED)。
  2. 初始化显示:配置I²C/SPI总线和显示屏驱动。
  3. 进度条逻辑:根据百分比计算填充宽度。
  4. 动态刷新:每次进度变化时重绘进度条。

代码示例(SSD1306 OLED + HAL库):

/* 屏幕尺寸定义 */
#define OLED_WIDTH   128
#define OLED_HEIGHT  64

/* 进度条位置和尺寸 */
#define BAR_X        10
#define BAR_Y        20
#define BAR_WIDTH    100
#define BAR_HEIGHT   20

/* SSD1306绘制函数(需自行实现基础驱动) */
void SSD1306_DrawRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint8_t color);
void SSD1306_UpdateScreen(void);

/* 进度条绘制函数 */
void draw_progress_bar(uint8_t percent) {
    // 清除旧进度条(或全屏刷新)
    SSD1306_DrawRect(BAR_X, BAR_Y, BAR_WIDTH, BAR_HEIGHT, 0); // 清除背景

    // 绘制进度条边框
    SSD1306_DrawRect(BAR_X, BAR_Y, BAR_WIDTH, BAR_HEIGHT, 1);

    // 计算填充宽度
    uint16_t fill_width = (BAR_WIDTH - 2) * percent / 100;

    // 绘制填充部分(留1像素边框)
    SSD1306_DrawRect(BAR_X + 1, BAR_Y + 1, fill_width, BAR_HEIGHT - 2, 1);

    // 更新屏幕显示
    SSD1306_UpdateScreen();
}

/* 主循环示例 */
int main(void) {
    HAL_Init();
    SystemClock_Config();
    SSD1306_Init(); // 初始化OLED

    for (uint8_t p = 0; p <= 100; p++) {
        draw_progress_bar(p);
        HAL_Delay(50); // 控制进度速度
    }

    while(1);
}

关键细节说明:

  1. 显示驱动

    • 需实现 SSD1306_DrawRect() 基础绘图函数(支持绘制矩形)。
    • 推荐使用现成驱动库(如Github上的 ssd1306 STM32 HAL库)。
  2. 优化刷新

    • 仅重绘进度条区域减少闪烁(使用局部刷新函数)。
    • 添加百分比文本显示(调用字符绘制函数)。
  3. 触摸屏扩展

    • 使用电阻/电容触摸屏时,可结合STM32的ADC或专用触控IC(如XPT2046)。
    • 监听触摸事件动态更新进度:
      if (touch_detected()) {
       uint16_t touchX = read_touch_x();
       percent = (touchX - BAR_X) * 100 / BAR_WIDTH;
       draw_progress_bar(percent);
      }

效果图:

[██████████          ]  50% 

(实际为屏幕上的图形化进度条)

实际效果依赖显示器的分辨率和绘图精度,可通过增加圆角、渐变或文字标签增强视觉效果。

根据具体硬件调整参数即可实现平滑动态进度显示。

【HarmonyOS 5】鸿蒙中进度条的使用详解

【HarmonyOS 5】鸿蒙中进度条的使用详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、HarmonyOS中Progress进度条的类型

2025-07-11 18:26:13

大彩讲堂:VisualTFT软件如何自定义圆形进度条

VisualTFT软件如何自定义圆形进度条

2025-07-07 17:10:06

图像显示专用驱动芯片ZDP1440系列小技巧-如何提升环形进度条帧率

本文导读 ZDP1440是一款基于开源GUI引擎的图像显示专用驱动芯片,可以通过串口或者SPI与其他芯片通信。在一些仪器仪表中会有环形进度条或者扇形进度条

2025-01-06 14:32:21

LcdProgressBarDouble LCD显示显示两个进度条

电子发烧友网站提供《LcdProgressBarDouble LCD显示器显示两个进度条.zip》资料免费下载

资料下载 佚名 2022-12-27 09:49:34

OLED的波形曲线、进度条、图片显示STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

资料下载 李杰 2021-12-01 10:51:05

串口屏Modbus教程3-仪表、滑块及进度条控件V1.0

串口屏Modbus教程3-仪表、滑块及进度条控件V1.0

资料下载 dcolour2019 2021-04-29 13:31:52

大彩串口屏控件教程15 - 圆形进度条控件应用

大彩串口屏控件教程15-圆形进度条控件应用

资料下载 dcolour2019 2021-04-29 12:57:15

大彩串口屏控件教程3 - 串口屏进度条控件应用

大彩串口屏控件教程3-串口屏进度条控件应用

资料下载 dcolour2019 2021-04-29 12:46:02

【AWTK使用经验】如何设计立体电池进度条

AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章进行解答

2024-04-18 08:25:15

鸿蒙原生应用/元服务开发-发布进度条类型通知

进度条通知也是常见的通知类型,主要应用于文件下载、事务处理进度显示。HarmonyOS提供了

2024-01-04 17:20:54

Tqdm:超方便的迭代进度条

Tqdm 是一个智能进度表。它能够显示所有可迭代对象当前执行的进度。 你只需要用 tqdm 对可迭代对象进行封装后再遍历即可实现

2023-10-21 10:16:12

HarmonyOS实战——ProgressBar进度条组件基本使用

【鸿蒙专栏,从入门到实战系列】:https://bbs.elecfans.com/user/4697363/posts/1. ProgressBar进度条组件组件说明:常见app中,下载进度条

2021-09-22 23:31:56

LabVIEW原版Windows的进度条UI

`通过调用.Net接口实现,感觉这个进度条的动画效果还是不错的,在这里分享一下 ` (文件被吞重传)

2021-02-05 14:33:21

如何让LCD中的进度条函数显示出来?

各位,小弟最近在做进度条,就是在12864上面做进度条显示,不会弄,可以指点一下吗?对了,有这个程序吗?可以发上来分享下吗?

2019-11-11 00:22:56

怎么设置进度条

RT!比如 我创建一个随意长度的进度条然后我知道一个文件的大小 当把这个文件里的数据读完后进度条也跟着完毕请问那位弄过?我搞了下随意创建 有问题有事候进度条

2019-08-22 04:35:02
7天热门专题 换一换
相关标签