单片机 + 图像处理芯片 + 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.mzph.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 实现高效且可控的语音合成特征解耦生成式模型特征解…