標(biāo)題: NRF24l01實(shí)時(shí)雙向2.4g通信(stm32與51單片機(jī)源碼) [打印本頁]

作者: 12edad    時(shí)間: 2017-8-1 14:13
標(biāo)題: NRF24l01實(shí)時(shí)雙向2.4g通信(stm32與51單片機(jī)源碼)

nrf_2.4g通信

stm32單片機(jī)源程序如下:
  1. #include <stm32f10x_lib.h>
  2. #include "sys.h"
  3. #include "usart.h"               
  4. #include "delay.h"       
  5. #include "led.h"           
  6. #include "NRF24l01.h"
  7. #include "key.h"
  8.                                                                                                                                                                                                                                                                                           
  9. int main(void)
  10. {       
  11.                          
  12.         u8 Tx_Buf1[]={1}; //要發(fā)送的數(shù)據(jù) 1
  13.         u8 Rx_Buf[32]; //接收到的數(shù)據(jù)  最多32字節(jié)
  14.         u8 key=0;

  15.           Stm32_Clock_Init(9);//系統(tǒng)時(shí)鐘設(shè)置
  16.         delay_init(72);                //延時(shí)初始化
  17.         uart_init(72,9600); //串口1初始化            
  18.                   
  19.         KEY_Init();                 //按鍵初始化
  20.         LED_Init();         //LED初始化
  21.         NRF24L01_Init();    //初始化NRF24L01
  22.                                     
  23.         while(NRF24L01_Check())//檢測(cè)不到24L01
  24.         {
  25.                
  26.                 delay_ms(300);
  27.                 LED0=!LED0;//DS0閃爍
  28.                 LED1=!LED1;//DS1閃爍
  29.         }
  30.    //初始 DS1熄滅
  31.         LED1=1;//
  32.         while(1)
  33.         {
  34.                
  35.                 RX_Mode();//接收模式
  36.                 while(NRF24L01_RxPacket(Rx_Buf))//等待接收數(shù)據(jù) ,返回0則接收到數(shù)據(jù) ,在等待接收數(shù)據(jù)期間,可以隨時(shí)變成發(fā)送模式  
  37.                 {
  38.                         key=KEY_Scan();
  39.                         if(key==1)         //按了KEY0   則變成發(fā)送模式,發(fā)送對(duì)應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
  40.                         {       
  41.                                  TX_Mode();        //發(fā)送模式
  42.                                  NRF24L01_TxPacket(Tx_Buf1);        // 發(fā)送命令數(shù)據(jù)
  43.                                    LED1=0;
  44.                                  delay_ms(300);
  45.                                  LED1=1;
  46.                                  delay_ms(300);                        //發(fā)送后LED1閃一下
  47.                                  break;        //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵       
  48.                    }
  49.                 }
  50.                 if(Rx_Buf[0]==1)           //若接收到對(duì)應(yīng)的數(shù)據(jù)則實(shí)現(xiàn)對(duì)應(yīng)功能
  51.                 {
  52.                          Rx_Buf[0]=0;//清空數(shù)據(jù)
  53.                          LED1=0;
  54.                          delay_ms(300);
  55.                          LED1=1;
  56.                          delay_ms(300);//接收到數(shù)據(jù) 后閃爍          
  57.                 }               
  58.         }


  59.                      
  60. }
  61. ……………………

  62. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


