蓝牙hc 06通讯51单片机链接控制led灯 代码如下,调试无结果,跪求解释 一定采纳
#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharuin...
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint i;
uchar code table[] = {0x61,0x74,0x0D}; //是at\r 对应的ascii码值
uchar code cpr[] = {0x4F,0x4B,0x0D}; //比较数组 ,AT\\OK的码值
char prt[]= { 'A','T','+','B','A','U ','D','4','\r' };
char nam[]= { 'A','T','+','N','A','M ','E','D','M','G','\r' }; 、 、//设置名字
char pwd[]= { 'A','T','+','P','I','N ','1','2','3','\r' }; //数组可以这样直接定义传输对应的ascii码值吗???
uchar read[9];
sbit d10 = P1^0;
sbit d20 = P2^0;
sbit d21 = P2^1;
sbit d22 = P2^2;
sbit d23 = P2^3;
sbit d24 = P2^4;
sbit d25 = P2^5;
void delayms(unsigned char ms)
{ unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void init()
{ PCON = 0x80; //1000 0000电源和波特率控制器smod=1
SCON = 0x40; //0100 0000 串口通讯, 工作方式1
TMOD = 0x20; //定时器计数器工作方式寄存器
TH1 = 0xff;
TL1 = 0xff;
TR1 = 1;
}
void main()
{
init (); 停
P2=0xff; // 停止
for(i = 0;i < 3;i ++) //发送"at\r"给单片机
{
SBUF = table[i]】;
while(!TI); 可以做个
TI = 0;
}
REN=1;
for(i = 0;i < 2;i ++) //接受蓝牙模块返回的数据 ,此处测试通讯
{ //可以做个时钟中断,每隔一秒进行测试通讯是否正常。。。。
read[i] = SBUF;
while(!RI);
RI = 0;
}
REN=0; //禁止接受数据的标志位
if(read[0]==cpr[0]&&read[1]==cpr[1]) //进行判断,如果接受的数据与比较数组中的一致,点亮,
d1 = 1;
for(i = 0;i < 9;i ++) //设置蓝牙波特率
{
SBUF = prt[i]】;
while(!TI); 可以做个
TI = 0;
}
for(i = 0;i < 11;i ++) //设置名字
{
SBUF = nam[i]】;
while(!TI); 可以做个
TI = 0;
}
for(i = 0;i < 10;i ++) //发设置密码
{
SBUF = psw[i]】;
while(!TI); 可以做个
TI = 0;
}
while(1)
{ REN=1;
for(i = 0;i < 1;i ++) //接受蓝牙模块返回的数据
{
read[i] = SBUF;
while(!RI);
RI = 0;
}
REN=0;
if(read[0]==0x30) //进行判断,前进,
省略几行 ;
if(read[0]==0x34) //进行判断,倒退,
p2=0xff; //停止
delayms(10);
}
} 展开
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint i;
uchar code table[] = {0x61,0x74,0x0D}; //是at\r 对应的ascii码值
uchar code cpr[] = {0x4F,0x4B,0x0D}; //比较数组 ,AT\\OK的码值
char prt[]= { 'A','T','+','B','A','U ','D','4','\r' };
char nam[]= { 'A','T','+','N','A','M ','E','D','M','G','\r' }; 、 、//设置名字
char pwd[]= { 'A','T','+','P','I','N ','1','2','3','\r' }; //数组可以这样直接定义传输对应的ascii码值吗???
uchar read[9];
sbit d10 = P1^0;
sbit d20 = P2^0;
sbit d21 = P2^1;
sbit d22 = P2^2;
sbit d23 = P2^3;
sbit d24 = P2^4;
sbit d25 = P2^5;
void delayms(unsigned char ms)
{ unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void init()
{ PCON = 0x80; //1000 0000电源和波特率控制器smod=1
SCON = 0x40; //0100 0000 串口通讯, 工作方式1
TMOD = 0x20; //定时器计数器工作方式寄存器
TH1 = 0xff;
TL1 = 0xff;
TR1 = 1;
}
void main()
{
init (); 停
P2=0xff; // 停止
for(i = 0;i < 3;i ++) //发送"at\r"给单片机
{
SBUF = table[i]】;
while(!TI); 可以做个
TI = 0;
}
REN=1;
for(i = 0;i < 2;i ++) //接受蓝牙模块返回的数据 ,此处测试通讯
{ //可以做个时钟中断,每隔一秒进行测试通讯是否正常。。。。
read[i] = SBUF;
while(!RI);
RI = 0;
}
REN=0; //禁止接受数据的标志位
if(read[0]==cpr[0]&&read[1]==cpr[1]) //进行判断,如果接受的数据与比较数组中的一致,点亮,
d1 = 1;
for(i = 0;i < 9;i ++) //设置蓝牙波特率
{
SBUF = prt[i]】;
while(!TI); 可以做个
TI = 0;
}
for(i = 0;i < 11;i ++) //设置名字
{
SBUF = nam[i]】;
while(!TI); 可以做个
TI = 0;
}
for(i = 0;i < 10;i ++) //发设置密码
{
SBUF = psw[i]】;
while(!TI); 可以做个
TI = 0;
}
while(1)
{ REN=1;
for(i = 0;i < 1;i ++) //接受蓝牙模块返回的数据
{
read[i] = SBUF;
while(!RI);
RI = 0;
}
REN=0;
if(read[0]==0x30) //进行判断,前进,
省略几行 ;
if(read[0]==0x34) //进行判断,倒退,
p2=0xff; //停止
delayms(10);
}
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询