單片機 + 圖像處理芯片 + 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.pswp.cn/news/902343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902343.shtml
英文地址,請注明出處:http://en.pswp.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 ===================================================== 成長優化算法 一、算法原理二、核心公式三、應用領域四、算法改進研究五…