本文详细介绍串口屏原理、设计方法、实现步骤,给出完整代码实例,30分钟即可完成串口屏的设计使用。适合初学者快速上手。
串口屏是一种能够通过串行接口接收指令,并进行显示控制的液晶显示屏。它的主要优点是操作简单,接口统一,用GUI软件进行界面的快速编写与设计。
串口屏的组成部分:
1.显示屏:这是串口屏的核心部分,可以选择液晶显示屏或其他类型的显示屏.
2.微控制器:这是控制显示屏的关键部分。它可以接收和发送数据,控制显示屏的显示内
容。
3.串口通信接口: 这是微控制器和显示屏之间的通信接口。通常使用UART (通用异步收发器) 接口。
4.电源:为显示屏和微控制器提供电源
5.嵌入式GUI软件: 采用高通GT-HMI,可以作为上位机Designer和下位机Engine的开源设计工具,帮助用户设计和实现自己的界面。
在高通GT-HMI官网上获取串口屏原理图,可参考制作自己的串口屏硬件。
以高通GT-HMI显示模块为例,这是一个做好的串口屏板子,包含开源的软硬件。只需几个步骤就可以实现串口屏的控制。您将需要以下准备:(连接步骤部分可以增加简单的示意图,辅助说明):
1. 硬件设备:GT-HMI显示模块、一根USB转UART转接线、一台电脑,笔记本和台式机均可。 首先将USB转UART转接线连接到我们的GT-HMI显示模块上,然后将USB转UART转接线与您的电脑连接。
2. 环境依赖:软件环境:KEIL5, 串口调试助手。硬件环境:USB转UART转接线,GTC-480272TFT43XP.
3. 界面设计:在GT-HMI Designer设计面,可以参考GT-HMI视频教程及文档资料。
4. 编写串口通信代码,示例如下:
1)、串口uart3初始化:
void bsp_uart3_init(void)
{
UART_InitStructure UART_initStruct;
PORT_Init(UART3_RX_PORT, UART3_RX_PIN, UART3_RX_SEL, 1); //GPIOM.0配置为UART0输入引脚
PORT_Init(UART3_TX_PORT, UART3_TX_PIN, UART3_TX_SEL, 0); //GPIOM.1配置为UART0输出引脚
UART_initStruct.Baudrate = UART3_Baudrate; //波特率
UART_initStruct.DataBits = UART_DATA_8BIT; //8位数据位
UART_initStruct.Parity = UART_PARITY_NONE; //无校验位
UART_initStruct.StopBits = UART_STOP_1BIT; //1个停止位
UART_initStruct.RXThreshold = _UART3_RX_BUFFER_SIZE;//设置FIFO个数
UART_initStruct.RXThresholdIEn = 1;//使能接收中断
UART_initStruct.TXThreshold = _UART3_Threshold_Size;//设置FIFO个数
UART_initStruct.TXThresholdIEn = 0; //失能发送中断
UART_initStruct.TimeoutTime = 10; //10个字符时间内未接收到新的数据则触发超时中断
UART_initStruct.TimeoutIEn = 1; //使能超时中断
UART_Init(UART3, &UART_initStruct);
UART3->TOCR &= ~(1 << UART_TOCR_MODE_Pos);
UART_Open(UART3);//开启uart3
}
2):串口数据通过中断接收,接收数据的部分
void UART3_Handler(void)
{
char count = _UART3_Threshold_Size;
char i=0;
uint32_t chr ;
if(UART_INTStat(UART3, UART_IT_RX_THR))//接收中断
{
UART_INTClr(UART3, UART_IT_RX_THR);//清除接收中断标志位
while (count--)//FIFO个数接收数据
{
if(UART_ReadByte(UART3, &chr) == 0)//接收数据
{
if(_uart3_count < _UART3_RX_BUFFER_SIZE)
{
_uart3_rx_buf[_uart3_count] = chr;
//接收到的数据存在这个全局变量数组内
UART_BUF[_uart3_count] = chr;
_uart3_count++;//数组下标自增
}
}
}
}
接收数据并进行相应的数据显示
/***********************
**数据包格式:头(0xAA)+设备启动状态+间隔时间+重复次数+工作温度+等待速度+包长度+校验和
**设备启动状态:0x0、0x1
**间隔时间:1~30
**重复次数:1~10
**工作温度:10~100
**等待速度:0~100
***********************/
void Refresh_New_Page(unsigned char *data)
{
unsigned char verify=0 ,i=0;
for ( i = 0; i < data[6]-1; i++)//计算接收到的数据校验和。
{
verify += data[i];
}
if(data[0] == 0xaa && verify == data[7])//判断帧头(0xAA)和校验和均是和接收数据符合。
{
if(data[1]==1)//设备启动
{
gt_obj_set_state(switch1, 1);
}else if(data[1]==0)
{
gt_obj_set_state(switch1, 0);//设备关闭
}
gt_input_number_set_value(inputNum1, data[2]);//设置间隔时间
gt_input_number_set_value(inputNum2,data[3]);//设置重复次数
gt_input_number_set_value(inputNum3,data[4]);//设置重复次数
gt_slider_set_pos(slider1, data[5]);
gt_disp_load_scr(screen_home);
}
}
3). 下载程序,运行示例。
int main(void)
{
SystemInit();//mcu系统初始化
__enable_irq();//使能中断
bsp_uart0_init();//uart0初始化
bsp_uart3_init();//uart3初始化
bsp_sfc_config(1);//存储芯片读取配置
bsp_lcd_rgb_init();//rgb接口屏显配置
systick_init();//systick时钟配置
TP_Init();//时钟I2C初始化
TIMR_Init(TIMR4, TIMR_MODE_TIMER, CyclesPerUs, 1000, 1);//定时器初始化
TIMR_Start(TIMR4);//启动定时器
GT_Font_Init();//字库初始化
gt_init();
gt_ui_init();
while (1) {
gt_task_handler();//gt-hmi engine 任务调度
swm_delay_ms(1);
// WDT_Feed(WDT);
if(uart_status)//uart3串口数据接收完标记
{
uart_status=0;
Refresh_New_Page(UART_BUF); //处理串口数据将串口数据显示到对应的屏上面。
memset(UART_BUF,0,8);
}
#if _RUNNING_PRINT
if (_cnt >= 1000) {
_cnt = 0;
GT_LOGI(GT_LOG_TAG_TEST, "tick: %d s", gt_tick_get() / 1000)
}
#endif
}
}
串口助手发送如下图命令:
程序下载到高通GTC-480272TFT43XP 显示模块效果:
串口屏初始界面:
发送命令之后显示的界面:
发送的数据为AA 01 02 01 38 37 08 25 (发送数据格式:头(0xAA)+设备启动状态+间隔时间+重复次数+工作温度+等待速度+包长度+校验和)其中第二个数据“01”代表设备启动状态,我们可以考到设备启动开关被打开,第三个数据”02”代表间隔时间,我们可以看到间隔时间被设置成2min, 第四个数据工作温度“38”是16进制的,换算成10进制就是56,我们可以看到工作温度被改成56。
测试命令:AA 01 02 08 46 54 08 57
我们再次发送测试命令,可以看到其中重复次数和工作温度都被改变了。
**备注:本文章使用的GT-HMI Designer 上位机示例,使用该示例可生成下位机UI部分的参考代码和文字素材的资源包。
本文章使用的串口示例,使用该串口示例可以直接下载到GTGTC-480272TFT43XP开发板的MCU中,另外将GT-HMI Designer 示例的资源包下载到GTXX开发板的存储芯片当中,实现上述功能。**https://pan.baidu.com/s/1T9Uhu1RQJKiznsw9mTX0eg 提取码:pfur
您可以尝试自己制作串口屏硬件,或者使用GT-HMI开发板/显示模块。我们提供了相应的软硬件资料供您参考。您需要注意的是,制作硬件需要一定的电子技术知识。
如果您是初学者,我们建议您先从使用我们的开发板开始。利用高通GT-HMI开发框架,您也可以快速实现串口屏的显示控制。欢迎分享您的创作经验!
原网址: 访问
创建于: 2023-12-13 17:34:12
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论