欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2895|回復: 2
收起左側

關于NRF905的收發程序與資料

[復制鏈接]
ID:716983 發表于 2020-5-9 18:42 | 顯示全部樓層 |閱讀模式
關于NRF905的收發
1.    將改程序下載到2個開發板
2.    然后按KEY后發送信息,發送完畢后LDE閃爍,對方受到信息后同樣 閃爍
3.    而且兩個開發板都可以做為發送和接收,一個做為發送,對應另一即為接收,實現及時雙向通信
20200509184103.png 20200509184114.png 20200509184133.png
單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <ABSACC.h>
  4. #include <stdio.h>
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. #define BYTE_BIT0        0x01
  8. #define BYTE_BIT7        0x80
  9. bdata unsigned  char DATA_BUF;
  10. #define DATA7        ((DATA_BUF&BYTE_BIT7) != 0)
  11. #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  12. sbit        flag        =DATA_BUF^7;
  13. sbit        flag1        =DATA_BUF^0;
  14. #define TxRxBuf_Len 4
  15. unsigned char TxRxBuf[TxRxBuf_Len]={0x29,0x30,0x31,0x32,};
  16. code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
  17. char tf;
  18. sbit        TXEN=P1^4;

  19. sbit        PWR=P2^4;
  20. sbit    LEDnrf905=P2^7;
  21. sbit        CD=P2^5;
  22. sbit        AM=P2^6;
  23. sbit        MISO=P1^6;
  24. sbit        MOSI=P1^7;
  25. sbit        SCK=P1^5;
  26. sbit        CSN=P1^4;
  27. sbit        TRX_CE=P3^2;
  28. sbit        DR=P3^3;

  29. sbit        KEY=P3^4;
  30. #define WC                0x00
  31. #define RC                0x10
  32. #define WTP                0x20
  33. #define RTP                0x21
  34. #define WTA                0x22
  35. #define RTA                0x23
  36. #define RRP                0x24
  37. //------------------------------------------------NRF905寄存器配置------------------------------------------------
  38. unsigned char idata RFConf[11]=
  39. {
  40.   0x00,                             //配置命令//
  41.   0x4c,                             //CH_NO,配置頻段在430MHZ
  42.   0x0c,                             //輸出功率為10db,不重發,節電為正常模式
  43.   0x44,                             //地址寬度設置,為4字節
  44.   0x04,0x04,                        //接收發送有效數據長度為4字節
  45.   0xCC,0xCC,0xCC,0xCC,              //接收地址
  46.   0x58,                              //CRC充許,8位CRC校驗,外部時鐘信號不使能,16M晶振
  47. };
  48. //================================================延時===========================================================
  49. void nrf905_Delay(int n)
  50. {
  51.         uint i;
  52.         while(n--)
  53.         for(i=0;i<80;i++);
  54. }
  55. //=================================================SPI讀函數=======================================================
  56. unsigned char SpiRead(void)
  57. {
  58.         unsigned char j;
  59.         for (j=0;j<8;j++)
  60.         {
  61.         DATA_BUF=DATA_BUF<<1;
  62.                 SCK=1;
  63.                 if (MISO)        //讀取最高位,保存至最末尾,通過左移位完成整個字節
  64.                 {
  65.                         DATA_BUF|=BYTE_BIT0;
  66.                 }
  67.                 else
  68.                 {
  69.                         DATA_BUF&=~BYTE_BIT0;
  70.                 }
  71.                 SCK=0;
  72.          }
  73.          return DATA_BUF;
  74. }
  75. void SpiWrite(unsigned char send)
  76. {
  77.         unsigned char i;
  78.         DATA_BUF=send;
  79.         for (i=0;i<8;i++)
  80.         {
  81.                 if (DATA7)        //總是發送最高位
  82.                 {
  83.                         MOSI=1;
  84.                 }
  85.                 else
  86.                 {
  87.                         MOSI=0;
  88.                 }
  89.                 SCK=1;
  90.                 DATA_BUF=DATA_BUF<<1;
  91.                 SCK=0;
  92.         }
  93. }
  94. //------------------------------------------------------初始化nRF905---------------------------------------------
  95. void nRF905Init(void)
  96. {
  97.     CSN=1;                                                
  98.         SCK=0;                                                
  99.         DR=1;                                                
  100.         AM=1;                                                
  101.         CD=1;                                                
  102.         PWR=1;                                       
  103.         TRX_CE=0;                                       
  104.         TXEN=0;                                       
  105. }
  106. //-----------------------------------------------------初始化寄存器-----------------------------------------------
  107. void Config905(void)
  108. {
  109.         uchar i;
  110.         CSN=0;                                
  111.         for (i=0;i<11;i++)    // Write configration words  寫放配置字
  112.         {
  113.            SpiWrite(RFConf[i]);
  114.         }
  115.         CSN=1;                                        // Disable Spi
  116. }
  117. //-----------------------------------------------------發送數據打包---------------------------------------------------
  118. void TxPacket(uchar *TxRxBuf)
  119. {
  120.         uchar i;
  121.         CSN=0;
  122.         SpiWrite(WTP);                                // 寫SPI指令
  123.         for (i=0;i<4;i++)
  124.         {
  125.                 SpiWrite(TxRxBuf[i]);        // 寫32位傳送指令
  126.         }
  127.         CSN=1;
  128.         nrf905_Delay(1);                        
  129.         CSN=0;                                                
  130.         SpiWrite(WTA);                                //寫SPI地址
  131.         for (i=0;i<4;i++)                        // 寫入與對方地址一樣的地址
  132.         {
  133.                 SpiWrite(TxAddress[i]);
  134.         }
  135.         CSN=1;                                                
  136.         TRX_CE=1;                                       
  137.         nrf905_Delay(1);        
  138.         TRX_CE=0;                                
  139. }
  140. //----------------------------------------------設置發送初始狀態---------------------------------------------
  141. void SetTxMode(void)
  142. {
  143.         TRX_CE=0;
  144.         TXEN=1;
  145.         nrf905_Delay(1);         //延時大于650us發送                                
  146. }
  147. //-----------------------------------------------設置接收初始化---------------------------------------------------
  148. void SetRxMode(void)
  149. {
  150.         TXEN=0;
  151.         TRX_CE=1;
  152.         nrf905_Delay(1);                                         
  153. }
  154. void RxPacket(void)                                                
  155. {
  156.         uchar i;
  157.     nrf905_Delay(100);
  158.     TRX_CE=0;
  159.         CSN=0;                                                // Spi enable for write a spi command
  160.     nrf905_Delay(1);
  161.         SpiWrite(RRP);
  162.         for (i = 0 ;i < 4 ;i++)
  163.         {
  164.                 TxRxBuf[i]=SpiRead();                // Read data and save to buffer      
  165.         }
  166.         CSN=1;
  167.     nrf905_Delay(10);
  168.         TRX_CE=1;                                                        
  169. }
  170. //--------------------------------------------------------數據接收------------------------------------------------
  171. void  RX(void)
  172. {
  173.           SetRxMode();        //  while (CheckDR()==0);  為了實現雙向通信,就不能一直處于接收等待狀態,所以注釋掉
  174.                   nrf905_Delay(10);
  175.                     RxPacket();
  176.                   if(TxRxBuf[0]==0x29)
  177.                   {
  178.                                   LEDnrf905=0;
  179.                             nrf905_Delay(300);
  180.                                 LEDnrf905=1;
  181.                             nrf905_Delay(300);//接收到數據 后閃爍
  182.                   }
  183. }
  184. //-----------------------------------------------------------------------------------------------------------------
  185. void main(void)
  186. {
  187.         nRF905Init();
  188.         Config905();
  189.         LEDnrf905=1;
  190.         while(1)
  191.         {
  192.                 RX();
  193.                 if(KEY==0 )
  194.                 {        
  195.                         while(KEY==0);
  196.                         tf=1 ;
  197.                         TxRxBuf[0]=0x29;
  198.                 }
  199.                 if(tf==1)
  200.                 {
  201.                         SetTxMode();
  202.                         TxPacket(TxRxBuf);        // 發送命令數據
  203.                         LEDnrf905=0;
  204.                         nrf905_Delay(300);
  205.                         LEDnrf905=1;
  206.                         nrf905_Delay(300);                        //發送后LED閃爍
  207.                         tf=0;        
  208.                 }        
  209.         }
  210. }
復制代碼

所有資料51hei提供下載:
RF905-無線調試板開發包.7z (3.73 MB, 下載次數: 38)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:747922 發表于 2020-5-9 20:35 | 顯示全部樓層
1.01^365 = 1.222
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:425494 發表于 2021-3-19 08:18 | 顯示全部樓層
想試一下,不過我沒開發板
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表