找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1569|回复: 0
收起左侧

NRF24L01通信的51单片机源代码 包括发送和接受两部分及相关资料

[复制链接]
ID:304654 发表于 2018-4-9 19:32 | 显示全部楼层 |阅读模式
基于51单片机的NRF24L01通信代码,包括发送和接受两部分,还有NRF24L01相关的资料
0.jpg 0.jpg
单片机源程序如下:
  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=P1^5;//喇叭

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

  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.                                         break;        //退出最近的循环,从而变回接收模式,这句关键
  47.                                  }
  48.                                
  49.                          }
  50.                  }
  51.                  if(Rx_Buf[0]=='1')           //若接收到对应的数据则实现对应功能
  52.                  {
  53.                      Rx_Buf[0]=0;//清空数据
  54.                            LED6=0;
  55.                          delay_ms(300);
  56.                          LED6=1;
  57.                          delay_ms(300);//接收到数据 后闪烁          
  58.                  }
  59.                  if(Rx_Buf[0]=='2')           //若接收到对应的数据则实现对应功能
  60.                  {
  61.                      Rx_Buf[0]=0;//清空数据
  62.                            beep=0;
  63.                          delay_ms(300);
  64.                          beep=1;
  65.                          delay_ms(300);//接收到数据 后闪烁          
  66.                  }
  67.                  if(Rx_Buf[1]=='1')           //若接收到对应的数据则实现对应功能
  68.                  {
  69.                      Rx_Buf[0]=0;//清空数据
  70.                            LED6=0;
  71.                          delay_ms(300);
  72.                          LED6=1;
  73.                          delay_ms(300);//接收到数据 后闪烁
  74.                          beep=0;
  75.                          delay_ms(300);
  76.                          beep=1;
  77.                          delay_ms(300);//接收到数据 后闪烁          
  78.                  }                

  79.         }


  80. }
复制代码

所有资料51hei提供下载:
NRF24L01.zip (3.12 MB, 下载次数: 38)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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