久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2094|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機+nRF24L01調(diào)試的幾個問題,希望大佬解答

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:493416 發(fā)表于 2019-7-26 17:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
想用兩個普中單片機+兩個NRF24L01實現(xiàn)無線控制,右側(cè)單片機為發(fā)送端,左側(cè)為接收端,原意是想右側(cè)單片機按鍵K1按下時自身LED2點亮,左側(cè)單片機接收到數(shù)據(jù)會點亮LED1和LED2。LCD1602顯示的兩個數(shù),我是想第一個數(shù)是發(fā)送之前檢測status的值,發(fā)送后在第二行顯示status的值。


問題1:
有一個疑惑是看資料說nrf是3.3v的,但是單片機的VCC輸出是5V左右,我看有的人這里用了降壓處理,這個有影響嗎?因為普中單片機自帶的無線接口我看原理圖上也沒有降壓操作吧,最后我將nrf用導(dǎo)線接在了P1端。(最開始接在了自帶的無線接口上,害怕接口有問題,但是兩種方式都不行)

問題2:
燒錄程序之后,status的值是00000111,然后按下按鍵之后,status的值為00011111,如果兩個數(shù)據(jù)都正確的話,那就是數(shù)據(jù)發(fā)送不成功,達(dá)到最大重發(fā)次數(shù)中斷了。為什么呢?希望解答一下。然后我按下復(fù)位,第一個status的值也變成00011111了,然后按下按鍵后 第二個status 的值還是00011111.為什么一樣了呢?是因為我第一次發(fā)送數(shù)據(jù)時status值改變了,復(fù)位之后 status的值就一直是00011111了嗎?還是說lcd上顯示的值有錯.






問題3:
左側(cè)單片機一直收不到數(shù)據(jù),困擾很久了 希望大佬幫忙看一下代碼,下面是發(fā)射端和接收端的main函數(shù),
發(fā)射端:主要是想初始化nrf為發(fā)射模式,然后通過按鍵設(shè)定發(fā)射的值。然后檢測發(fā)送前和發(fā)送后status的值。
  1. void main(void)
  2. {
  3.         unsigned char tf =0;
  4.         unsigned char TxBuf[32];
  5.          uchar status1[8],status2[8];  
  6.         uchar s1,s2;
  7.         LcdInit();
  8.         init_NRF24L01() ;
  9.         led1=1;
  10.         led2=1;
  11.         Delay(1000);
  12.         s1=SPI_Read(STATUS);
  13.         status1[0]=s1/128;
  14.         status1[1]=s1%128/64;
  15.         status1[2]=s1%64/32;
  16.         status1[3]=s1%32/16;
  17.         status1[4]=s1%16/8;
  18.         status1[5]=s1%8/4;
  19.         status1[6]=s1%4/2;
  20.         status1[7]=s1%2;
  21.   LcdWriteData(status1[0]+0x30);
  22.         LcdWriteData(status1[1]+0x30);
  23.         LcdWriteData(status1[2]+0x30);
  24.         LcdWriteData(status1[3]+0x30);
  25.         LcdWriteData(status1[4]+0x30);
  26.         LcdWriteData(status1[5]+0x30);
  27.         LcdWriteData(status1[6]+0x30);
  28.         LcdWriteData(status1[7]+0x30);
  29.         delayms(4000);
  30.         while(1)
  31.         {        
  32.                 if(K1==0)
  33.                 {
  34.                         Delay(100);
  35.                         if(K1==0)
  36.                         {
  37.                                 TxBuf[0] = 0;
  38.                                 tf=1;
  39.                                 led1=TxBuf[0];
  40.                         
  41.                                 Delay(200);
  42.                         }
  43.                 }
  44.                
  45.                
  46.                 if(tf==1)
  47.                 {
  48.                         nRF24L01_TxPacket(TxBuf);
  49.                         Delay(1000);
  50.                           s2=SPI_Read(STATUS);
  51.                                 status2[0]=s2/128;
  52.                                 status2[1]=s2%128/64;
  53.                                 status2[2]=s2%64/32;
  54.                                 status2[3]=s2%32/16;
  55.                                 status2[4]=s2%16/8;
  56.                                 status2[5]=s2%8/4;
  57.                                 status2[6]=s2%4/2;
  58.                                 status2[7]=s2%2;
  59.                                 LcdWriteCom(0x80+0x40);
  60.                                 LcdWriteData(status2[0]+0x30);
  61.                                 LcdWriteData(status2[1]+0x30);
  62.                                 LcdWriteData(status2[2]+0x30);
  63.                                 LcdWriteData(status2[3]+0x30);
  64.                                 LcdWriteData(status2[4]+0x30);
  65.                                 LcdWriteData(status2[5]+0x30);
  66.                                 LcdWriteData(status2[6]+0x30);
  67.                                 LcdWriteData(status2[7]+0x30);
  68.                                 Delay(1000);
  69.                 }        
  70.                
  71.         }
  72.         
  73. }
