主控STC89C52RC
晶振:11.0592
while(NRF24L01_TxPacket(tmp_buf)!=TX_OK); //发送失败则一直发送,直到对方接受成功为止
此句主要是检测发送信号发送完成
自己做实验可取此句
大家直接拿走吧,,不用谢
单片机+nrf24l01接受源程序如下(主程序):
- /***********************
- 小板测试时如果没有效果
- 就将2.4G拔下,在插上,按下复位,再次发送数据即可
- 如果发送数据时led闪烁,应该是发送数据的按键没有去抖
- ***************************/
- #include<reg52.h>
- #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<reg52.h>
- #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;
- }
- }
- }
复制代码
所有资料51hei提供下载:
nrf2401实测通过.zip
(105.39 KB, 下载次数: 541)
|