您的位置 首页 产品

51单片机 nRF24L01 无线模块 测验 按键灯长途操控

入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过按动这4个不同的按键来发送4种不同的命令,来控制接收端(小的板…

入正题,这个试验的功用便是一个发送模块(大的那个板)衔接4个按键,经过按动这4个不同的按键来发送4种不同的指令,来操控接纳端(小的板)点亮4个不同的灯。

>_

1 void main()2 {3      uchar Tx_Buf1[]={1};    //发送的信息1 4      uchar Rx_Buf[32];      //接纳到的数据暂存器,最多32字节数据  5      init_NRF24L01();6      LED6=1;                //初始灯6平息   7 8     while(NRF24L01_Check())                    //查看不到24l01则报警 9     {10         beep=0;11         delay_ms(200);12         beep=1;13         delay_ms(200);14     }15     while(1)16     {    17         RX_Mode();                            //接纳形式  18         while(!nRF24L01_RxPacket(Rx_Buf))     //等候接纳数据,回来1则接纳到数据,在等候接纳数据期间,能够随时变成发送形式  19         {20             if(KEY1==0)                         //按了按键1,则变成发送形式,发送对应数据,发送完后变成接纳形式 21             {    22                 delay_ms(5);//消颤动 23                 if(KEY1==0)24                 {25                      while(!KEY1);26                     TX_Mode();                         //发送形式 27                     Tx_Buf1[0]=1;                    //将1发送曩昔28                     nRF24L01_TxPacket(Tx_Buf1);        //发送指令数据29                     LED6=0;30                     delay_ms(300);31                     LED6=1;32                     delay_ms(300);                    //发送后LED1闪一下 33                     break;                            //退出最近的循环,然后变回接纳形式,这句要害34                  }    35              }36              else if(KEY2==0)                     37              {    38                 delay_ms(5);//消颤动 39                 if(KEY2==0)40                 {41                      while(!KEY2);42                     TX_Mode();                         //发送形式 43                     Tx_Buf1[0]=2;                    //将2发送曩昔44                     nRF24L01_TxPacket(Tx_Buf1);        //发送指令数据45                     LED6=0;46                     delay_ms(300);47                     LED6=1;48                     delay_ms(300);                    49                     break;                            //退出最近的循环,然后变回接纳形式,这句要害50                  }    51               }52               else if(KEY3==0)                         53               {    54                 delay_ms(5);//消颤动 55                 if(KEY3==0)56                 {57                      while(!KEY3);58                     TX_Mode();                         //发送形式 59                     Tx_Buf1[0]=3;                    //将3发送曩昔60                     nRF24L01_TxPacket(Tx_Buf1);        //发送指令数据61                     LED6=0;62                     delay_ms(300);63                     LED6=1;64                     delay_ms(300);                    65                     break;                            //退出最近的循环,然后变回接纳形式,这句要害66                  }    67               }68               else if(KEY4==0)                         //按了按键8,则变成发送形式,发送对应数据,发送完后变成接纳形式 69               {    70                 delay_ms(5);//消颤动 71                 if(KEY4==0)72                 {73                      while(!KEY4);74                     TX_Mode();                         //发送形式 75                     Tx_Buf1[0]=4;                    //将4发送曩昔76                     nRF24L01_TxPacket(Tx_Buf1);        //发送指令数据77                     LED6=0;78                     delay_ms(300);79                     LED6=1;80                     delay_ms(300);                    81                     break;                            //退出最近的循环,然后变回接纳形式,这句要害82                  }    83               }84          }85          if(Rx_Buf[0]==1)                               //若接纳到对应的数据则完成对应功用 86          {87              Rx_Buf[0]=0;                //清空数据 88              LED6=0;89               delay_ms(300);90               LED6=1;91               delay_ms(300);                //接纳到数据 后业绩      92          }93     }94 }

第8~14行检测nRF24L01是否存在,假如不存在就报警,这儿把beep映射到一个蜂鸣器的引脚;接下来进入主循环,首要设置为接纳形式,循环检测是否收到数据,假如收到数据就直接跳到85行碑文LED6的业绩功用,在循环检测是否收到数据期间,还能够检测是否有按键按下,并转换为发送形式将对应指令发送出去;总的来说比较简单,这儿就不做详解,此外要有一个nRF24L01的51驱动文件,网上许多,自己写起来有点烦~调试可能会呈现许多过错!

>_

1 void main()2 {3      uchar Tx_Buf1[]={1};    //发送的信息1 4      uchar Rx_Buf[32];      //接纳到的数据暂存器,最多32字节数据  5      init_NRF24L01();6      LED6=1;                //初始灯6平息   7 8     while(NRF24L01_Check())                    //查看不到24l01则报警 9     {10         beep=0;11         delay_ms(200);12         beep=1;13         delay_ms(200);14     }15     while(1)16     {    17         RX_Mode();                            //接纳形式  18         while(!nRF24L01_RxPacket(Rx_Buf))     //等候接纳数据,回来1则接纳到数据,在等候接纳数据期间,能够随时变成发送形式  19         {20             if(KEY8==0)                         //按了按键8,则变成发送形式,发送对应数据,发送完后变成接纳形式 21             {    22                 delay_ms(5);//消颤动 23                 if(KEY8==0)24                 {25                      while(!KEY8);26                     TX_Mode();     //发送形式 27                     nRF24L01_TxPacket(Tx_Buf1);        //发送指令数据28                     LED6=0;29                     delay_ms(300);30                     LED6=1;31                     delay_ms(300);                    //发送后LED6闪一下 32                     break;                            //退出最近的循环,然后变回接纳形式,这句要害33                  }    34              }35          }36          //1//if(Rx_Buf[0]==1)                               //若接纳到对应的数据则完成对应功用 37          //1//{38          //1//   Rx_Buf[0]=0;                //清空数据 39          //1//   LED6=0;40          //1//     delay_ms(300);41          //1//     LED6=1;42          //1//     delay_ms(300);                //接纳到数据 后业绩      43          //1//}44         switch(Rx_Buf[0]){//对数据进行剖析来操控灯亮45         case 0:46             break;47         case 1:48             Rx_Buf[0]=0;                //清空数据 49             LED1=0;50             delay_ms(300);51             LED1=1;52             delay_ms(300);    53             break;54         case 2:55             Rx_Buf[0]=0;                //清空数据 56             LED2=0;57             delay_ms(300);58             LED2=1;59             delay_ms(300);    60             break;61         case 3:62             Rx_Buf[0]=0;                //清空数据 63             LED3=0;64             delay_ms(300);65             LED3=1;66             delay_ms(300);    67             break;68         default:69             Rx_Buf[0]=0;                //清空数据 70             LED4=0;71             delay_ms(300);72             LED4=1;73             delay_ms(300);    74             break;75         }         76     }77 }

这个就不解说啦,和发送的差不多,便是等候接纳,接纳的时分还能检测按键然后将指令发送曩昔,当收到数据时,就转到下面的switch对指令进行解析,来完成不同LED灯的亮灭。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/265663.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部