<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機 nRF24L01 無(wú)線(xiàn)模塊 測試 按鍵燈遠程控制

51單片機 nRF24L01 無(wú)線(xiàn)模塊 測試 按鍵燈遠程控制

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
入正題,這個(gè)實(shí)驗的功能就是一個(gè)發(fā)送模塊(大的那個(gè)板)連接4個(gè)按鍵,通過(guò)按動(dòng)這4個(gè)不同的按鍵來(lái)發(fā)送4種不同的命令,來(lái)控制接收端(小的板)點(diǎn)亮4個(gè)不同的燈。

本文引用地址:http://dyxdggzs.com/article/201611/318439.htm

>_

1 void main()2 {3      uchar Tx_Buf1[]={1};    //發(fā)送的信息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則接收到數據,在等待接收數據期間,可以隨時(shí)變成發(fā)送模式  19         {20             if(KEY1==0)                         //按了按鍵1,則變成發(fā)送模式,發(fā)送對應數據,發(fā)送完后變成接收模式 21             {    22                 delay_ms(5);//消抖動(dòng) 23                 if(KEY1==0)24                 {25                      while(!KEY1);26                     TX_Mode();                         //發(fā)送模式 27                     Tx_Buf1[0]=1;                    //將1發(fā)送過(guò)去28                     nRF24L01_TxPacket(Tx_Buf1);        //發(fā)送命令數據29                     LED6=0;30                     delay_ms(300);31                     LED6=1;32                     delay_ms(300);                    //發(fā)送后LED1閃一下 33                     break;                            //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵34                  }    35              }36              else if(KEY2==0)                     37              {    38                 delay_ms(5);//消抖動(dòng) 39                 if(KEY2==0)40                 {41                      while(!KEY2);42                     TX_Mode();                         //發(fā)送模式 43                     Tx_Buf1[0]=2;                    //將2發(fā)送過(guò)去44                     nRF24L01_TxPacket(Tx_Buf1);        //發(fā)送命令數據45                     LED6=0;46                     delay_ms(300);47                     LED6=1;48                     delay_ms(300);                    49                     break;                            //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵50                  }    51               }52               else if(KEY3==0)                         53               {    54                 delay_ms(5);//消抖動(dòng) 55                 if(KEY3==0)56                 {57                      while(!KEY3);58                     TX_Mode();                         //發(fā)送模式 59                     Tx_Buf1[0]=3;                    //將3發(fā)送過(guò)去60                     nRF24L01_TxPacket(Tx_Buf1);        //發(fā)送命令數據61                     LED6=0;62                     delay_ms(300);63                     LED6=1;64                     delay_ms(300);                    65                     break;                            //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵66                  }    67               }68               else if(KEY4==0)                         //按了按鍵8,則變成發(fā)送模式,發(fā)送對應數據,發(fā)送完后變成接收模式 69               {    70                 delay_ms(5);//消抖動(dòng) 71                 if(KEY4==0)72                 {73                      while(!KEY4);74                     TX_Mode();                         //發(fā)送模式 75                     Tx_Buf1[0]=4;                    //將4發(fā)送過(guò)去76                     nRF24L01_TxPacket(Tx_Buf1);        //發(fā)送命令數據77                     LED6=0;78                     delay_ms(300);79                     LED6=1;80                     delay_ms(300);                    81                     break;                            //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵82                  }    83               }84          }85          if(Rx_Buf[0]==1)                               //若接收到對應的數據則實(shí)現對應功能 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映射到一個(gè)蜂鳴器的引腳;接下來(lái)進(jìn)入主循環(huán),首先設置為接收模式,循環(huán)檢測是否收到數據,如果收到數據就直接跳到85行執行LED6的閃爍功能,在循環(huán)檢測是否收到數據期間,還可以檢測是否有按鍵按下,并轉換為發(fā)送模式將對應命令發(fā)送出去;總的來(lái)說(shuō)比較簡(jiǎn)單,這里就不做詳解,此外要有一個(gè)nRF24L01的51驅動(dòng)文件,網(wǎng)上很多,自己寫(xiě)起來(lái)有點(diǎn)煩~調試可能會(huì )出現很多錯誤!

>_

1 void main()2 {3      uchar Tx_Buf1[]={1};    //發(fā)送的信息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則接收到數據,在等待接收數據期間,可以隨時(shí)變成發(fā)送模式  19         {20             if(KEY8==0)                         //按了按鍵8,則變成發(fā)送模式,發(fā)送對應數據,發(fā)送完后變成接收模式 21             {    22                 delay_ms(5);//消抖動(dòng) 23                 if(KEY8==0)24                 {25                      while(!KEY8);26                     TX_Mode();     //發(fā)送模式 27                     nRF24L01_TxPacket(Tx_Buf1);        //發(fā)送命令數據28                     LED6=0;29                     delay_ms(300);30                     LED6=1;31                     delay_ms(300);                    //發(fā)送后LED6閃一下 32                     break;                            //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵33                  }    34              }35          }36          //1//if(Rx_Buf[0]==1)                               //若接收到對應的數據則實(shí)現對應功能 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]){//對數據進(jìn)行分析來(lái)控制燈亮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 }

這個(gè)就不解釋啦,和發(fā)送的差不多,就是等待接收,接收的時(shí)候還能檢測按鍵然后將命令發(fā)送過(guò)去,當收到數據時(shí),就轉到下面的switch對命令進(jìn)行解析,來(lái)實(shí)現不同LED燈的亮滅。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>