单片机 + 图像处理芯片 + TFT彩屏 进度条控件

进度条控件使用说明

概述

本进度条控件基于单片机 + RA8889/RA6809 + TFT开发,提供了简单易用的进度显示功能。控件支持多个进度条同时显示、自定义颜色、边框和标签等特性,适用于需要直观显示进度信息的各类应用场景。
在这里插入图片描述

特性

  • 支持多个进度条同时显示
  • 可自定义进度条位置、尺寸和边框宽度
  • 支持自定义背景色、进度条颜色、边框颜色和文字颜色
  • 可配置是否显示百分比文字
  • 支持自定义标签文本和位置
  • 实时更新进度显示

硬件环境要求

  • MCU: 51/ARM等不限(测试平台使用:STC8H8K64U)
  • 图形处理芯片(Micro GPU): RA8889/RA6809
  • 显示屏: TFT液晶屏(演示采用:1024x600)

文件结构

进度条控件
│
├── main.c  # 示例应用程序
├── widget/
│   ├── progressbar.c    # 进度条控件实现
│   └── progressbar.h    # 进度条控件头文件
└── RA8889_01_Kernel/├── RA8889_51.c      # RA8889底层驱动├── RA8889_51.h├── RA8889_API_51.c  # RA8889 API实现├── RA8889_API_51.h└── UserDef.h        # 用户定义配置

如何移植

  1. widget/progressbar.hwidget/progressbar.c 文件复制到您的项目中
  2. 确保您的项目中已包含 RA8889/RA6809 相关的驱动文件:
    • RA8889_51.h
    • RA8889_API_51.h
    • UserDef.h
    • delay.h
  3. 在需要使用进度条的源文件中引入头文件:
    #include "progressbar.h"
    

使用方法

初始化进度条控件

在使用进度条前,需要先初始化:

// 初始化进度条控件
ProgressBar_Init();

添加进度条

使用 ProgressBar_Add 函数添加一个新的进度条:

unsigned char progress_id = ProgressBar_Add(100, 100,              // 位置 (x, y)400, 40,               // 尺寸 (width, height)2,                     // 边框宽度0x0000FF,              // 背景色 (蓝色)0xFF0000,              // 进度条颜色 (红色)0x000000,              // 边框颜色 (黑色)0xFFFFFF,              // 文字颜色 (白色)1,                     // 显示文字 (1:显示, 0:不显示)0,                     // 初始值 (0-100)"ProgressBar",         // 标签文本-70, -30,              // 标签位置偏移量0x00FF00               // 标签颜色 (绿色)
);

更新进度条值

使用 ProgressBar_SetValue 函数更新进度条的值:

// 设置进度条值为50%
ProgressBar_SetValue(progress_id, 50);

获取进度条当前值

使用 ProgressBar_GetValue 函数获取进度条的当前值:

unsigned char current_value = ProgressBar_GetValue(progress_id);

绘制单个进度条

如需单独刷新某个进度条:

ProgressBar_Draw(progress_id);

绘制所有进度条

如需刷新所有进度条:

ProgressBar_DrawAll();

参数配置

progressbar.h 文件中,可以根据需要修改以下参数:

#define MAX_PROGRESSBAR_NUM 4             // 设定最多的进度条个数
#define MAX_PROGRESSBAR_LABEL_FONT_NUM 16 // 设定标签最多字数
#define PROGRESSBAR_FONT_WIDTH 12         // 设定标签上单个文字的宽度
#define PROGRESSBAR_FONT_HEIGHT 24        // 设定标签上单个文字的高度

完整示例

以下是一个完整的示例,展示了如何创建和更新两个进度条:

