0.png (46.65 KB, 下載次數: 106)
下載附件
2017-8-1 17:23 上傳
nrf_2.4g通信
stm32單片機源程序如下:
- #include <stm32f10x_lib.h>
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "led.h"
- #include "NRF24l01.h"
- #include "key.h"
-
- int main(void)
- {
-
- u8 Tx_Buf1[]={1}; //要發送的數據 1
- u8 Rx_Buf[32]; //接收到的數據 最多32字節
- u8 key=0;
- Stm32_Clock_Init(9);//系統時鐘設置
- delay_init(72); //延時初始化
- uart_init(72,9600); //串口1初始化
-
- KEY_Init(); //按鍵初始化
- LED_Init(); //LED初始化
- NRF24L01_Init(); //初始化NRF24L01
-
- while(NRF24L01_Check())//檢測不到24L01
- {
-
- delay_ms(300);
- LED0=!LED0;//DS0閃爍
- LED1=!LED1;//DS1閃爍
- }
- //初始 DS1熄滅
- LED1=1;//
- while(1)
- {
-
- RX_Mode();//接收模式
- while(NRF24L01_RxPacket(Rx_Buf))//等待接收數據 ,返回0則接收到數據 ,在等待接收數據期間,可以隨時變成發送模式
- {
- key=KEY_Scan();
- if(key==1) //按了KEY0 則變成發送模式,發送對應數據,發送完后變成接收模式
- {
- TX_Mode(); //發送模式
- NRF24L01_TxPacket(Tx_Buf1); // 發送命令數據
- LED1=0;
- delay_ms(300);
- LED1=1;
- delay_ms(300); //發送后LED1閃一下
- break; //退出最近的循環,從而變回接收模式,這句關鍵
- }
- }
- if(Rx_Buf[0]==1) //若接收到對應的數據則實現對應功能
- {
- Rx_Buf[0]=0;//清空數據
- LED1=0;
- delay_ms(300);
- LED1=1;
- delay_ms(300);//接收到數據 后閃爍
- }
- }
-
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
51單片機源程序如下:
- #include<reg51.h>
- #include"2401.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit KEY8=P3^7; //發送按鍵
- sbit beep=P2^3;//喇叭
- sbit LED6=P1^6; ////接收到數據后的功能實現燈
- void delay_ms(uint z) //延時函數
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void delayms(unsigned int x)
- {
- unsigned int i;
- while(x--)
- for(i=125;i>0;i--);
- }
- void main()
- {
- uchar Tx_Buf1[]={1};//發送的信息1
- uchar Rx_Buf[32]; //接收到的數據暫存器,最多32字節數據
- init_NRF24L01();
- LED6=1;//初始燈6熄滅
- while(NRF24L01_Check()) //檢查不到24l01則報警
- {
- beep=0;
- delayms(200);
- beep=1;
- delayms(200);
- }
- while(1)
- {
- RX_Mode();//接收模式
- while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收數據 ,返回1則接收到數據 ,在等待接收數據期間,可以隨時變成發送模式
- {
- if(KEY8==0) //按了按鍵8 則變成發送模式,發送對應數據,發送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY8==0)
- {
- while(!KEY8);
- TX_Mode(); //發送模式
- nRF24L01_TxPacket(Tx_Buf1); // 發送命令數據
- LED6=0;
- delay_ms(300);
- LED6=1;
- delay_ms(300); //發送后LED6閃一下
- break; //退出最近的循環,從而變回接收模式,這句關鍵
- }
-
- }
- }
- if(Rx_Buf[0]==1) //若接收到對應的數據則實現對應功能
- {
- Rx_Buf[0]=0;//清空數據
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
NRF24l01實時雙向通信(stm32與51).zip
(1.06 MB, 下載次數: 589)
2017-8-1 14:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|