單片機 + 圖像處理芯片 + TFT彩屏 觸摸滑動條控件

觸摸滑動條控件使用說明

一、項目概述

本項目基于單片機和RA8889/RA6809圖形處理芯片的TFT觸摸屏滑動條控件。該控件支持水平和垂直滑動條,可自定義外觀和行為,并支持回調函數進行值變化通知。

  • 硬件平臺:51/ARM均可(測試時使用STC8H8K64U單片機)
  • 圖形處理芯片(Micro GPU):RA8889/RA6809
  • 顯示屏:TFT(演示時采用分辨率1024x600)
  • 觸摸屏:GT911電容觸摸屏
  • 通信接口:SPI-4
    在這里插入圖片描述

二、目錄結構

滑動條控件_Release1.0/
├── main.c                    // 主程序示例文件
├── widget/                   // 控件相關文件
│   ├── slider.c              // 滑動條控件實現
│   └── slider.h              // 滑動條控件頭文件
├── touch/                    // 觸摸屏相關文件
│   ├── GT911.c               // GT911觸摸驅動實現
│   └── GT911.h               // GT911觸摸驅動頭文件
├── RA8889_01_Kernel/         // RA8889/RA6809圖形處理芯片相關文件
│   ├── RA8889_51.c           // RA8889基礎驅動
│   ├── RA8889_51.h           // RA8889基礎頭文件
│   ├── RA8889_API_51.c       // RA8889 API實現
│   ├── RA8889_API_51.h       // RA8889 API頭文件
│   ├── RA8889_MCU_IF.c       // RA8889與MCU接口實現
│   ├── RA8889_MCU_IF.h       // RA8889與MCU接口頭文件
│   ├── UserDef.h             // 用戶定義頭文件
│   ├── delay.c               // 延時函數實現
│   └── delay.h               // 延時函數頭文件
└── 其他項目文件...

三、如何移植

移植步驟

  1. 復制必要文件到您的項目中

    • widget文件夾(包含slider.cslider.h)復制到您的項目中
    • 根據您的硬件配置,復制對應的觸摸屏驅動文件
    • 復制RA8889/RA6809圖形處理芯片核心庫文件,在RA8889_01_Kernel文件夾
  2. 硬件接口配置

    • 根據您的硬件設置,修改RA8889_MCU_IF.cRA8889_MCU_IF.h中的MCU和RA8889/RA6809的通信接口定義
    • 必要時變更觸摸屏驅動,修改GT911.cGT911.h中的接口配置
  3. 更新頭文件包含路徑

    • 在您的項目中更新所有包含路徑,確保編譯器能找到所有必要的頭文件
  4. 初始化配置

    • 參照main.c中的示例,初始化RA8889/RA6809圖形處理芯片
    • 初始化觸摸屏
    • 配置中斷和其他必要的硬件設置

四、API使用方法

1. 初始化

首先需要初始化滑動條控件系統:

Slider_Init();  // 初始化滑動條控件

2. 創建滑動條

使用Slider_Add函數創建一個新的滑動條控件:

unsigned char slider_id = Slider_Add(x,               // 滑動條x坐標y,               // 滑動條y坐標width,           // 滑動條寬度height,          // 滑動條高度forecolor,       // 前景色(已填充部分)backcolor,       // 背景色(軌道顏色)thumbcolor,      // 滑塊顏色orientation      // 方向:HORIZONTAL_SLIDER或VERTICAL_SLIDER
);

3. 配置滑動條參數

設置滑動條的值范圍和步進值:

Slider_Configure(slider_id,       // 滑動條IDinitial_value,   // 初始值min_value,       // 最小值max_value,       // 最大值step_value       // 步進值
);

4. 設置標簽

為滑動條添加標簽文本:

Slider_SetLabel(slider_id,		 // 滑動條ID"Brightness",	 // 標簽文本label_x,         // 標簽相對于滑動條的x偏移label_y,         // 標簽相對于滑動條的y偏移label_color      // 標簽顏色
);

5. 啟用和顯示控件

Slider_Enable(slider_id, TRUE);    // 啟用滑動條
Slider_Visible(slider_id, TRUE);   // 設置滑動條可見

6. 繪制滑動條

Slider_Draw(slider_id);  // 繪制滑動條

7. 設置回調函數

設置值變化時的回調函數:

void ValueChanged_Callback(void* slider, unsigned short value)
{// 處理值變化// slider指向SliderTypeDef結構體// value是當前值
}// 設置回調
Slider_SetCallback(slider_id, ValueChanged_Callback);

8. 處理觸摸事件

在觸摸中斷中獲取觸摸點并處理滑動條:

if(touch_flag == 1)
{if(TPR_Structure.TouchSta > 0)  // 確保有觸摸點{unsigned char triggered_slider = Slider_HandleTouch(TPR_Structure.x[0], TPR_Structure.y[0]);if(triggered_slider > 0)  // 確認滑動條被觸發{Slider_Process(triggered_slider, TPR_Structure.x[0], TPR_Structure.y[0]);}}
}

