找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3387|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机与STM32的nRF24L01无线温度传输源码

[复制链接]
跳转到指定楼层
楼主
51单片机做的一个很简单的DS1302数字时钟+DS18B20温度检测,加入了NRF24L01的无线模块,将其数据发送到战舰开发板。

STM32这边直接用的做无线实验时调好的代码

51这边温度是1秒钟一采集,无线发送也是定时一秒钟,1602和TFT显示可以实现同步。



单片机源程序如下:
  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;//发送模式
  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, 下载次数: 41)
无线温度采集.zip (63.61 KB, 下载次数: 33)
NRF24L01+寄存器及指令集.doc (54.5 KB, 下载次数: 21)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:601346 发表于 2019-12-21 21:02 | 只看该作者
谢谢分享  搞了好几天了 没有i成功
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表