×
单片机 > 单片机程序设计 > 详情

NRF24L01发射+接受程序实测通过

发布时间:2020-06-03 发布时间:
|

主控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;

                }                            

        }

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会