五、注意事項

  1. 內存使用

    • 滑動條控件數量由MAX_SLIDERS定義,默認為5個,可根據需要修改
    • 每個滑動條需要消耗一定的內存,請根據您的硬件資源合理配置
  2. 顯示層配置

    • 滑動條繪制在Layer1,再使用BTE復制到Layer0,請確保您的項目中正確配置了顯示層
  3. 字體設置

    • 滑動條使用RA8889/RA6809內建的字體,字體固定是12x24,如需更改,請修改slider.c中的字體設置
  4. 觸摸事件

    • 確保在觸摸中斷函數中正確調用GT911_Scan()來掃描觸摸點
    • 滑動條控件依賴于touch_flag來判斷是否有觸摸事件發生
  5. 回調函數

    • 回調函數應盡量簡短,不要在回調中執行耗時操作,以免影響界面響應
  6. 顏色定義

    • 控件默認顏色在slider.h中定義,可根據需要修改以適應您的界面風格
  7. 硬件依賴

    • 本控件依賴于RA8889/RA6809圖形處理芯片

六、實例示范

參考main.c中的示例代碼,了解如何創建和使用不同類型的滑動條控件:

// 初始化垂直滑動條
slider1_id = Slider_Add(800, 100, 50, 400, SLIDER_FILL_COLOR, SLIDER_TRACK_COLOR, SLIDER_THUMB_COLOR, VERTICAL_SLIDER);
Slider_Configure(slider1_id, 17, 0, 20, 1);
Slider_SetLabel(slider1_id, "Brightness", -30, 410, color16M_red);
Slider_Enable(slider1_id, TRUE);
Slider_Visible(slider1_id, TRUE);
Slider_SetCallback(slider1_id, Brightness_Changed);
Slider_Draw(slider1_id);// 初始化水平滑動條
slider2_id = Slider_Add(200, 200, 500, 50, SLIDER_FILL_COLOR, SLIDER_TRACK_COLOR, SLIDER_THUMB_COLOR, HORIZONTAL_SLIDER);
Slider_Configure(slider2_id, 75, 0, 100, 1);
Slider_SetLabel(slider2_id, "Volume", -(6*12+8), 10, color16M_blue);
Slider_Enable(slider2_id, TRUE);
Slider_Visible(slider2_id, TRUE);
Slider_SetCallback(slider2_id, Brightness_Changed);
Slider_Draw(slider2_id);

七、源碼下載

請看到視頻最后面

八、視頻介紹說明

單片機-RAIO液晶控制芯片-觸摸滑動條控件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80796.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80796.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80796.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux離線安裝zsh

下載zsh 下載倉庫后解壓 下載地址:https://github.com/zsh-users/zsh 離線安裝 安裝方法見INSTALL文件 ./configure --prefix[/usr/local] make make install

機器學習中的數據轉換:關鍵步驟與最佳實踐

機器學習中的數據轉換:關鍵步驟與最佳實踐 摘要 :在機器學習領域,數據是模型的核心,而數據的轉換是構建高效、準確模型的關鍵步驟之一。本文深入探討了機器學習中數據轉換的重要性、常見的數據類型及其轉換方法,以及在…

TDR阻抗會爬坡? 別擔心,不是你的錯,你只是不夠了解TDR!

在背板系統或任何長走線設計里,你大概都碰過這畫面: TDR 曲線一開始乖乖在 92 Ω,但越往末端、阻抗越爬越高,來到最高 97 Ω,心里瞬間涼半截 😒 ,「難不成... 板廠又翻車了嗎?」 然…

在另外一臺可以科學下載的電腦用ollama下載模型后,怎么導入到另外一臺服務器的ollama使用

環境: Win10專業版 Ubuntu20.04 問題描述: 在另外一臺可以科學下載的電腦用ollama下載模型后,怎么導入到另外一臺服務器的ollama使用,原電腦win10上的ollama下載的模型,復制到ubuntu20.04的ollama上推理 解決方案:…

Ethan獨立開發產品日報 | 2025-04-27

1. CreateWise AI 旨在提升你工作效率的AI播客編輯器 人工智能播客編輯器,讓你的播客制作速度提升10倍!它可以自動去除口頭語和沉默,生成節目筆記和精彩片段,還能一鍵制作適合社交媒體分享的短視頻——所有這些功能都只需一次點…

解決 shadui組件庫Popover 點擊后會消失

react用了shadui組件庫 <Popover><PopoverTrigger><div className"text-operation-item" onClick{props.callback}><img src{props.imgSrc} width{20} height{20} /></div></PopoverTrigger><PopoverContent className"…

SVC電氣設備作用

SVC&#xff08;Static Var Compensator&#xff0c;靜止無功補償器&#xff09;是一種基于電力電子技術的動態無功補償裝置&#xff0c;屬于靈活交流輸電系統&#xff08;FACTS&#xff09;的核心設備之一。它通過快速調節電網中的無功功率&#xff0c;改善電能質量、穩定系統…

黑馬點評商戶查詢緩存--緩存更新策略

ShopTypeServiceImpl類 代碼 package com.hmdp.service.impl;import cn.hutool.json.JSONUtil; import com.hmdp.dto.Result; import com.hmdp.entity.ShopType; import com.hmdp.mapper.ShopTypeMapper; import com.hmdp.service.IShopTypeService; import com.baomidou.myba…