51單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include"2401.h"

  3. #define uint unsigned int
  4. #define uchar unsigned char


  5. sbit KEY8=P3^7;         //發(fā)送按鍵


  6. sbit beep=P2^3;//喇叭

  7. sbit LED6=P1^6;         ////接收到數(shù)據(jù)后的功能實(shí)現(xiàn)燈  

  8. void delay_ms(uint z)         //延時(shí)函數(shù)
  9. {
  10.         uint x,y;
  11.         for(x=z;x>0;x--)
  12.                 for(y=110;y>0;y--);
  13. }
  14. void delayms(unsigned int x)
  15. {
  16.         unsigned int i;
  17.         while(x--)
  18.                 for(i=125;i>0;i--);
  19. }

  20. void main()
  21. {
  22.          uchar Tx_Buf1[]={1};//發(fā)送的信息1
  23.          uchar Rx_Buf[32];  //接收到的數(shù)據(jù)暫存器,最多32字節(jié)數(shù)據(jù)  
  24.          init_NRF24L01();
  25.          LED6=1;//初始燈6熄滅   


  26.         while(NRF24L01_Check())                //檢查不到24l01則報(bào)警
  27.         {
  28.                 beep=0;
  29.                 delayms(200);
  30.                 beep=1;
  31.                 delayms(200);
  32.         }
  33.         while(1)
  34.         {       
  35.                 RX_Mode();//接收模式  
  36.                 while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收數(shù)據(jù) ,返回1則接收到數(shù)據(jù) ,在等待接收數(shù)據(jù)期間,可以隨時(shí)變成發(fā)送模式  
  37.             {
  38.                         if(KEY8==0)         //按了按鍵8   則變成發(fā)送模式,發(fā)送對(duì)應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
  39.                         {       
  40.                                 delay_ms(5);//消抖動(dòng)
  41.                                 if(KEY8==0)
  42.                                 {
  43.                                          while(!KEY8);
  44.                                         TX_Mode();         //發(fā)送模式
  45.                                     nRF24L01_TxPacket(Tx_Buf1);        // 發(fā)送命令數(shù)據(jù)
  46.                                           LED6=0;
  47.                                     delay_ms(300);
  48.                                         LED6=1;
  49.                                     delay_ms(300);                        //發(fā)送后LED6閃一下
  50.                                         break;        //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
  51.                                  }
  52.                                
  53.                          }
  54.                  }
  55.                  if(Rx_Buf[0]==1)           //若接收到對(duì)應(yīng)的數(shù)據(jù)則實(shí)現(xiàn)對(duì)應(yīng)功能
  56.                  {
  57.                      Rx_Buf[0]=0;//清空數(shù)據(jù)
  58. ……………………

  59. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
NRF24l01實(shí)時(shí)雙向通信(stm32與51).zip (1.06 MB, 下載次數(shù): 589)




作者: tyarist    時(shí)間: 2018-5-3 20:17
非常好的例子,謝謝
作者: ccccc5321c    時(shí)間: 2018-5-5 22:16
好想下載來看看 沒錢 只好自己寫了
作者: 龍嘯九重天    時(shí)間: 2018-5-5 22:47
資料很好,下載下來學(xué)習(xí)一下
作者: J.K.Who    時(shí)間: 2018-5-25 14:36
多謝分享,下載學(xué)習(xí)
作者: 網(wǎng)俠    時(shí)間: 2018-6-22 13:57
下載學(xué)習(xí)!
作者: chn88    時(shí)間: 2018-7-16 14:37

非常好的例子,謝謝
作者: 微笑x    時(shí)間: 2018-7-17 15:32
A good example
作者: xld_shenghuo    時(shí)間: 2018-8-7 22:20
不錯(cuò),學(xué)習(xí)一下
作者: zhangzhoulzl    時(shí)間: 2018-8-8 23:46
非常好,正好需要
作者: 2323jgdfdf    時(shí)間: 2018-8-16 20:05
為什么沒有原理圖,缺少了硬件部分的資料
作者: 一起爆肥    時(shí)間: 2018-9-26 10:25
非常好的例子,謝謝
作者: 一起爆肥    時(shí)間: 2018-9-26 10:44
有原理圖么

作者: gyh32499302    時(shí)間: 2019-1-8 11:53
非常好,正好需要
作者: yunflow    時(shí)間: 2019-3-17 17:27
支持樓主大大
作者: 威海沙灘    時(shí)間: 2019-8-9 19:36
來學(xué)習(xí)一下
作者: haoyu983    時(shí)間: 2019-8-15 16:49
非常好的例子,謝謝
作者: hei51ppp    時(shí)間: 2020-1-16 20:12
學(xué)習(xí)下。。。樓主好人啊。
作者: lele5211314    時(shí)間: 2020-1-21 17:09
NRF2401還有人真正的用嗎?高校里的玩具
作者: 進(jìn)而種    時(shí)間: 2020-4-24 10:34
為啥打不開

作者: 莫詩(shī)書    時(shí)間: 2020-4-27 20:42
多謝老哥了      
作者: zhenghua007    時(shí)間: 2021-1-17 21:12
謝謝,正想看看不同類型單片機(jī)用NRF24L01通訊。
作者: williamjing    時(shí)間: 2021-1-20 08:39
資料很好,下載下來學(xué)習(xí)一下
作者: guangxin    時(shí)間: 2021-1-30 03:20
樓主牛B,正好參考




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1