復(fù)制代碼



接收端:先將兩個LED燈滅了,然后while循環(huán)里配置nrf為接收模式,然后將RxBuf[1]=1(發(fā)送的數(shù)據(jù)是RXBuf[1]=0,這里先置1,保證收到數(shù)據(jù)的正確性)然后就是將收到的數(shù)據(jù) 點亮LED燈。
  1. void main(void)
  2. {
  3.         unsigned char RxBuf[32];
  4.         init_NRF24L01() ;
  5.         led1=1;
  6.         led2=1;
  7.         Delay(1000);

  8.         while(1)
  9.         {
  10.                 SetRX_Mode();
  11.                 RxBuf[1]=1;
  12.                 Delay(1000);
  13.                 nRF24L01_RxPacket(RxBuf);  
  14.                 led1=RxBuf[1];
  15.                 led2=RxBuf[1];
  16.                
  17.         }
  18. }
復(fù)制代碼
最后附有發(fā)送端和接收端的源代碼(還有一個是收發(fā)一體的參考代碼)。自我感覺代碼沒有什么問題吧,如果有的話,希望詳細(xì)指出一下,謝謝了

nrf.rar

96.91 KB, 下載次數(shù): 10

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2019-7-27 07:53 | 只看該作者
我們知道 NRF24L01 的供電電壓是 1.9V~3.6V 不能超過這個范圍,低了不工作,高了可能燒毀 NRF24L01 芯片。我們常用的 STC89C52 的單片機的供電電壓是 5V,我們不能直接給 24L01 這個模塊供電,我們需要使用AMS1117-3.3V 穩(wěn)壓芯片把 5V 轉(zhuǎn)成 3.3V 的電壓為 24L01 模塊供電。

http://www.zg4o1577.cn/bbs/dpj-99624-1.html
回復(fù)

使用道具 舉報

板凳
ID:599634 發(fā)表于 2020-2-17 16:37 | 只看該作者
那個開發(fā)板下面不是有個無線接口的嗎,佛了,也是8腳的你自己看下
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区久久 | 国产精品爱久久久久久久 | 紧缚调教一区二区三区视频 | 欧美视频1区 | 色婷婷亚洲一区二区三区 | 成人午夜电影网 | 欧美成人免费电影 | 狠狠的日| 欧美日韩精品专区 | 成人精品视频在线 | 一区二区日韩 | 国产一区不卡在线观看 | 日韩久久久久 | 视频在线一区二区 | 黄色片视频 | 日本免费网 | 天堂网avav | 亚洲国产成人精品一区二区 | 国产一区二区久久久 | 欧美在线视频一区 | 韩国av一区二区 | 精品久久久久久久久久久久 | 在线免费观看成人 | 毛片com | 欧美综合色 | 国产丝袜一区二区三区免费视频 | 在线观看精品视频网站 | 久久国产精品免费一区二区三区 | 国产97在线视频 | 国产一区中文字幕 | 国产精品一区二区三区在线播放 | 精品视频一区二区三区四区 | 国产精品视频97 | 久久久蜜桃 | av在线一区二区 | 亚洲国产一区视频 | 成人影视网址 | 一级做a爰片性色毛片16 | 琪琪午夜伦伦电影福利片 | 视频在线日韩 | 国产精品国产精品国产专区不片 |