找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机原程序是发送一个数据,我在发送的数组里放了俩个数据,程序接收后就没反应了

[复制链接]
跳转到指定楼层
楼主


【小成果】1、无线发射控制LED【不同命令亮不同的灯】.rar (111.73 KB, 下载次数: 4)

发送程序
  1. #include<reg51.h>
  2. #include"2401.h"

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

  5. sbit KEY1=P3^4;                                         //发送按键
  6. sbit KEY2=P3^5;
  7. sbit KEY3=P3^6;
  8. sbit KEY4=P3^7;
  9. sbit beep=P2^3;                                        //喇叭
  10. sbit LED6=P1^6;                                         //发送数据时显示灯+接收到数据后的功能实现灯
  11.   
  12. void delay_ms(uint z)                        //延时函数
  13. {
  14.         uint y;
  15.         while(z--)
  16.                 for(y=110;y>0;y--);
  17. }
  18. void main()
  19. {
  20.          uchar Tx_Buf[2];        //发送的信息1
  21. //         uchar Rx_Buf[32];          //接收到的数据暂存器,最多32字节数据  
  22.          init_NRF24L01();
  23.          LED6=1;                                //初始灯6熄灭   

  24.         while(NRF24L01_Check())                                        //检查不到24l01则报警
  25.         {
  26.                 beep=0;
  27.                 delay_ms(1000);
  28.                 beep=1;
  29.                 delay_ms(1000);
  30.         }
  31.         while(1)
  32.         {       
  33.             
  34.                         if(KEY1==0)                                                 //按了按键1,则变成发送模式,发送对应数据,发送完后变成接收模式
  35.                         {       
  36.                                 delay_ms(5);//消抖动
  37.                                 if(KEY1==0)
  38.                                 {
  39.                                          while(!KEY1);
  40.                                         TX_Mode();                                                 //发送模式
  41.                                         Tx_Buf[0]=1;                                        //将1发送过去
  42.                                         Tx_Buf[1]=2;
  43.                               nRF24L01_TxPacket(Tx_Buf);                //发送命令数据
  44.                                         LED6=0;
  45.                                     delay_ms(300);
  46.                                         LED6=1;
  47.                                     delay_ms(300);                                        //发送后LED1闪一下
  48.                                         break;                                                        //退出最近的循环,从而变回接收模式,这句关键
  49.                                  }       
  50.                         }
  51.          }
  52. }

复制代码



接收源代码
  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. sbit LED1=P1^0;                                        //接收到数据后的功能实现灯
  9. sbit LED2=P1^1;
  10. sbit LED3=P1^2;
  11. sbit LED4=P1^3;  
  12. sbit IN1=P1^4;
  13. sbit IN2=P1^5;
  14. sbit ENA=P1^6;

  15. void delay_us(unsigned int aa);

  16. void delay_ms(uint z)                        //延时函数
  17. {
  18.         uint y;
  19.         while(z--)
  20.                 for(y=110;y>0;y--);
  21. }
  22. void main()
  23. {
  24.      uint cycle=0,T=1024;
  25.          uchar Tx_Buf1[]={1};        //发送的信息1
  26.          uchar Rx_Buf[32];          //接收到的数据暂存器,最多32字节数据  
  27.          init_NRF24L01();
  28.          LED6=1;                                //初始灯6熄灭   

  29.         while(NRF24L01_Check())                                        //检查不到24l01则报警
  30.         {
  31.                 beep=0;
  32.                 delay_ms(200);
  33.                 beep=1;
  34.                 delay_ms(200);
  35.         }
  36.         while(1)
  37.         {       
  38.                 RX_Mode();                                                        //接收模式  
  39.                  //1//if(Rx_Buf[0]==1)                                                           //若接收到对应的数据则实现对应功能
  40.                  //1//{
  41.                  //1//   Rx_Buf[0]=0;                                //清空数据
  42.                  //1//   LED6=0;
  43.                  //1//         delay_ms(300);
  44.                  //1//         LED6=1;
  45.                  //1//         delay_ms(300);                                //接收到数据 后闪烁          
  46.                  //1//}
  47.                 switch(Rx_Buf[0])
  48.            {    //对数据进行分析来控制灯亮
  49.                 case 0:
  50.                         break;
  51.                 case 1:
  52.                         Rx_Buf[0]=0;                                //清空数据
  53.                     LED1=0;
  54.                         delay_us(300);
  55.                         LED1=1;
  56.                         delay_us(300);
  57.                     IN1=1;   
  58.                 IN2=0;
  59.             while(cycle!=T)   
  60.                 {
  61.                   ENA=1;
  62.               delay_us(cycle++);
  63.               ENA=0;
  64.               delay_us(T-cycle);      
  65.             }
  66.                         IN1=1;   
  67.                 IN2=0;                
  68.                         break;
  69.                 default:
  70.                         Rx_Buf[0]=0;                                //清空数据
  71.                     LED4=0;
  72.                         delay_ms(300);
  73.                         LED4=1;
  74.                         delay_ms(300);       
  75.                         break;
  76.                 }                
  77.         }
  78. }
  79. void delay_us(unsigned int aa)
  80. {
  81. while(aa--);
  82. }


复制代码



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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