单片机图像处理芯片与TFT彩屏复选框控件的综合应用解析
复选框控件使用说明
一、控件概述
本复选框控件是一个适用于单片机图形界面的UI组件,基于单片机 + RA8889/RA6809 + TFT显示屏 + GT911触摸屏开发。控件提供了丰富的功能和自定义选项,使用简单方便,易于移植。
主要特点:
硬件平台:
二、移植指南
1. 文件结构
滑动条控件/
├── main.c // 主程序示例文件
├── widget/ // 控件相关文件
│ ├── checkbox.c // 控件头文件,包含接口声明和配置定义
│ └── checkbox.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 // 延时函数头文件
└── 其他项目文件...
2. 依赖项
本控件依赖于以下组件:
3. 移植步骤
- 将
checkbox.c
和checkbox.h
文件添加到您的项目中 - 在需要使用控件的文件中包含头文件:
#include "checkbox.h"
- 确保您的项目中已经包含了必要的依赖项
- 根据您的硬件配置,可能需要修改以下定义(在
checkbox.h
中): - 颜色定义:
CHECKBOX_BG_COLOR
、CHECKBOX_BORDER_NORMAL
等 - 对勾线条粗细:
TICK_LINE_THICKNESS
- 间距设置:
PADDING
- 最大控件数量:
MAX_CHECKBOX
- 标签文本长度:
MAX_CHECKBOX_LABEL_LENGTH
- 字体宽高:
CHECKBOX_FONT_WIDTH
、CHECKBOX_FONT_HEIGHT
三、API说明
初始化函数
void Checkbox_Init(void)
添加复选框
unsigned char Checkbox_Add(unsigned short x, unsigned short y,
unsigned short width, unsigned short height,
unsigned char changed_status,
unsigned long checkbox_color_selected,
unsigned long display_color)
x
:复选框X坐标y
:复选框Y坐标width
:复选框宽度height
:复选框高度changed_status
:初始状态,0为未选中,1为选中checkbox_color_selected
:选中状态的填充颜色display_color
:禁用状态的颜色设置标签
void Checkbox_SetLabel(unsigned char id, const char* label, unsigned long label_color)
id
:复选框IDlabel
:标签文本label_color
:标签文本颜色启用/禁用控制
void Checkbox_Enable(unsigned char id, unsigned char enable)
id
:复选框IDenable
:是否启用,0为禁用,1为启用显示/隐藏控制
void Checkbox_Visible(unsigned char id, unsigned char visible)
id
:复选框IDvisible
:是否可见,0为隐藏,1为显示绘制复选框
void Checkbox_Draw(unsigned char id)
id
:复选框IDvoid Checkbox_DrawAll()
触摸处理
void Checkbox_Process(unsigned char id)
id
:复选框IDunsigned char Checkbox_HandleTouch(unsigned int touch_x, unsigned int touch_y)
touch_x
:触摸X坐标touch_y
:触摸Y坐标回调函数设置
void Checkbox_SetCallback(unsigned char id, CHECKBOX_CALLBACK onChange)
id
:复选框IDonChange
:回调函数指针,原型为void (*CHECKBOX_CALLBACK)(void* checkbox, unsigned char status)
四、使用示例
以下是一个简单的使用示例:
#include "checkbox.h"
// 定义复选框ID
unsigned char checkbox_id1;
// 回调函数
void Checkbox_Changed(void* checkbox, unsigned char status)
{
CheckboxTypeDef* pCheckbox = (CheckboxTypeDef*)checkbox;
// 执行状态变化后的操作
if(status == 1) {
// 选中状态的处理
} else {
// 未选中状态的处理
}
}
void main()
{
// 其他初始化代码...
// 初始化复选框控件
Checkbox_Init();
// 添加一个复选框
checkbox_id1 = Checkbox_Add(300, 200, 28, 28, FALSE, 0x0000FF, 0x808080);
// 设置标签
Checkbox_SetLabel(checkbox_id1, "启用功能", 0x000000);
// 启用复选框
Checkbox_Enable(checkbox_id1, TRUE);
// 显示复选框
Checkbox_Visible(checkbox_id1, TRUE);
// 设置回调函数
Checkbox_SetCallback(checkbox_id1, Checkbox_Changed);
// 绘制所有复选框
Checkbox_DrawAll();
// 主循环中的触摸处理
while(1) {
// 获取触摸坐标...
// 检查是否触发了复选框
unsigned char triggered = Checkbox_HandleTouch(touch_x, touch_y);
// 如果触发了复选框
if(triggered > 0) {
// 处理复选框状态变化
Checkbox_Process(triggered);
}
}
}
五、注意事项
- 最多支持创建
MAX_CHECKBOX
个复选框(默认为10个,根据需求进行修改) - 标签文本长度不应超过
MAX_CHECKBOX_LABEL_LENGTH
(默认为50个英文字符) - 使用回调函数时需要注意函数原型匹配:
void (*CHECKBOX_CALLBACK)(void* checkbox, unsigned char changed_status)
- 在禁用状态下,复选框仍然可以显示,但不会响应触摸事件
六、源码下载
请看到视频最后面
七、视频介绍说明
单片机-RAIO液晶控制芯片-复选框控件
作者:BW.SU