主控STC89C52RC
晶振:11.0592
while(NRF24L01_TxPacket(tmp_buf)!=TX_OK); //发送失败则一直发送,直到对方接受成功为止
此句主要是检测发送信号发送完成
自己做实验可取此句
大家直接拿走吧,,不用谢
单片机+nrf24l01接受源程序如下(主程序):
/***********************
小板测试时如果没有效果
就将2.4G拔下,在插上,按下复位,再次发送数据即可
如果发送数据时led闪烁,应该是发送数据的按键没有去抖
***************************/
#include
#include"NRF_24L01.h"
sbit led=P1^0;
void main(void)
{
unsigned char tmp_buf[33];
delay(200);
init_nrf24l01_io(); //初始化
delay(200);
led=1;
ifnnrf_rx_mode(); //设置为RX模式
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==RX_OK)//一旦接收到信息,则显示出来.
{
if(tmp_buf[31]=='a') led=(!led); //led取反
}
}
}
nrf24l01发射程序:
#include
#include"NRF_24L01.h"
sbit led=P1^0;
sbit key=P3^0;
uchar gled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
unsigned char t;
unsigned char tmp_buf[33]={0};
unsigned char buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
init_nrf24l01_io(); //初始化
delay(20);
SPI_Write_Buf(WRITE_REG+TX_ADDR,buf,5); //数据存入寄存器
SPI_Read_Buf(TX_ADDR,buf,5); //数据读出寄存器
for(t=0;t<5;t++)if(rx_buf[t]!=0XA5)break;
if(t==5) {led=0;delay(20000);led=1;} //验证数据,正常则led闪烁
ifnnrf_tx_mode(); //设为TX模式
while(1)
{
if(key==0)
{
led=0;
for(t=0;t<33;t++)
{
tmp_buf[t]=0;
}
tmp_buf[31]='a';
NRF24L01_TxPacket(tmp_buf); //发送数据
while(NRF24L01_TxPacket(tmp_buf)!=TX_OK); //发送失败则一直发送,直到对方接受成功为止
tmp_buf[31]=0;
led=1;
}
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』