我想两块
单片机之间蓝牙
通信。单片机用的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 UAR
tinterrupt() 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; //发送中断标志位复位
}
一周热门 更多>