找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4187|回復: 1
打印 上一主題 下一主題
收起左側

51單片機與STM32的nRF24L01無線溫度傳輸源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:292119 發(fā)表于 2019-3-12 08:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機做的一個很簡單的DS1302數(shù)字時鐘+DS18B20溫度檢測,加入了NRF24L01的無線模塊,將其數(shù)據(jù)發(fā)送到戰(zhàn)艦開發(fā)板。

STM32這邊直接用的做無線實驗時調好的代碼

51這邊溫度是1秒鐘一采集,無線發(fā)送也是定時一秒鐘,1602和TFT顯示可以實現(xiàn)同步。



單片機源程序如下:
  1. #include"delay.h"
  2. #include"sys.h"
  3. #include"usart.h"
  4. #include"wkup.h"
  5. #include"led.h"
  6. #include"key.h"
  7. #include"lcd.h"
  8. #include"spi.h"
  9. //#include"adc.h"
  10. //#include"dma.h"
  11. #include"wkup.h"
  12. #include"nrf24l01.h"

  13. const u8 Send_Buff[]="I have received the massege!";
  14. #define SIZE sizeof(Send_Buff)

  15. u8 Receive_Buff[32];
  16.   
  17. int main(void)
  18. {        
  19.   delay_init();
  20.   uart_init(9600);
  21.   LCD_Init();
  22.   LED_Init();
  23.   KEY_Init();
  24.   WKUP_Init();
  25.   NRF24L01_Init();
  26. //  ADC1_Init();
  27. //  DMA1_Init();
  28.   LCD_Clear(BLACK);
  29.   POINT_COLOR=WHITE;
  30.   BACK_COLOR=BLACK;
  31.           LCD_ShowString(60,50,200,16,16,"WarShip STM32");        
  32.         LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");        
  33.         LCD_ShowString(60,100,200,16,16,"2013/12/15");
  34.         while(NRF24L01_Check())        //檢查NRF24L01是否在位.        
  35.         {
  36.                 LCD_ShowString(60,130,200,16,16,"NRF24L01 Check Error!");
  37.                 delay_ms(200);
  38.                 LED0=~LED0;
  39.                  delay_ms(200);
  40.         }
  41.         LCD_Clear(WHITE);
  42.           POINT_COLOR=RED;
  43.         BACK_COLOR=WHITE;
  44.         LCD_ShowString(60,50,200,16,16,"WarShip STM32");        
  45.         LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");        
  46.         LCD_ShowString(60,100,200,16,16,"2013/12/17");                                                                  
  47.         LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
  48.         LCD_ShowString(60,150,200,16,16,"KEY0:Send ");
  49.         LCD_ShowString(60,170,200,16,16,"KEY2:Receive");
  50.         LCD_ShowString(60,200,200,16,16,"STATUS:");
  51. //        ADC_SoftwareStartConvCmd(ADC1,ENABLE); //軟件啟動ADC
  52. //        ADC_DMACmd(ADC1,ENABLE);//開始ADC_DMA傳輸
  53.          
  54.         while(1)
  55.         {
  56.           u8 keyval,sta,t,mode=0;
  57.           keyval=KEY_Scan(0);
  58.           if(keyval==1)
  59.           {
  60.                   mode=1;//發(fā)送模式
  61.           }
  62.           else if(keyval==3)
  63.           {
  64.                   mode=0;//接收模式
  65.           }

  66.           if(mode)
  67.           {
  68.            TX_Mode();
  69.            LED1=0;  
  70.            sta=RF_TX_Pack((u8*)Send_Buff);
  71.            LCD_ShowxNum(116,200,sta,3,16,0);
  72.            if(sta&TX_OK)
  73.            LCD_ShowString(60,230,200,16,16,(u8*)Send_Buff);

  74.           }
  75.            else
  76.           {
  77.                   RX_Mode();
  78.                 LED1=1;
  79.                 sta=RF_RX_Pack((u8*)Receive_Buff);
  80.             LCD_ShowxNum(116,200,sta,3,16,0);
  81.                 if(sta&RX_OK)
  82.             LCD_ShowString(60,230,200,16,16,(u8*)Receive_Buff);
  83.           }                 
  84.           delay_ms(10);
  85.           t++;
  86.           if(t==50)
  87.           {
  88.           LED0=~LED0;
  89.           t=0;
  90.           }        
  91.         }               
  92. }               
復制代碼
轉載于www點openedv點com/posts/list/26309.htm

所有資料51hei提供下載:
STM32無線溫度接收.7z (203.85 KB, 下載次數(shù): 41)
無線溫度采集.zip (63.61 KB, 下載次數(shù): 33)
NRF24L01+寄存器及指令集.doc (54.5 KB, 下載次數(shù): 21)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:601346 發(fā)表于 2019-12-21 21:02 | 只看該作者
謝謝分享  搞了好幾天了 沒有i成功
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表