找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12212|回复: 24
收起左侧

NRF24l01实时双向2.4g通信(stm32与51单片机源码)

  [复制链接]
ID:223820 发表于 2017-8-1 14:13 | 显示全部楼层 |阅读模式
0.png
nrf_2.4g通信

stm32单片机源程序如下:
  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}; //要发送的数据 1
  13.         u8 Rx_Buf[32]; //接收到的数据  最多32字节
  14.         u8 key=0;

  15.           Stm32_Clock_Init(9);//系统时钟设置
  16.         delay_init(72);                //延时初始化
  17.         uart_init(72,9600); //串口1初始化            
  18.                   
  19.         KEY_Init();                 //按键初始化
  20.         LED_Init();         //LED初始化
  21.         NRF24L01_Init();    //初始化NRF24L01
  22.                                     
  23.         while(NRF24L01_Check())//检测不到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))//等待接收数据 ,返回0则接收到数据 ,在等待接收数据期间,可以随时变成发送模式  
  37.                 {
  38.                         key=KEY_Scan();
  39.                         if(key==1)         //按了KEY0   则变成发送模式,发送对应数据,发送完后变成接收模式
  40.                         {       
  41.                                  TX_Mode();        //发送模式
  42.                                  NRF24L01_TxPacket(Tx_Buf1);        // 发送命令数据
  43.                                    LED1=0;
  44.                                  delay_ms(300);
  45.                                  LED1=1;
  46.                                  delay_ms(300);                        //发送后LED1闪一下
  47.                                  break;        //退出最近的循环,从而变回接收模式,这句关键       
  48.                    }
  49.                 }
  50.                 if(Rx_Buf[0]==1)           //若接收到对应的数据则实现对应功能
  51.                 {
  52.                          Rx_Buf[0]=0;//清空数据
  53.                          LED1=0;
  54.                          delay_ms(300);
  55.                          LED1=1;
  56.                          delay_ms(300);//接收到数据 后闪烁          
  57.                 }               
  58.         }


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

  62. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


51单片机源程序如下:
  1. #include<reg51.h>
  2. #include"2401.h"

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


  5. sbit KEY8=P3^7;         //发送按键


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

  7. sbit LED6=P1^6;         ////接收到数据后的功能实现灯  

  8. void delay_ms(uint z)         //延时函数
  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};//发送的信息1
  23.          uchar Rx_Buf[32];  //接收到的数据暂存器,最多32字节数据  
  24.          init_NRF24L01();
  25.          LED6=1;//初始灯6熄灭   


  26.         while(NRF24L01_Check())                //检查不到24l01则报警
  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)) //等待接收数据 ,返回1则接收到数据 ,在等待接收数据期间,可以随时变成发送模式  
  37.             {
  38.                         if(KEY8==0)         //按了按键8   则变成发送模式,发送对应数据,发送完后变成接收模式
  39.                         {       
  40.                                 delay_ms(5);//消抖动
  41.                                 if(KEY8==0)
  42.                                 {
  43.                                          while(!KEY8);
  44.                                         TX_Mode();         //发送模式
  45.                                     nRF24L01_TxPacket(Tx_Buf1);        // 发送命令数据
  46.                                           LED6=0;
  47.                                     delay_ms(300);
  48.                                         LED6=1;
  49.                                     delay_ms(300);                        //发送后LED6闪一下
  50.                                         break;        //退出最近的循环,从而变回接收模式,这句关键
  51.                                  }
  52.                                
  53.                          }
  54.                  }
  55.                  if(Rx_Buf[0]==1)           //若接收到对应的数据则实现对应功能
  56.                  {
  57.                      Rx_Buf[0]=0;//清空数据
  58. ……………………

  59. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
NRF24l01实时双向通信(stm32与51).zip (1.06 MB, 下载次数: 589)
回复

使用道具 举报

ID:321559 发表于 2018-5-3 20:17 | 显示全部楼层
非常好的例子,谢谢
回复

使用道具 举报

ID:296975 发表于 2018-5-5 22:16 | 显示全部楼层
好想下载来看看 没钱 只好自己写了
回复

使用道具 举报

ID:322902 发表于 2018-5-5 22:47 | 显示全部楼层
资料很好,下载下来学习一下
回复

使用道具 举报

ID:324874 发表于 2018-5-25 14:36 | 显示全部楼层
多谢分享,下载学习
回复

使用道具 举报

ID:161597 发表于 2018-6-22 13:57 | 显示全部楼层
下载学习!
回复

使用道具 举报

ID:372069 发表于 2018-7-16 14:37 | 显示全部楼层

非常好的例子,谢谢
回复

使用道具 举报

ID:333757 发表于 2018-7-17 15:32 | 显示全部楼层
A good example
回复

使用道具 举报

ID:383956 发表于 2018-8-7 22:20 | 显示全部楼层
不错,学习一下
回复

使用道具 举报

ID:381406 发表于 2018-8-8 23:46 来自手机 | 显示全部楼层
非常好,正好需要
回复

使用道具 举报

ID:305825 发表于 2018-8-16 20:05 | 显示全部楼层
为什么没有原理图,缺少了硬件部分的资料
回复

使用道具 举报

ID:402569 发表于 2018-9-26 10:25 | 显示全部楼层
非常好的例子,谢谢
回复

使用道具 举报

ID:402569 发表于 2018-9-26 10:44 | 显示全部楼层
有原理图么
回复

使用道具 举报

ID:313313 发表于 2019-1-8 11:53 | 显示全部楼层
非常好,正好需要
回复

使用道具 举报

ID:492670 发表于 2019-3-17 17:27 | 显示全部楼层
支持楼主大大
回复

使用道具 举报

ID:598547 发表于 2019-8-9 19:36 | 显示全部楼层
来学习一下
回复

使用道具 举报

ID:600500 发表于 2019-8-15 16:49 | 显示全部楼层
非常好的例子,谢谢
回复

使用道具 举报

ID:296060 发表于 2020-1-16 20:12 | 显示全部楼层
学习下。。。楼主好人啊。
回复

使用道具 举报

ID:93224 发表于 2020-1-21 17:09 | 显示全部楼层
NRF2401还有人真正的用吗?高校里的玩具
回复

使用道具 举报

ID:594418 发表于 2020-4-24 10:34 | 显示全部楼层
为啥打不开
回复

使用道具 举报

ID:739602 发表于 2020-4-27 20:42 | 显示全部楼层
多谢老哥了      
回复

使用道具 举报

ID:128714 发表于 2021-1-17 21:12 | 显示全部楼层
谢谢,正想看看不同类型单片机用NRF24L01通讯。
回复

使用道具 举报

ID:800382 发表于 2021-1-20 08:39 来自手机 | 显示全部楼层
资料很好,下载下来学习一下
回复

使用道具 举报

ID:220936 发表于 2021-1-30 03:20 | 显示全部楼层
楼主牛B,正好参考
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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