蓝牙通信问题
时间:10-02
整理:3721RD
点击:
我想两块单片机之间蓝牙通信。单片机用的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; //发送中断标志位复位
}
发送数据的单片机
#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; //发送中断标志位复位
}
蓝牙的波特率默认9600~
蓝牙的波特率被调过
34脚是蓝牙模块的哪个脚
我用蓝牙测试软件有问题,用不了
最新进展,现在怎么办
我也不知道这个是零几了
一个型号是fc-114
一个型号是zs-040
百度不到啊
我用的师兄用过的,没有原始资料
问题已经解决了
怎么解决的可以透露一下吗?34脚是哪个脚?
忘了怎么解决的了。
我用的是师兄的,这一块和网上的不太一样
小编如果你能看见我的回复,麻烦你帮个忙。我现在用的是zs-040蓝牙模块,只是没有at指令集,希望你能发给我一份。若有教程就更好了。先谢了!
一年之前的了,我都忘了。
先可以调试下硬件链路,在确认无线没有问题