找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5024|回复: 12
打印 上一主题 下一主题
收起左侧

淘晶驰串口屏通过单片机点亮小灯

[复制链接]
跳转到指定楼层
楼主
买了块淘晶驰的串口屏,由单片机向串口屏发送实时的数据可以实现了,但通过串口屏设定参数发送给单片机怎么也实现不了
就像先试试通过串口屏发送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, 下载次数: 67)

按钮弹起发送00

按钮弹起发送00

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

com5发送00

com5发送00

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

com6口接收到00

com6口接收到00
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:699544 发表于 2020-4-25 08:29 | 只看该作者
实物图

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

实物图

实物图
回复

使用道具 举报

板凳
ID:330198 发表于 2020-4-25 13:42 | 只看该作者
这句 led=SBUF;不能直接赋十六进制的值,可以改成P1=SBUF;你这个串口没问题。
回复

使用道具 举报

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

大哥改了之后还是不行
回复

使用道具 举报

5#
ID:634031 发表于 2021-2-4 15:48 | 只看该作者
大佬,怎么实现单片机发送数据给串口屏
回复

使用道具 举报

6#
ID:811405 发表于 2021-2-6 13:30 | 只看该作者
我也想在看看,串口屏一直做不出来,想用串口屏控制单片机
回复

使用道具 举报

7#
ID:688460 发表于 2021-8-9 18:33 | 只看该作者
我也想在看看,串口屏一直做不出来
回复

使用道具 举报

8#
ID:688460 发表于 2022-4-12 11:33 | 只看该作者
先读出SBUF里面的数字代码,然后判断代码是开还是关LED灯
回复

使用道具 举报

9#
ID:47286 发表于 2022-4-12 13:10 | 只看该作者
uchar hmi_data;

hmi_data=SBUF;

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

大概是这意思 这几句分别在中断服务和函数里 不是连续的 只是说明用法而已 希望能帮到你
回复

使用道具 举报

10#
ID:401564 发表于 2022-4-12 16:08 | 只看该作者
yyzf998 发表于 2022-4-12 11:33
先读出SBUF里面的数字代码,然后判断代码是开还是关LED灯

这是两年前的帖子了,还没有搞定串口屏?从我开始打算学串口屏到做出一个DIY小东西,也就七八天时间
陶晶驰的串口屏很好控制的,我用的就是这个屏的,感觉还行
不是读取SBUF的数据,串口屏发送的是一串数据的,串口接收到的数据是存放在一个数组中的,得先找到起始符,之后才是数据
可以用strstr()函数查找
回复

使用道具 举报

11#
ID:450771 发表于 2022-11-22 20:37 | 只看该作者
楼主搞定了吗?同样的问题啊,我折腾了一星期了
回复

使用道具 举报

12#
ID:648281 发表于 2022-11-23 10:02 | 只看该作者
富亚小樊 发表于 2022-11-22 20:37
楼主搞定了吗?同样的问题啊,我折腾了一星期了

具体问题现象是什么
回复

使用道具 举报

13#
ID:450771 发表于 2022-12-12 21:10 | 只看该作者
51hei**1140 发表于 2022-11-23 10:02
具体问题现象是什么

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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