進度條控件使用說明
概述
本進度條控件基于單片機 + 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 # 用戶定義配置
如何移植
- 將
widget/progressbar.h
和widget/progressbar.c
文件復制到您的項目中 - 確保您的項目中已包含 RA8889/RA6809 相關的驅動文件:
- RA8889_51.h
- RA8889_API_51.h
- UserDef.h
- delay.h
- 在需要使用進度條的源文件中引入頭文件:
#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}
}
注意事項
- 進度條值的范圍為0-100,超出范圍的值會被自動限制在有效范圍內
- 標簽文本最大長度為MAX_PROGRESSBAR_LABEL_FONT_NUM-1
- 如果標簽位置偏移量導致標簽位置小于0,將自動調整為0
- 請確保RA8889/RA6809控制器已正確初始化
- 當標簽為空字符串時,標簽區域不會被繪制和復制到顯示層
源碼下載
請看到視頻最后面
視頻介紹說明
單片機-RAIO液晶控制芯片-進度條控件