主控STC89C52RC
晶振:11.0592
while(NRF24L01_TxPacket(tmp_buf)!=TX_OK); //發送失敗則一直發送,直到對方接受成功為止
此句主要是檢測發送信號發送完成
自己做實驗可取此句
大家直接拿走吧,,不用謝
0.png (43.43 KB, 下載次數: 138)
下載附件
2017-10-23 22:41 上傳
單片機+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)
2017-10-23 22:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|