蓝牙通信问题

2019-07-15 16:29发布

我想两块单片机之间蓝牙通信。单片机用的c52,蓝牙用的hc05和06.把程序分别下载进去之后,将两块单片机的rxd和txd直接用线反接可以达到效果。但是换成蓝牙之后就不行了,蓝牙配对正常。我不知道蓝牙的波特率是多少,两块单片机的串口波特率一致。

发送数据的单片机

#include <reg51.h>
#include <dulianjian_diceng.H>


void InitUART()
{
   SCON = 0x50;                                //串口工作方式1
   TMOD = 0x20;                                //定时器工作方式2
   PCON = 0x80;                                //波特率加倍
   TH1 = 0xF3;                                //波特率4800
   TL1 = 0xF3;                                //波特率4800
   ES=1;                                        //打开接收中断
   EA=1;                                        //打开总中断
   TR1=1;                                        //打开计数器
}       

void main ()
{
  InitUART();
  while(1)
  {
  }
}



void UARtinterrupt() interrupt 4
{
   unsigned char receivedata;

   unsigned int a;
   a=dulianjian();
   if(a==2)
   receivedata = 'b';
   if(a==3)
   receivedata = 'c';
   if(a==4)
   receivedata = 'd';

//   receivedata = SBUF;        //SBUF作为接收缓冲器
//   RI = 0;                                //接收中断标志位复位
   SBUF = receivedata;        //SBUF作为发送缓冲器

   while(!TI);                        //等待数据发送完成
   TI = 0;                                //发送中断标志位复位
}



接收数据的单片机

#include <reg51.h>
#include <7wsmg_diceng.H>

void InitUART()
{
   SCON = 0x50;                                //串口工作方式1
   TMOD = 0x20;                                //定时器工作方式2
   PCON = 0x80;                                //波特率加倍
   TH1 = 0xF3;                                //波特率4800
   TL1 = 0xF3;                                //波特率4800
   ES=1;                                        //打开接收中断
   EA=1;                                        //打开总中断
   TR1=1;                                        //打开计数器
}       

void main ()
{
  InitUART();
  while(1)
  {
  }
}

void UARTInterrupt() interrupt 4
{
   unsigned char receivedata;


   receivedata = SBUF;        //SBUF作为接收缓冲器
   while(!RI);                        //等待数据接收完成
   RI = 0;                                //接收中断标志位复位


   if(receivedata=='b')
   {
      xianshishuzi(10);          //消隐
          shuziweishu(8);          //第几位显示
      xianshishuzi(1);    //显示什么数字
      delay(50);                  //延时
   }

   if(receivedata=='c')
   {
      xianshishuzi(10);          //消隐
          shuziweishu(8);          //第几位显示
      xianshishuzi(2);    //显示什么数字
      delay(50);                  //延时
   }

   if(receivedata=='d')
   {
      xianshishuzi(10);          //消隐
          shuziweishu(8);          //第几位显示
      xianshishuzi(3);    //显示什么数字
      delay(50);                  //延时
   }

//   SBUF = receivedata;        //SBUF作为发送缓冲器

//   while(!TI);                        //等待数据发送完成
//   TI = 0;                                //发送中断标志位复位
}       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
望着你发槑
1楼-- · 2019-07-16 08:09
 精彩回答 2  元偷偷看……
su****dt
2楼-- · 2019-07-16 12:21
楼主如果你能看见我的回复,麻烦你帮个忙。我现在用的是zs-040蓝牙模块,只是没有at指令集,希望你能发给我一份。若有教程就更好了。先谢了!
望着你发槑
3楼-- · 2019-07-16 16:26
su****dt 发表于 2016-5-18 12:30
楼主如果你能看见我的回复,麻烦你帮个忙。我现在用的是zs-040蓝牙模块,只是没有at指令集,希望你能发给我一份。若有教程就更好了。先谢了!

一年之前的了,我都忘了。。。。。。
eyesee
4楼-- · 2019-07-16 17:33
先可以调试下硬件链路,在确认无线没有问题
欧巴周
5楼-- · 2019-07-16 21:59
蟹蟹不是说都不需要好像不的还是很喜欢堵得慌好的好的很好的
欧巴周
6楼-- · 2019-07-17 02:17
 精彩回答 2  元偷偷看……

一周热门 更多>