本帖最后由 z01228 于 2021-2-10 02:04 编辑
试验平台:mcu: arduino uno 串口屏:淘晶驰 TJC4024K032_011X
****这个内容不是什么高大上的,不喜勿喷*****
背 景:最近做一个项目需要做一个复杂的菜单,但是oled12864 屏幕太小并且纯使用uno进行编程的话控制逻辑比较复杂,并且有各种参数+交互设备。所以想到了触摸串口屏幕(也是刚刚开始学习这个)来降低编程的难度。
试验目的:串口屏作为上位机发送字符串命令给单片机,单片机对命令进行解析并且分发给各个变量、再依据这些执行相关命令函数(目前没有添加这块)目前用9600波特率进行试验 mcu分析命令数据基本稳定,但是屏幕点击比较快的话 mcu分析的数据 还是有可能出错 有实际应用的朋友可以自己添加验证程序。
程序部分:
/*串口屏发送命令数据
* 命令示例:pA-220B-111D
mcu串口分析结果
串口屏开始符 p = p , 指令标1 zrf1 = A , 指令参数1 data1 = -220 , 指令参数2 zrf2 = B , 指令参数2 data2 = -111 , 停止符3 tzf3= D
总命令 zmr =p+ A-220B-111D
*/
串口屏相关程序:
*字库需要自己添加
1初始化设置:
1
- vis t1,0 //不显示t1控件
- vis t0,0 //不显示t0控件
- bauds=9600
复制代码- //以下代码只在上电时运行一次,一般用于全局变量定义和上电初始化数据
- int sys0=-1,sys1=0,sys2=0 //全局变量定义目前仅支持4字节有符号整形(int),不支持其他类型的全局变量声明,如需使用字符串类型可以在页面中使用变量控件来实现
- page 0 //上电刷新第0页
复制代码 按键控件1:
2
- vis t1,0 //不显示t1控件
- vis t0,0 //不显示t0控件
- covx sys1,t0.txt,0,0 //把sys1的值赋予t0 (数字转字符串)
- covx sys0,t1.txt,0,0 //把sys0的值赋予t1 (数字转字符串)
- t2.txt="A"+t0.txt+"B"+t1.txt+"D"//拼接命令
- sys0=sys0-10
- sys1=sys1-20
- get t2.txt //发送命令
复制代码 按键控件2:
3
- vis t1,0 //不显示t1控件
- vis t0,0 //不显示t0控件
- covx sys1,t0.txt,0,0 //把sys1的值赋予t0 (数字转字符串)
- covx sys0,t1.txt,0,0 //把sys0的值赋予t1 (数字转字符串)
- t2.txt="A"+t0.txt+"B"+t1.txt+"D"//拼接命令
- sys0=sys0+10
- sys1=sys1+20
- get t2.txt
复制代码
mcu部分:
下面图片是分析结果和部分程序:有了这几个命令符 和相关参数就可以组织判断程序 执行相关函数了。
4
- /*串口屏幕文本命令数据分析
- * 命令示例:pA-220B-111D
- 发送按键程序:
- *串口屏初始化一定要添加 bauds=9600 来固定波特率
-
- vis t1,0 //不显示t1控件
- vis t0,0 //不显示t0控件
- covx sys1,t0.txt,0,0 //把sys1的值赋予t0 (数字转字符串)
- covx sys0,t1.txt,0,0 //把sys0的值赋予t1 (数字转字符串)
- t2.txt="A"+t0.txt+"B"+t1.txt+"D"//拼接命令 D是停止符
- sys0=sys0-10
- sys1=sys1-20
- get t2.txt //发送命令
- 串口分析结果
-
- 串口屏开始符 p = p , 指令标1 zrf1 = A , 指令参数1 data1 = -220 , 指令参数2 zrf2 = B , 指令参数2 data2 = -111 , 停止符2 tzf2= D
- 总命令 zmr =p+ A-220B-111D
-
-
- */
- char ksf1; //指令开始符1
- char zrf1; //指令标示符2
- long data1; //指令参数1(可以是正常正负)
- char zrf2; //指令标示符3
- long data2; //指令参数2
- char tzf3; //指令标示符3
- String zmr= "";//总命令
- void setup() {
- Serial.begin(9600);
- }
- void loop() {
- if (Serial.available()>0) { // 检查串口缓存是否有数据等待传输
- delay(10);
- if (Serial.available()>0) {
复制代码
屏幕的程序附件有3m就不上传了 ,有需要的朋友可以按照自己的屏幕型号结合上面复制一下。
|