本帖最后由 w灰太狼x 于 2013-5-10 13:23 编辑
nrf24l01和蓝牙放在一个程序里2401不能正常工作!!!把蓝牙初始化串口和蓝牙接收数据部分全屏蔽了2401就可以正常工作了.(我发的图片里的RI忘记清零了,实际程序里已经清零了)
#include<reg52.h>
#include <intrins.h>
#include"fs.h"
#include"ds18b20.h"
#include"小车.h"
#include"PWM.h"
bit flag;
uint templanya;
void delayus(uint i)
{
while(i--);
}
void init_lanya()
{
TMOD=0x20;//设置定时器1为工作方式2 //GATE为0
TH1=0xfd; //设置波特率为9600
TL1=0xfd;
TR1=1; //GATE为0时TR1置1打开定时器1
REN=1; //允许串行口接收数据
SM0=0; //设置串行口为工作方式1
SM1=1;
}
void init_wx_wd()
{
uchar i;
display_DS18B20(); //获取温度值
for(i=0;i<6;i++)
TxBuf=DisBuf;//把温度用无线发送
nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);
}
void main()
{
init_lanya(); //初始化蓝牙串口
init_NRF24L01(); //NRF24L01初始化配置
Delay(10);
while(1)
{
init_wx_wd(); //2401接收温度并在液晶上显示
//*****************蓝牙处理算法****************//
if(RI==1) //RI==1表示收到了数据
{
RI=0 //收到数据后RI需要软件清零
templanya=SBUF; //收到的数据存在SBUF中
switch(SBUF)
{
case 0xfe: qianjin(); //delayxms(20);stop();delayxms(5);
if(bz1==0){zuozhuan();delayxms(1000);qianjin();}
if(bz2==0){youzhuan();delayxms(1000);qianjin();}
if(bz1==0&&bz2==0){houtui();delayxms(5000);zuozhuan();delayxms(500);qianjin();}
break;
case 0xfd: houtui();delayus(30000);stop();delayus(1);break;
case 0xfb: zuozhuan();delayus(30000);stop();delayus(1);
if(bz1==0){youzhuan();delayxms(5000);qianjin();}
break;
case 0xf7: youzhuan();delayus(30000);stop();delayus(1);
if(bz1==0){zuozhuan();delayxms(5000);qianjin();}break;
case 0xff: stop();break;
}
while(templanya==0x55)
{
RI=0;templanya=SBUF; xunji();
}
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2.4G的频率干扰
一周热门 更多>