#include "progressbar.h"
void main(void)
{// 显示器初始化代码// ...// 初始化进度条控件ProgressBar_Init();// 添加第一个进度条unsigned char progress1 = ProgressBar_Add(50, 100,               // 位置 (x, y)400, 30,               // 尺寸 (width, height)2,                     // 边框宽度0xAAAAAA,              // 背景色 (灰色)0x00FF00,              // 进度条颜色 (绿色)0x000000,              // 边框颜色 (黑色)0xFFFFFF,              // 文字颜色 (白色)1,                     // 显示文字 (1:显示, 0:不显示)30,                    // 初始值 (30%)"Upload",              // 标签文本-80, -30,              // 标签位置偏移量0xFFFF00               // 标签颜色 (黄色));// 添加第二个进度条unsigned char progress2 = ProgressBar_Add(50, 200,               // 位置 (x, y)400, 30,               // 尺寸 (width, height)2,                     // 边框宽度0xAAAAAA,              // 背景色 (灰色)0xFF0000,              // 进度条颜色 (红色)0x000000,              // 边框颜色 (黑色)0xFFFFFF,              // 文字颜色 (白色)1,                     // 显示文字 (1:显示, 0:不显示)50,                    // 初始值 (50%)"Download",            // 标签文本-50, -30,              // 标签位置偏移量0x00FFFF               // 标签颜色 (青色));// 更新进度条while(1) {static unsigned char value1 = 0;static unsigned char value2 = 0;// 更新第一个进度条值ProgressBar_SetValue(progress1, value1);value1 = (value1 + 5) % 101; // 0~100循环// 更新第二个进度条值ProgressBar_SetValue(progress2, value2);value2 = (value2 + 10) % 101; // 0~100循环delay_ms(500); // 延时500ms}
}

注意事项

  1. 进度条值的范围为0-100,超出范围的值会被自动限制在有效范围内
  2. 标签文本最大长度为MAX_PROGRESSBAR_LABEL_FONT_NUM-1
  3. 如果标签位置偏移量导致标签位置小于0,将自动调整为0
  4. 请确保RA8889/RA6809控制器已正确初始化
  5. 当标签为空字符串时,标签区域不会被绘制和复制到显示层

源码下载

请看到视频最后面

视频介绍说明

单片机-RAIO液晶控制芯片-进度条控件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据处理: OPTICS聚类及Python实现

1. 基本原理 OPTICS(Ordering Points To Identify the Clustering Structure)是一种基于密度的聚类算法,可视为DBSCAN的改进版本。它能够识别不同密度的簇,并自动发现数据中的层次化聚类结构,适用于复杂分布的数据集…

PyCharm 在 Linux 上的完整安装与使用指南

PyCharm 在 Linux 上的完整安装与使用指南—目录 一、PyCharm 简介二、下载与安装1. 下载 PyCharm2. 安装前的依赖准备3. 安装步骤方法 1:通过 Snap 安装(推荐)方法 2:手动安装(从官网下载 .tar.gz 文件)方…

【React】路由器 React-Router

安装路由模式路由组件和属性 (Link、NavLink、Outlet、Routes、Navigate、element)路由传参 ( Hook:useParams 、useSearchParams )路由跳转(Hook:useNavigate)路由的构建 前端路由指的是一种将浏览器URL与特定页面或视图关联起来…

Flowable7.x学习笔记(十)分页查询已部署 BPMN XML 流程

前言 上一篇文章我们已经完成了流程的部署功能,那么下一步就是要激活流程了,但是我们要需要明确的指定具体要激活部署后的哪一条流程,所以我们先把已部署的基础信息以及具体定义信息分页查询出来,本文先把基础代码生成以及完成分页…

【论文阅读23】-地下水预测-TCN-LSTM-Attention(2024-11)

这篇论文主要围绕利用深度学习模型检测地下水位异常以识别地震前兆展开。 [1] Chen X, Yang L, Liao X, et al. Groundwater level prediction and earthquake precursor anomaly analysis based on TCN-LSTM-attention network[J]. IEEE Access, 2024, 12: 176696-176718. 期刊…

electron从安装到启动再到打包全教程

目录 介绍 安装 修改npm包配置 执行安装命令 源代码 运行 打包 先安装git, 安装打包工具 导入打包工具 执行打包命令 总结 介绍 electron确实好用,但安装是真的要耗费半条命。每次安装都会遇到各种问题,然后解决了之后。后面就不需要安装了,但有时候比如电脑重装…

【Rust 精进之路之第4篇-数据基石·上】标量类型:整数、浮点数、布尔与字符的精妙之处

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:构成万物的“原子”——标量类型 在上一篇文章【变量观】中,我们深入探讨了 Rust 如何通过 let、mut、const…

