陶晶驰串口屏(也称为USART HMI,即Human Machine Interface的缩写,意为“人机接口”或“人机界面”)是深圳市淘晶驰电子有限公司生产的一种智能串口显示屏。以下是关于陶晶驰串口屏的详细介绍:
- 丰富的接口与功能:
- 支持TTL/232接口,方便与各种MCU(微控制器单元)进行交互。
- 具备音视频动画播放功能,以及丰富的动态特效。
- 支持实时时钟等外设,满足多种应用场景的需求。
- 优异的显示效果:
- 采用TFT-LCD屏幕,具有高分辨率和高亮度,显示颜色丰富。
- 支持触控操作,提升用户体验。
- 强大的编程能力:
- 陶晶驰的USART HMI软件支持类似C语言的编程语言,具有清晰的层次和强大的处理能力。
- 提供丰富的运算符和数据类型,便于构建各种数据结构。
- 便捷的开发体验:
- 提供1:1模拟全系列串口屏的功能,方便开发者进行调试。
- 产品固件自动升级,确保设备始终保持最新状态。
- 丰富的学习资料:
- 淘晶驰在官网、资料中心、公众号等多个渠道提供丰富的上位机学习资料。
- 提供各个行业的应用UI供开发者参考和使用。
淘晶驰资料中心 — 淘晶驰资料中心 1.1.0-2024-07-02 15:42:02 文档 (tjc1688.com)
- 通讯协议
(一)触摸屏发送数据
1.格式:帧头 功能码 启动/停止命令 输出电压幅值 输出频率低字节 输出频率高字节 输出占空比低字节 输出占空高低字节 校验码 帧尾
2.详细说明如下:每部分都是由一字节组成,一帧数据共10字节。
①帧头: 55H
②功能码:33H
③启动/停止命令:运行0x09,停止 0x06
④输出电压幅值: 电压幅值设定值乘以10
⑤输出频率值:频率设定值乘以10,转换为二进制数后,分两字节发送
⑥输出占空比:占空比设定值乘以10,转换为二进制数后,分两字节发送
⑦校验码:就是由 帧头 功能码 启动/停止命令 输出电压幅值 输出频率低字节 输出频率高字节 输出占空比低字节 输出占空高低字节 这八个字节的数求和,取反,保留低8位就是校验码
⑧帧尾: AAH
n3.val=n0.val*10
n4.val=n1.val*10
n5.val=n2.val*10
if(bt0.val==1)
{
if(tm2.en!=1)
{
tm2.en=1
}
bt0.txt="停止"
n8.val=n5.val&0xff00>>8
n9.val=n4.val&0x00ff>>8
n10.val=0x55+0x33+0x09+n3.val+n4.val+n8.val+n5.val+n9.val
n7.val=n10.val^0xff
printh 55 33 09
prints n3.val,1
prints n4.val,2
prints n5.val,2
prints n7.val,1
printh AA //发送帧尾
//实际写入40-43,共4字节的掉电存储空间空间
wepo n0.val,40
//实际写入44-47,共4字节的掉电存储空间空间
wepo n1.val,44
//实际写入48-51,共4字节的掉电存储空间空间
wepo n2.val,48
//实际写入52-55,共4字节的掉电存储空间空间
wepo n13.val,52
}else
{
tm2.en=0
bt0.txt="启动"
n6.val=0x55+0x33+0x06+n3.val+n4.val+n5.val
n7.val=n6.val^0xff
printh 55 33 06
prints n3.val,1
prints n4.val,2
prints n5.val,2
prints n7.val,1
printh AA //发送帧尾
}
(二)触摸屏接收数据
1.格式:帧头 功能码 运行状态 输出电压幅值 输出频率低字节 输出频率高字节 输出占空比低字节 输出占空高低字节 输入电压幅值 校验码 帧尾
2.详细说明如下:每部分都是由一字节组成,一帧数据共11字节。
①帧头: 55H
②功能码:CCH
③运行状态:运行0x09,停止 0x06
④输出电压幅值: 1字节数,除以10就是实际值,小数点后保留1位
⑤输出频率值:频率值由16位两字节组成,把这个16位数转换为十进制,除以10就是实际频率,小数点后保留1位
⑥输出占空比:占空比由16位两字节组成,把这个16位数转换为十进制,除以10就是实际占空比,小数点后保留1位
⑦输入电压:1字节数,除以10就是实际值,小数点后保留1位
⑧校验码:就是由 帧头 功能码 运行状态 输出电压幅值 输出频率低字节 输出频率高字节 输出占空比低字节 输出占空高低字节 输入电压幅值 这九个字节的数求和,取反,保留低8位就是校验码
⑩帧尾: AAH
if(n13.val==0)
{
bt0.val=0
}
while(usize>=frameLength&&getFrameFlag==0)
{
if(u[0]==0x55&&u[10]==0xAA)
{
//找到帧头,退出循环
getFrameFlag=1
}else
{
//如果帧头不对,就一直删除1个字节,直到不满足条件退出循环
udelete 1
}
}
if(getFrameFlag==1)
{
x1.val=u[3]
n11.val=u[5]*256+u[4]
x2.val=n11.val
n12.val=u[7]*256+u[6]
x3.val=n12.val
x0.val=u[8]
udelete frameLength //删除已经解析过的数据
getFrameFlag=0 //清空标记变量
}