标题: 淘晶驰串口屏通过单片机点亮小灯 [打印本页]

作者: ssofu    时间: 2020-4-24 22:59
标题: 淘晶驰串口屏通过单片机点亮小灯
买了块淘晶驰的串口屏,由单片机向串口屏发送实时的数据可以实现了,但通过串口屏设定参数发送给单片机怎么也实现不了
就像先试试通过串口屏发送00给单片机点亮小灯,但始终无法点亮
一开始想通过VSPD添加了com5和com6两个虚拟串口然后用sscom监视com6口有没有收到数据事实上确实受到了00
求大佬指点为什么受到了00却不能点亮小灯
(RX和TX接对的)
  1. #include <REG51.H>         
  2. #include <intrins.h>
  3. #include <absacc.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6. #include <string.h>
  7. #include "uart.h"
  8. sfr P3M0 =0xb1;
  9. sfr P3M1 =0xb2;

  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. sbit led=P1^4;


  13. void UART_Send_Byte(unsigned char mydata)        // 发送一个字节
  14. {
  15. ES=0;
  16. TI=0;
  17. SBUF=mydata;
  18. while(!TI);
  19. TI=0;
  20. ES=1;
  21. }

  22. void UART_Send_Str(char *s)          //发送文本串
  23. {
  24. int i=0;
  25. while(s[i]!=0)
  26. {
  27.          UART_Send_Byte(s[i]);
  28.          i++;
  29. }
  30. }

  31. void UART_Send_END(void)   //发送结束符
  32. {
  33.          UART_Send_Byte(0xFF);
  34.          UART_Send_Byte(0xFF);
  35.          UART_Send_Byte(0xFF);
  36. }

  37. void delay(uint z)                  //延时
  38. {
  39.         uint t1,y;
  40.         for(t1=z;t1>0;t1--)
  41.                 for(y=110;y>0;y--);
  42. }

  43. void USART_init()
  44. {
  45.         PCON &= 0x7F;                //波特率不倍速
  46.         SCON = 0x50;                //8位数据,可变波特率
  47.         TMOD &= 0x0F;                //清除定时器1模式位
  48.         TMOD |= 0x20;                //设定定时器1为8位自动重装方式
  49.         TL1 = 0xFD;                //设定定时初值
  50.         TH1 = 0xFD;                //设定定时器重装值
  51.         ET1 = 0;                //禁止定时器1中断
  52.         TR1 = 1;                //启动定时器1
  53. ES=1;
  54. EA=1;
  55. }

  56. void UARTInterrupt(void) interrupt 4
  57. {
  58.     if(RI)
  59.     {
  60.         RI = 0;
  61.           led=SBUF;
  62.     }

  63. }

  64. void main (void)
  65. {

  66.                 //单片机为  STC89C52
  67.                 //晶振 11.0592
  68.                

  69.                  USART_init();

  70.    

  71.          }
复制代码



)F1%EV)F%)@BCWA_]8]62.png (20.5 KB, 下载次数: 82)

按钮弹起发送00

按钮弹起发送00

7~3R)I5LZ$L1OE3[`[)U@7Q.png (20.13 KB, 下载次数: 79)

com5发送00

com5发送00

4}XK77I$)Q{B@`KTB@MA@7K.png (40.87 KB, 下载次数: 74)

com6口接收到00

com6口接收到00

作者: ssofu    时间: 2020-4-25 08:29
实物图

E7A3E59F9D8F250D0861223BCAE39102.jpg (323.62 KB, 下载次数: 106)

实物图

实物图

作者: zhanghyg    时间: 2020-4-25 13:42
这句 led=SBUF;不能直接赋十六进制的值,可以改成P1=SBUF;你这个串口没问题。
作者: ssofu    时间: 2020-4-26 08:40
zhanghyg 发表于 2020-4-25 13:42
这句 led=SBUF;不能直接赋十六进制的值,可以改成P1=SBUF;你这个串口没问题。

大哥改了之后还是不行
作者: luozhimin    时间: 2021-2-4 15:48
大佬,怎么实现单片机发送数据给串口屏

作者: 学生1    时间: 2021-2-6 13:30
我也想在看看,串口屏一直做不出来,想用串口屏控制单片机
作者: yyzf998    时间: 2021-8-9 18:33
我也想在看看,串口屏一直做不出来
作者: yyzf998    时间: 2022-4-12 11:33
先读出SBUF里面的数字代码,然后判断代码是开还是关LED灯
作者: dzbj    时间: 2022-4-12 13:10
uchar hmi_data;

hmi_data=SBUF;

if(hmi_data==0x00)
{
led=亮
}

大概是这意思 这几句分别在中断服务和函数里 不是连续的 只是说明用法而已 希望能帮到你
作者: Y_G_G    时间: 2022-4-12 16:08
yyzf998 发表于 2022-4-12 11:33
先读出SBUF里面的数字代码,然后判断代码是开还是关LED灯

这是两年前的帖子了,还没有搞定串口屏?从我开始打算学串口屏到做出一个DIY小东西,也就七八天时间
陶晶驰的串口屏很好控制的,我用的就是这个屏的,感觉还行
不是读取SBUF的数据,串口屏发送的是一串数据的,串口接收到的数据是存放在一个数组中的,得先找到起始符,之后才是数据
可以用strstr()函数查找
作者: 富亚小樊    时间: 2022-11-22 20:37
楼主搞定了吗?同样的问题啊,我折腾了一星期了
作者: 51hei**1140    时间: 2022-11-23 10:02
富亚小樊 发表于 2022-11-22 20:37
楼主搞定了吗?同样的问题啊,我折腾了一星期了

具体问题现象是什么
作者: 富亚小樊    时间: 2022-12-12 21:10
51hei**1140 发表于 2022-11-23 10:02
具体问题现象是什么

我用屏的按钮发送01给单片机,让单片机返回文本给屏,但是会随机出现多余的数据,导致文本显示不出来




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1