本项目基于单片机和RA8889/RA6809图形处理芯片的TFT触摸屏滑动条控件。该控件支持水平和垂直滑动条,可自定义外观和行为,并支持回调函数进行值变化通知。
滑动条控件_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 // 延时函数头文件
└── 其他项目文件...
复制必要文件到您的项目中:
widget
文件夹(包含slider.c
和slider.h
)复制到您的项目中RA8889_01_Kernel
文件夹硬件接口配置:
RA8889_MCU_IF.c
和RA8889_MCU_IF.h
中的MCU和RA8889/RA6809的通信接口定义GT911.c
和GT911.h
中的接口配置更新头文件包含路径:
初始化配置:
main.c
中的示例,初始化RA8889/RA6809图形处理芯片首先需要初始化滑动条控件系统:
Slider_Init(); // 初始化滑动条控件
使用Slider_Add
函数创建一个新的滑动条控件:
unsigned char slider_id = Slider_Add(
x, // 滑动条x坐标
y, // 滑动条y坐标
width, // 滑动条宽度
height, // 滑动条高度
forecolor, // 前景色(已填充部分)
backcolor, // 背景色(轨道颜色)
thumbcolor, // 滑块颜色
orientation // 方向:HORIZONTAL_SLIDER或VERTICAL_SLIDER
);
设置滑动条的值范围和步进值:
Slider_Configure(
slider_id, // 滑动条ID
initial_value, // 初始值
min_value, // 最小值
max_value, // 最大值
step_value // 步进值
);
为滑动条添加标签文本:
Slider_SetLabel(
slider_id, // 滑动条ID
"Brightness", // 标签文本
label_x, // 标签相对于滑动条的x偏移
label_y, // 标签相对于滑动条的y偏移
label_color // 标签颜色
);
Slider_Enable(slider_id, TRUE); // 启用滑动条
Slider_Visible(slider_id, TRUE); // 设置滑动条可见
Slider_Draw(slider_id); // 绘制滑动条
设置值变化时的回调函数:
void ValueChanged_Callback(void* slider, unsigned short value)
{
// 处理值变化
// slider指向SliderTypeDef结构体
// value是当前值
}
// 设置回调
Slider_SetCallback(slider_id, ValueChanged_Callback);
在触摸中断中获取触摸点并处理滑动条:
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]);
}
}
}
内存使用:
MAX_SLIDERS
定义,默认为5个,可根据需要修改显示层配置:
字体设置:
slider.c
中的字体设置触摸事件:
GT911_Scan()
来扫描触摸点回调函数:
颜色定义:
slider.h
中定义,可根据需要修改以适应您的界面风格硬件依赖:
参考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液晶控制芯片-触摸滑动条控件