STM32进度条显示
在STM32上实现进度条显示,通常涉及LCD或OLED屏幕的控制。以下是详细步骤和代码示例(使用常见的SSD1306 OLED和STM32 HAL库):
步骤概览:
- 硬件连接:STM32与显示屏(如I2C接口的SSD1306 OLED)。
- 初始化显示:配置I²C/SPI总线和显示屏驱动。
- 进度条逻辑:根据百分比计算填充宽度。
- 动态刷新:每次进度变化时重绘进度条。
代码示例(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);
}
关键细节说明:
-
显示驱动:
- 需实现
SSD1306_DrawRect()基础绘图函数(支持绘制矩形)。 - 推荐使用现成驱动库(如Github上的
ssd1306STM32 HAL库)。
- 需实现
-
优化刷新:
- 仅重绘进度条区域减少闪烁(使用局部刷新函数)。
- 添加百分比文本显示(调用字符绘制函数)。
-
触摸屏扩展:
- 使用电阻/电容触摸屏时,可结合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
图像显示专用驱动芯片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
【AWTK使用经验】如何设计立体电池进度条?
AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章进行解答
2024-04-18 08:25:15
HarmonyOS实战——ProgressBar进度条组件基本使用
【鸿蒙专栏,从入门到实战系列】:https://bbs.elecfans.com/user/4697363/posts/1. ProgressBar进度条组件组件说明:常见app中,下载进度条
如何让LCD中的进度条函数显示出来?
各位,小弟最近在做进度条,就是在12864上面做进度条显示,不会弄,可以指点一下吗?对了,有这个程序吗?可以发上来分享下吗?
怎么设置进度条?
RT!比如 我创建一个随意长度的进度条然后我知道一个文件的大小 当把这个文件里的数据读完后进度条也跟着完毕请问那位弄过?我搞了下随意创建 有问题有事候进度条
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机