消息中间件RabbitMQ:简要介绍及其Windows安装流程

一、简要介绍 定义:RabbitMQ 是一个开源消息中间件,用于实现消息队列和异步通信。 场景:适用于分布式系统、异步任务处理、消息解耦、负载均衡等场景。 比喻:RabbitMQ 就像是快递公司,负责在不同系统间安全快速地传递…

Docker概念详解

文章目录 一、Docker:容器化应用的基石1.1 环境1.2 Docker 是什么1.3 Docker镜像1.3.1 基础镜像(Base Image)1.3.2 Dockerfile1.3.3 容器镜像(Container Image) 1.4 Registry1.5 容器1.6 Docker VS 虚拟机 二、Docker 的架构原理2.1 C/S软件架…

linux查看及修改用户过期时间

修改用户有效期 密码到期时间 sudo chage -E 2025-12-31 username sudo chage -M 180 username sudo chage -d $(date %F) username 查询用户密码到期时间 for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; …

CGAL 计算直线之间的距离(3D)

文章目录 一、简介二、实现代码三、实现效果一、简介 这里的计算思路很简单: 1、首先将两个三维直线均平移至过原点处,这里两条直线可以构成一个平面normal。 2、如果两个直线平行,那么两条直线之间的距离就转换为直线上一点到另一直线的距离。 3、如果两个直线不平行,则可…

<项目代码>YOLO小船识别<目标检测>

项目代码下载链接 YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN)&#xff0…

基于RK3588+FPGA+AI YOLO全国产化的无人船目标检测系统(二)平台设计

基于项目需求确定国产 AI 平台的总体架构设计,完成硬件单元的选择和搭建以及开发工具链的配置工作。 4.1 国产 AI 平台总体架构 本文设计了一套灵活高效的国产 AI 平台总体架构,设计方法是在嵌入式平 台上使用串行总线( Peripheral Co…

Typescript中的泛型约束extends keyof

概要 本文主要分享Typescript中泛型约束的使用方法。在开发过程中,通过使用该方法,可以在编译阶段,帮助我们查找到一些潜在的空值引用错误。 代码和实现 我们预先定义了IUser接口,接口包括了id,姓名,性别…

C++ 2025 展望:现代编程需求与新兴技术驱动下的变革

C 作为一门成熟的语言,在多个领域(嵌入式系统、高性能计算、图形渲染、游戏开发等)依旧占据重要地位。在 2024 年,C 开发继续在许多传统领域保持强劲的势头,同时也面临着新的挑战与发展方向。展望 2025 年,…

包管理工具有哪些?主流软件分享

常见的包管理工具主要有:npm、Yarn、pnpm、Composer、Maven、pip、Conda 等,其中 npm 是目前全球使用最广泛的JavaScript包管理工具,以丰富的生态、便捷的使用体验以及强大的社区支持闻名。npm具备依赖管理、版本控制、脚本执行等强大功能&am…

2025年世界职业院校技能大赛实施方案(意见稿)

为贯彻落实《教育强国建设规划纲要(2024—2035年)》,进一步提升世界职业院校技能大赛(以下简称“大赛”)内涵质量,发挥大赛引领作用,提升高技能人才培养质量,服务现代职业教育体系建…

Redis 慢查询分析与优化

Redis 慢查询分析与优化 参考书籍 : https://weread.qq.com/web/reader/d5432be0813ab98b6g0133f5kd8232f00235d82c8d161fb2 以下从配置参数、耗时细分、分析工具、优化策略四个维度深入解析 Redis 慢查询问题,结合实战调优建议,帮助开发者…

AI之pdf解析:Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析及使用建议

目录标题 Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析1. Tesseract类型: 开源 OCR 引擎特点:缺点:适用场景: 2. PaddleOCR (推荐)类型:特点:缺点:适用场景: 复杂版式文档、多语言混合文本、需要高精度识别的场景&#…

算法 | 成长优化算法(Growth Optimizer,GO)原理,公式,应用,算法改进研究综述,matlab代码

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 成长优化算法 一、算法原理二、核心公式三、应用领域四、算法改进研究五…