找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8177|回复: 8
收起左侧

stm32如何发送数据到串口屏

[复制链接]
ID:478875 发表于 2019-3-4 20:40 | 显示全部楼层 |阅读模式
现在有TJC4024T032_011串口屏一个,现在想通过STM32发送一个检测到的一个数据到该串口屏,请问该如何实现。

回复

使用道具 举报

ID:158375 发表于 2019-3-5 09:45 | 显示全部楼层
STM32串口与串口屏通过串口连接。
根据通讯协议,STM32串口直接发送数据就可以了。
注意:通讯协议
回复

使用道具 举报

ID:478875 发表于 2019-3-5 10:40 | 显示全部楼层
笨笨兔 发表于 2019-3-5 09:45
STM32串口与串口屏通过串口连接。
根据通讯协议,STM32串口直接发送数据就可以了。
注意:通讯协议

协议就是stm32发送FF FF FF结尾的数据表示发送结束。现在有两个问题,就是发送格式是t0.txt="显示的内容",然后printf里面也要用到“”“,我用的转义符号,不知道行不行,然后就是FF FF FF 第一次发送的是字符串,是这样的printf("0xff"),第二次是发送的printf("%d",0xff),都没接收到信息
回复

使用道具 举报

ID:158375 发表于 2019-3-5 12:47 | 显示全部楼层
大概看了下TJC4024T032_011串口屏介绍,我觉得你应该仔细研究通讯协议。
回复

使用道具 举报

ID:478875 发表于 2019-3-5 13:11 | 显示全部楼层
笨笨兔 发表于 2019-3-5 09:45
STM32串口与串口屏通过串口连接。
根据通讯协议,STM32串口直接发送数据就可以了。
注意:通讯协议

%d和%x都试过了
回复

使用道具 举报

ID:478875 发表于 2019-3-5 19:00 | 显示全部楼层
还不能发送变量,只能发送已经决定好的文字或者数字以及系统变量
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"

  6. u8 idfind(u8 *buf,u8 *val,u8 len);
  7. void HMISends(char *buf1);
  8. void HMISendb(u8 buf);


  9. void HMISendstart(void)
  10. {
  11.         delay_ms(200);
  12.         HMISendb(0xff);
  13.         delay_ms(200);
  14. }

  15. int main(void)
  16. {               
  17.          short tempeature;
  18. //          u8 t;
  19. //         u8 len;
  20. //         extern u8 Res;
  21. //         u16 times=0;

  22.         u8 t;
  23.         delay_init();                     //延时函数初始化         
  24.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  25.         uart_init(9600);         //串口初始化为9600
  26.          LED_Init();                             //LED端口初始化
  27.         KEY_Init();          //初始化与按键连接的硬件接口
  28.         HMISendstart();
  29.         tempeature=115;
  30.          while(1)
  31.         {
  32.                 t=KEY_Scan(0);                //得到键值
  33.                    if(t)
  34.                 {                                                   
  35.                         switch(t)
  36.                         {                                 
  37.                                 case KEY_UP:        //控制蜂鸣器
  38.                                 HMISends("n0.val=baud");
  39.         HMISendb(0xff);                                
  40. //                                         printf("t0.txt=\"sdfsdf\"");
  41. //           USART_SendData(USART1,0xff);
  42. //                                   USART_SendData(USART1,0xff);
  43. //                                   USART_SendData(USART1,0xff);
  44.                                         break;
  45. //                                 case KEY_LEFT:        //控制LED0翻转
  46. //                                         printf("t0.txt=\"sdfsdf\"");
  47. //           printf("%d",0xff);
  48. //                                   printf("%d",0xff);
  49. //                                   printf("%d",0xff);
  50. //                                         break;
  51.                                 case KEY_DOWN:        //控制LED1翻转        
  52.                                 HMISends("n0.val=123");
  53.         HMISendb(0xff);        
  54. //                                         printf("t0.txt=\"sdfs46s54df65\"");
  55. //           printf("%d",0xff);
  56. //                                   printf("%d",0xff);
  57. //                                   printf("%d",0xff);
  58.                                         break;
  59. //                                 case KEY_RIGHT:        //同时控制LED0,LED1翻转
  60. //                                         printf("t0.txt=\"a5sd4fa35sd4f\"");
  61. //           printf("%d",0xff);
  62. //                                   printf("%d",0xff);
  63. //                                   printf("%d",0xff);
  64. //                                         break;
  65.                         }
  66.                 }else delay_ms(10);
  67.                
  68.                
  69. //{}内的switch语句的主题,内含多个case分支,判断值必须是一常亮(代表一具体整数)        case分支根据判断值标识条件选择入口
  70. //0x0d是回车符的ASC||码
  71. //0x0a是换行结束符的ASC||码
  72. }
  73. }

  74. void HMISends(char *buf1)
  75. {
  76.         u8 a=0;
  77.         while(1)
  78.         {
  79.                 if(buf1[a]!=0)
  80.                 {
  81.                         USART_SendData(USART1,buf1[a]);
  82.                         while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){};
  83.                         a++;        
  84.                 }
  85.                 else
  86.                 return ;
  87.         }
  88. }

  89. void HMISendb(u8 k)
  90. {
  91.         u8 a;
  92.         for(a=0;a<3;a++)
  93.         {
  94.                 if(k!=0)
  95.                  {
  96.                         USART_SendData(USART1,k);  //发送一个字节
  97.                         while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){};//等待发送结束
  98.                 }
  99.          else
  100.          return ;
  101.         }
  102. }
复制代码


能发送数字及波特率.7z

180.77 KB, 下载次数: 94

回复

使用道具 举报

ID:478875 发表于 2019-3-5 19:22 | 显示全部楼层
笨笨兔 发表于 2019-3-5 12:47
大概看了下TJC4024T032_011串口屏介绍,我觉得你应该仔细研究通讯协议。

请问怎么发送变量呢?
回复

使用道具 举报

ID:142559 发表于 2023-2-8 09:32 | 显示全部楼层
先用串口助手调试,这一步主要把串口屏的通信协议搞清楚(起始、控件标号、操作指令、结束等组成的指令);
回复

使用道具 举报

ID:142559 发表于 2023-2-8 09:34 | 显示全部楼层
先直接用串口助手调试串口屏,这一步是搞清楚协议内容(起始、控件、操作、结束等组成的一个指令)。能操作的话就直接用32单片机串口发送控制数据就OK了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表