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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2488|回復: 2
打印 上一主題 下一主題
收起左側

關于NRF905的收發(fā)程序與資料

[復制鏈接]
跳轉到指定樓層
樓主
ID:716983 發(fā)表于 2020-5-9 18:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關于NRF905的收發(fā)
1.    將改程序下載到2個開發(fā)板
2.    然后按KEY后發(fā)送信息,發(fā)送完畢后LDE閃爍,對方受到信息后同樣 閃爍
3.    而且兩個開發(fā)板都可以做為發(fā)送和接收,一個做為發(fā)送,對應另一即為接收,實現(xiàn)及時雙向通信

單片機源程序如下:
  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,不重發(fā),節(jié)電為正常模式
  43.   0x44,                             //地址寬度設置,為4字節(jié)
  44.   0x04,0x04,                        //接收發(fā)送有效數(shù)據(jù)長度為4字節(jié)
  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讀函數(shù)=======================================================
  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)        //讀取最高位,保存至最末尾,通過左移位完成整個字節(jié)
  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)        //總是發(fā)送最高位
  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. //-----------------------------------------------------發(fā)送數(shù)據(jù)打包---------------------------------------------------
  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. //----------------------------------------------設置發(fā)送初始狀態(tài)---------------------------------------------
  141. void SetTxMode(void)
  142. {
  143.         TRX_CE=0;
  144.         TXEN=1;
  145.         nrf905_Delay(1);         //延時大于650us發(fā)送                                
  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. //--------------------------------------------------------數(shù)據(jù)接收------------------------------------------------
  171. void  RX(void)
  172. {
  173.           SetRxMode();        //  while (CheckDR()==0);  為了實現(xiàn)雙向通信,就不能一直處于接收等待狀態(tài),所以注釋掉
  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);//接收到數(shù)據(jù) 后閃爍
  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);        // 發(fā)送命令數(shù)據(jù)
  203.                         LEDnrf905=0;
  204.                         nrf905_Delay(300);
  205.                         LEDnrf905=1;
  206.                         nrf905_Delay(300);                        //發(fā)送后LED閃爍
  207.                         tf=0;        
  208.                 }        
  209.         }
  210. }
復制代碼

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

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:747922 發(fā)表于 2020-5-9 20:35 | 只看該作者
1.01^365 = 1.222
回復

使用道具 舉報

板凳
ID:425494 發(fā)表于 2021-3-19 08:18 | 只看該作者
想試一下,不過我沒開發(fā)板
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲第一在线 | 欧美日韩一二三区 | 男人天堂网av | 亚洲二区视频 | 成人午夜毛片 | 久久亚洲一区二区三区四区 | 国产黄色在线 | 在线免费观看色 | 天天干com| 国产在线精品一区二区 | 中文字幕国产精品 | 久久亚洲一区二区三区四区 | 中文字幕一区二区三区日韩精品 | 91av视频在线 | 国产精品国产精品 | 欧美日韩综合 | 日本在线小视频 | 欧美国产视频 | 久久午夜剧场 | 久久久久国产成人精品亚洲午夜 | 美女人人操 | 在线看一区二区 | 一区二区三区视频在线观看 | 91精品一区二区三区久久久久久 | 国产高潮好爽受不了了夜夜做 | 91婷婷韩国欧美一区二区 | 亚洲午夜精品视频 | 亚洲天堂999 | 国产一区在线免费 | 91精品国产一区二区三区蜜臀 | 久久久久国产一级毛片高清网站 | 国产一区二区三区四区三区四 | 国产视频久久 | 99亚洲精品 | 在线一区二区三区 | 亚洲天堂精品久久 | 亚洲一区二区在线电影 | 欧美一级欧美三级在线观看 | 最新中文字幕在线 | 国产免费高清 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 |