C 語言函數指針與指針函數詳解

一、引言 在 C 語言的編程世界中&#xff0c;函數指針和指針函數是兩個既強大又容易混淆的概念。它們為 C 語言帶來了更高的靈活性和可擴展性&#xff0c;廣泛應用于回調函數、動態鏈接庫、狀態機等多種場景。深入理解和掌握函數指針與指針函數&#xff0c;對于提升 C 語言編程…

HTML5 新特性詳解:語義化標簽、表單與音視頻嵌入

前言 HTML5作為當前Web開發的核心技術&#xff0c;為開發者提供了更強大、更語義化的工具集。本文將深入探討HTML5的三大核心特性&#xff1a;語義化標簽、增強的表單功能以及原生的音視頻支持&#xff0c;幫助開發者構建更現代化、更易維護的網頁應用。 一、HTML5語義化標簽…

利用HandlerMethodArgumentResolver和注解解析封裝用戶信息和Http參數

獲取用戶身份信息詳情注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** 獲取用戶身份信息詳情注解*/ Retention(RetentionPolicy.RUNTIME) Tar…

OpenCV 圖形API(52)顏色空間轉換-----將 NV12 格式的圖像數據轉換為 RGB 格式的圖像

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將圖像從 NV12 (YUV420p) 色彩空間轉換為 RGB。該函數將輸入圖像從 NV12 色彩空間轉換到 RGB。Y、U 和 V 通道值的常規范圍是 0 到 255。 輸出圖…

哈工大李治軍《操作系統》進程同步與信號量筆記

1.什么是信號量&#xff1f; 定義&#xff1a;記錄一些信息&#xff08;即量&#xff09;&#xff0c;并根據這個信息決定睡眠還是喚醒&#xff08;即信號&#xff09;。睡眠和喚醒只是一個信號&#xff08;相當于0和1&#xff09;。 2.問題&#xff1a;一種資源的數量是8&am…

MySQL 的索引類型有哪些?

MySQL 中的索引是提高查詢性能的重要工具&#xff0c;它通過構建數據結構來加速數據檢索。MySQL 支持多種索引類型&#xff0c;每種類型適用于不同的場景。以下是 MySQL 中主要的索引類型及其特點&#xff1a; 1. B-Tree 索引&#xff08;默認類型&#xff09; 結構&#xff1…

基于Qt5的藍牙打印開發實戰:從掃描到小票打印的全流程

文章目錄 前言一、應用案例演示二、開發環境搭建2.1 硬件準備2.2 軟件配置 三、藍牙通信原理剖析3.1 實現原理3.2 通信流程3.3 流程詳解3.4 關鍵技術點 四、Qt藍牙核心類深度解析4.1 QBluetoothDeviceDiscoveryAgent4.2 QBluetoothDeviceInfo4.3 QBluetoothSocket 五、功能實現…

高可靠性厚銅板制造的關鍵設備與工藝投入

隨著科技的不斷發展&#xff0c;電子設備越來越普及&#xff0c;對電路板的需求也越來越大。厚銅板電路板作為一種高性能、高可靠性的電路板&#xff0c;受到了廣泛的關注和應用。那么&#xff0c;作為一家厚銅板電路板供應商&#xff0c;如何投入線路板生產呢&#xff1f;本文…

【如何使用solidwork編輯結構導入到simscope】

這里寫自定義目錄標題 嘗試將solidrwork的模型導入到matlab中&#xff0c;以下是官方給出的設計步驟&#xff0c;沖啊 To use Simscape Multibody Link, you must install MATLAB and the CAD applications on the same computer. To ensure the successful installation of Si…

Linux 在個人家目錄下添加環境變量 如FLINK_PROPERTIES=“jobmanager.rpc.address: jobmanager“

問題&#xff1a; Docker Flink Application Mode 命令行形式部署前&#xff0c;需要在Linux執行以下&#xff1a; $ FLINK_PROPERTIES"jobmanager.rpc.address: jobmanager" $ docker network create flink-network 臨時變量只在當前session會話窗口生效&#xf…

spring項目rabbitmq es項目啟動命令

應該很多開發者遇到過需要啟動中間件的情況&#xff0c;什么測試服務器掛了&#xff0c;服務連不上nacos了巴拉巴拉的&#xff0c;雖然是測試環境&#xff0c;但也會手忙腳亂&#xff0c;瘋狂百度。 這里介紹一些實用方法 有各種不同的場景&#xff0c;一是重啟&#xff0c;服…

語音合成之七語音克隆技術突破:從VALL-E到SparkTTS,如何解決音色保真與清晰度的矛盾?

從VALL-E到SparkTTS&#xff0c;如何解決音色保真與清晰度的矛盾&#xff1f; 引言語音克隆技術發展史YourTTS&#xff1a;深入剖析架構與技術VALL-E&#xff1a;揭秘神經編解碼語言模型MaskGCTSparkTTS&#xff1a;利用 LLM 實現高效且可控的語音合成特征解耦生成式模型特征解…