找回密码
 立即注册
搜索
热搜: RA8889 RA8876 RA8875
查看: 4|回复: 0

进度条控件

[复制链接]

63

主题

26

回帖

890

积分

管理员

积分
890
QQ
发表于 昨天 23:41 | 显示全部楼层 |阅读模式
进度条控件使用说明

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


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


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


四、文件结构
  1. 进度条控件

  2. ├── main.c  # 示例应用程序
  3. ├── widget/
  4. │   ├── progressbar.c    # 进度条控件实现
  5. │   └── progressbar.h    # 进度条控件头文件
  6. └── RA8889_01_Kernel/
  7.     ├── RA8889_51.c      # RA8889底层驱动
  8.     ├── RA8889_51.h
  9.     ├── RA8889_API_51.c  # RA8889 API实现
  10.     ├── RA8889_API_51.h
  11.     └── UserDef.h        # 用户定义配置
复制代码


五、如何移植
  • 将 widget/progressbar.h 和 widget/progressbar.c 文件复制到您的项目中
  • 确保您的项目中已包含 RA8889/RA6809 相关的驱动文件:
    •RA8889_51.h
    •RA8889_API_51.h
    •UserDef.h
    •delay.h
  • 在需要使用进度条的源文件中引入头文件:#include "progressbar.h"
  • 在初始化显示屏之后,调用进度条初始化函数:ProgressBar_Init();


六、使用方法


1. 初始化进度条控件
在使用进度条前,需要先初始化:
  1. // 设置进度条值为50%
  2. ProgressBar_SetValue(progress_id, 50);
复制代码

2. 添加进度条
使用 ProgressBar_Add 函数添加一个新的进度条:
  1. unsigned char progress_id = ProgressBar_Add(
  2.     100, 100,                // 位置 (x, y)
  3.     400, 40,                 // 尺寸 (width, height)
  4.     2,                       // 边框宽度
  5.     0x0000FF,                // 背景色 (蓝色)
  6.     0xFF0000,                // 进度条颜色 (红色)
  7.     0x000000,                // 边框颜色 (黑色)
  8.     0xFFFFFF,                // 文字颜色 (白色)
  9.     1,                       // 显示文字 (1:显示, 0:不显示)
  10.     0,                       // 初始值 (0-100)
  11.     "ProgressBar",           // 标签文本
  12.     -70, -30,                // 标签位置偏移量
  13.     0x00FF00                 // 标签颜色 (绿色)
  14. );
复制代码

3. 更新进度条值
使用 ProgressBar_SetValue 函数更新进度条的值:
  1. // 设置进度条值为50%
  2. ProgressBar_SetValue(progress_id, 50);
复制代码

4. 获取进度条当前值
使用 ProgressBar_GetValue 函数获取进度条的当前值:
  1. unsigned char current_value = ProgressBar_GetValue(progress_id);
复制代码

5. 绘制单个进度条
如需单独刷新某个进度条:
  1. ProgressBar_Draw(progress_id);
复制代码

6. 绘制所有进度条
如需刷新所有进度条:
  1. ProgressBar_DrawAll();
复制代码

七、参数配置
在 progressbar.h 文件中,可以根据需要修改以下参数:
  1. #define MAX_PROGRESSBAR_NUM 4               // 设定最多的进度条个数
  2. #define MAX_PROGRESSBAR_LABEL_FONT_NUM 16   // 设定标签最多字数
  3. #define PROGRESSBAR_FONT_WIDTH 12           // 设定标签上单个文字的宽度
  4. #define PROGRESSBAR_FONT_HEIGHT 24          // 设定标签上单个文字的高度
复制代码


八、完整示例
以下是一个完整的示例,展示了如何创建和更新两个进度条:
  1. #include "progressbar.h"

  2. void main(void)
  3. {
  4.     // 显示器初始化代码
  5.     // ...
  6.    
  7.     // 初始化进度条控件
  8.     ProgressBar_Init();
  9.    
  10.     // 添加第一个进度条
  11.     unsigned char progress1 = ProgressBar_Add(
  12.         50, 100,                 // 位置 (x, y)
  13.         400, 30,                 // 尺寸 (width, height)
  14.         2,                       // 边框宽度
  15.         0xAAAAAA,                // 背景色 (灰色)
  16.         0x00FF00,                // 进度条颜色 (绿色)
  17.         0x000000,                // 边框颜色 (黑色)
  18.         0xFFFFFF,                // 文字颜色 (白色)
  19.         1,                       // 显示文字 (1:显示, 0:不显示)
  20.         30,                      // 初始值 (30%)
  21.         "Upload",                // 标签文本
  22.         -80, -30,                // 标签位置偏移量
  23.         0xFFFF00                 // 标签颜色 (黄色)
  24.     );
  25.    
  26.     // 添加第二个进度条
  27.     unsigned char progress2 = ProgressBar_Add(
  28.         50, 200,                 // 位置 (x, y)
  29.         400, 30,                 // 尺寸 (width, height)
  30.         2,                       // 边框宽度
  31.         0xAAAAAA,                // 背景色 (灰色)
  32.         0xFF0000,                // 进度条颜色 (红色)
  33.         0x000000,                // 边框颜色 (黑色)
  34.         0xFFFFFF,                // 文字颜色 (白色)
  35.         1,                       // 显示文字 (1:显示, 0:不显示)
  36.         50,                      // 初始值 (50%)
  37.         "Download",              // 标签文本
  38.         -50, -30,                // 标签位置偏移量
  39.         0x00FFFF                 // 标签颜色 (青色)
  40.     );
  41.    
  42.     // 更新进度条
  43.     while(1) {
  44.         static unsigned char value1 = 0;
  45.         static unsigned char value2 = 0;
  46.         
  47.         // 更新第一个进度条值
  48.         ProgressBar_SetValue(progress1, value1);
  49.         value1 = (value1 + 5) % 101;  // 0~100循环
  50.         
  51.         // 更新第二个进度条值
  52.         ProgressBar_SetValue(progress2, value2);
  53.         value2 = (value2 + 10) % 101;  // 0~100循环
  54.         
  55.         delay_ms(500);  // 延时500ms
  56.     }
  57. }
复制代码


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


十、源码下载:
请至论坛菜单:组件与控件中心


十一、视频说明:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Lcdvision Technology ( 苏ICP备10203891号 )

GMT+8, 2025-4-19 21:18 , Processed in 0.074710 second(s), 29 queries .

快速回复 返回顶部 返回列表