标题: 单片机+蓝牙串口字符串不连续的问题 [打印本页]

作者: XYMSSS    时间: 2020-4-16 14:28
标题: 单片机+蓝牙串口字符串不连续的问题
我弄的单片机检测粉尘,蓝牙数据发过来字符串第一个字符贼容易出问题,第一个字符和后面的字符直接分开了,大概的程序在下面



unsigned char dis[4]="000";
void sendChar(uchar a)                                 //单片机发送一个字节
{        
        SBUF = a;
                 //小延时
        for(i=0;i<5;i++);

}

void sendString(uchar *s)                        //发送一个字符串        
{         
             ES=0;
    while(*s!='\0')        
        {
           sendChar(*s);
           s++;
                 while(TI==0);        
           TI=0; //软件置零  
        }  
         ES=1;     
}
void Timer0Init()               
{
    TMOD|= 0x20;
    SCON|= 0x50;
    TH1 = 0xfd;
    TL1 = 0xfd;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}
然后在主程序调用 sendString(dis);

蓝牙设置了9600的波特率和手机也连的上

有大佬栞栞问题嘛



51hei图片20200416142340.jpg (52.73 KB, 下载次数: 52)

51hei图片20200416142340.jpg

作者: XYMSSS    时间: 2020-4-16 14:29
自己给自己顶一哈
作者: fang0682052    时间: 2020-4-16 15:05
hao dong xi a
作者: xxpp2011    时间: 2020-4-16 15:35
unsigned char dis[3]="000";

作者: XYMSSS    时间: 2020-4-16 16:38
xxpp2011 发表于 2020-4-16 15:35
unsigned char dis[3]="000";

不是要留个位置给\0嘛,这个我改过了没得用
作者: XYMSSS    时间: 2020-4-16 17:08
和晶振电容有关嘛,我用的30pf的没找到22pf
作者: 猪猪也想赢    时间: 2020-4-23 10:39
请问蓝牙传输在程序中体现在哪一部分呢?
作者: hotpet    时间: 2020-4-24 03:57
发送第一个字符前加延时。
作者: 51hei**1140    时间: 2020-4-24 08:56
你好!把发送字节里面的延时去掉
作者: Gugicn    时间: 2020-4-24 10:07
感谢分享
作者: Jaky    时间: 2020-4-24 10:22
你好,这个我做过,如果你处理的蓝牙发送的数据是8bit的,意味着不能发送字符串,如果你有字符串数据,你可以选择把数据处理成一个数据发过去,再进行解析,也可以对你蓝牙发送函数进行一个处理,多个发送,,
作者: 3211235    时间: 2020-4-24 10:41
有没有丢包的可能?
作者: daocheng    时间: 2020-4-26 00:31
XYMSSS 发表于 2020-4-16 17:08
和晶振电容有关嘛,我用的30pf的没找到22pf

这没什么关系吧。

作者: daocheng    时间: 2020-4-26 00:32
蓝牙的协议延时可以吗?




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