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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用LT8920做2.4G無線通信原理圖與51單片機程序

  [復制鏈接]
跳轉到指定樓層
樓主
用LT8920-做2.4G的電路原理圖如下:



單片機源程序如下:
  1. /**********************************
  2. *LT89XX測試DEMO
  3. *硬件平臺:YBDZ_ERF_DEMO測試實驗板
  4. *測試描述:兩塊測試實驗板分別搭載一個LT89XX無線模塊
  5. 當按其中任意一個測試板的按鍵例如KEY1,那么該測試板會通過無線模塊將鍵值發送出去,另一測試板收到鍵值數據后,
  6. 點亮對應的LED(KEY1對應LED1KEY2對應LED2)并且返回應答信號,
  7. 發送板在收到接收板返回的應答信號后會點亮該板上和按鍵對應的LED,這樣表示通信成功。
  8. 備注:點亮的LED延時3秒后熄滅,測試需要兩塊測試板燒寫同樣的程序,不管按下那塊板上的按鍵,效果都是一樣的,不區分發射板和接收板,測試程序中包含發射,接收,按鍵掃描,和LED驅動。
  9. *MCU:STC15W408AS
  10. *時鐘:6MHZ
  11. *出處:一步電子工作室
  12. ***********************************/
  13. #include <intrins.h>
  14. #include "LT89XX_DRV.h"
  15. #include "Key_Drive.h"
  16. #include "STC_NEW_8051.H"

  17. #define TX_DAT1 0x01         //發送數據1                        
  18. #define TX_DAT2 0x02     //發送數據2
  19. #define INT_RX  0x03     //初始化接收模式
  20. #define RX_MOD  0x00     //常規接收模式


  21. sbit LED1= P5^4;            
  22. sbit LED2= P5^5;

  23.                           
  24. #define LED1_ON()  LED1=0
  25. #define LED2_ON()  LED2=0
  26. #define LED1_OFF() LED1=1
  27. #define LED2_OFF() LED2=1

  28. unsigned char RBUF[32];

  29. extern unsigned char time_5ms_flag;

  30. void main(void)
  31. {
  32.         //uchar tx_lcd_flag = 0;
  33.         unsigned char index = 0;           //channel indicator

  34.         unsigned char highReg = 0;
  35.         unsigned char lowReg  = 0;

  36.         unsigned char keyvalue = 0;                                          //key return value

  37.         unsigned char index_state = INT_RX;           //working manner index is initiated.

  38.     unsigned char i,j;

  39.         unsigned short count;

  40.    // Init_Timer(); //初始化定時器和延時器
  41.     Delay_ms(10);
  42.         LT8900_Init();
  43.         #ifdef LT8910
  44.         //8910設置成62.5kbps Reg44 地址上配置 1000H, Reg45 配置 0552H, 是 62.5Kbps
  45.         SPI_WriteReg(44, 0x10, 0x00);
  46.         SPI_WriteReg(45, 0x05, 0x52);        
  47.         #endif
  48.         //-----------------
  49.         //讀出寄存器的值檢查硬件讀寫時序是否正確
  50.         SPI_ReadReg(40);
  51.         if (RegH==0x44 && RegL==0x02)
  52.         {
  53.                 LED1_ON();
  54.                 LED2_ON();
  55.                 Delay_ms(200);
  56.                 LED1_OFF();
  57.                 LED2_OFF();
  58.         }
  59.     //-----------------
  60.     count=0;
  61.     //-----------------
  62.         while (1)
  63.         {
  64.             if(time_5ms_flag)
  65.                     {
  66.                     Get_KeyValue(&keyvalue);         //cost 50us
  67.                     time_5ms_flag=FALSE;
  68.                         
  69.                         if(count<600)
  70.                count++;
  71.                         if(count==600)
  72.                                 {
  73.                                 LED2_OFF();
  74.                                 LED1_OFF();                                
  75.                                 }
  76.                     }
  77.                 switch(keyvalue)
  78.                 {
  79.                     case (KEY1|KEY_PRESS):
  80.             index_state=TX_DAT1;
  81.                         break;

  82.                         case (KEY2|KEY_PRESS):
  83.             index_state=TX_DAT2;
  84.                         break;

  85.                         default :  break;
  86.                 }


  87.                 switch(index_state)
  88.                 {
  89.                     case INT_RX:
  90.             //設置成數據接收模式
  91.                   SPI_WriteReg(52, 0x80, 0x80);
  92.                 SPI_WriteReg(7, 0x00, 0x80 + 0x20);        
  93.                         index_state=RX_MOD;
  94.                         break;
  95.                         
  96.             case RX_MOD:
  97.                         //檢查是否接收到數據
  98.                     if(PKT == 1)
  99.                         {
  100.                     i=0;
  101.                     SPI_ReadReg(50);
  102.                 j=RegH;//讀取包長度
  103.                     while(i<j)
  104.                          {
  105.                          //讀取數據
  106.                          SPI_ReadReg(50);
  107.                          RBUF[i++]=RegH;
  108.                          RBUF[i++]=RegL;
  109.                          if(i==32)
  110.                                  break;
  111.                          }   
  112.                     //一旦發生錯誤,寄存器 Reg48 bit15 位 CRC_ERROR 將被自動置 1,在下次開始 RX 或 TX 時它將被清除。
  113.             //Test CRC
  114.                     SPI_ReadReg(48);
  115.                     if((RegH&0x80)==0)
  116.                          {
  117.                          //判斷數據點亮燈
  118.                          if(RBUF[0]==1)
  119.                                  {
  120.                                  LED1_ON();
  121.                                 count=0;
  122.                                  }
  123.                          else if(RBUF[0]==2)
  124.                                  {
  125.                                  LED2_ON();
  126.                                 count=0;
  127.                                  }
  128.                          }
  129.                         //再次初始化為接收模式
  130.                         index_state=INT_RX;
  131.                         //LED1_OFF();
  132.                     }
  133.                         break;

  134.                         case TX_DAT1:
  135.                     //將數據發送出去
  136.                    SPI_WriteReg(52, 0x80, 0x80);
  137.                    //i=0;
  138.                    //寫入長度 長度包含長度字節本身
  139.                    SPI_WriteReg(50, 2,0);
  140.            //寫入數據
  141.                    SPI_WriteReg(50, 1,0);
  142.            //開始發送
  143.                    SPI_WriteReg(7, 0x01, 0x20);
  144.                    while (PKT== 0); //等待發送完成
  145.            //判斷是否收到對方自動應答信號,REG52<13:8>應為0
  146.            SPI_ReadReg(52);
  147.                    if((RegH& 0x3F)==0)//如果收到應答信號點亮本地對應的LED
  148.                            {
  149.                               LED1_ON();
  150.                            count=0;
  151.                            }
  152.                    //發送完成初始化為接收模式
  153.                    index_state=INT_RX;
  154.                         break;

  155.                         case TX_DAT2:
  156.                     //將數據發送出去
  157.                    SPI_WriteReg(52, 0x80, 0x80);
  158.                    i=0;
  159.                    //寫入長度 長度包含長度字節本身
  160. ……………………

  161. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載:
XY-WAB基于51單片機的程序與原理圖.rar (71.77 KB, 下載次數: 409)


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

使用道具 舉報

沙發
ID:229552 發表于 2018-1-25 17:55 | 只看該作者
這款芯片怎么操作寄存器?數據手冊上說的好模糊
回復

使用道具 舉報

板凳
ID:389990 發表于 2018-8-25 17:11 | 只看該作者
剛注冊,我要下載啊
回復

使用道具 舉報

地板
ID:293106 發表于 2018-9-4 09:00 | 只看該作者
謝謝分享,看看是怎么驅動的
回復

使用道具 舉報

5#
ID:285897 發表于 2018-9-7 20:57 | 只看該作者
謝謝分享
回復

使用道具 舉報

6#
ID:218002 發表于 2018-9-17 13:44 | 只看該作者
我一直讀寄存器不成功
回復

使用道具 舉報

7#
ID:42131 發表于 2018-11-2 14:39 | 只看該作者
看看啊  什么好東西                 
回復

使用道具 舉報

8#
ID:301968 發表于 2018-12-7 17:04 | 只看該作者
樓主的原理圖怎么看?
回復

使用道具 舉報

9#
ID:106167 發表于 2018-12-11 22:09 | 只看該作者
好東西
回復

使用道具 舉報

10#
ID:476527 發表于 2019-2-15 08:39 | 只看該作者
樓主好樣的,資源收下了
回復

使用道具 舉報

11#
ID:487132 發表于 2019-3-8 21:35 | 只看該作者
原理圖怎么看呀?
回復

使用道具 舉報

12#
ID:498382 發表于 2019-3-26 02:04 | 只看該作者
學習了!謝謝分享!!!
回復

使用道具 舉報

13#
ID:544323 發表于 2019-5-22 00:38 | 只看該作者
學習了!謝謝分享!!!
回復

使用道具 舉報

14#
ID:496733 發表于 2019-7-10 20:29 | 只看該作者
周亞青 發表于 2019-3-8 21:35
原理圖怎么看呀?

怕是假的原理圖哦
回復

使用道具 舉報

15#
ID:585201 發表于 2019-10-9 15:37 | 只看該作者
自己調了幾個小時接收一直接收不了數據,參考一下樓主的
回復

使用道具 舉報

16#
ID:633767 發表于 2019-11-1 21:28 | 只看該作者
調接收調了好久都沒成功,參考下,希望能解決掉
回復

使用道具 舉報

17#
ID:669348 發表于 2019-12-21 10:35 | 只看該作者
初始化后讀取驗證一直不成功
回復

使用道具 舉報

18#
ID:241550 發表于 2020-2-28 21:27 | 只看該作者
親,我修改程序后用STC89C52RC測試,為什么不能運行呢
回復

使用道具 舉報

19#
ID:706969 發表于 2020-3-12 13:48 | 只看該作者
苯寶寶 發表于 2020-2-28 21:27
親,我修改程序后用STC89C52RC測試,為什么不能運行呢

是不是IO口配置有問題
回復

使用道具 舉報

20#
ID:241550 發表于 2020-3-12 23:23 | 只看該作者
hufanli 發表于 2020-3-12 13:48
是不是IO口配置有問題

io根據自己的情況調整過了,元件和程序中相同,晶振參數也調了,焊接也是用防靜電烙鐵焊的
回復

使用道具 舉報

21#
ID:75987 發表于 2020-3-31 11:33 | 只看該作者
地址怎么配置啊
回復

使用道具 舉報

22#
ID:815841 發表于 2021-6-20 13:09 | 只看該作者
可以用嗎?
回復

使用道具 舉報

23#
ID:301968 發表于 2021-7-22 15:20 | 只看該作者
樓主,你這個是不是有問題?
回復

使用道具 舉報

24#
ID:1092502 發表于 2023-9-2 22:32 | 只看該作者
找一晚,找不到資料
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久久 | 国产亚洲精品久久午夜玫瑰园 | 日韩三区在线观看 | 国产精品呻吟久久av凹凸 | 一区二区三区播放 | 欧美一区二区三区久久精品视 | 久久av影院 | 欧美日韩一区二区在线观看 | 日韩一级免费观看 | 久久亚洲一区二区 | 欧美一区 | 亚洲夜夜爽 | 在线免费观看视频你懂的 | 91在线精品视频 | 久久综合久久久 | 在线视频99 | 国产在线精品一区 | 久久综合狠狠综合久久综合88 | 欧美一级片在线看 | 亚洲国产成人久久综合一区,久久久国产99 | 中文字幕第一页在线 | 91精品国产色综合久久不卡98口 | 九九久久久| 激情六月丁香 | 亚洲一区 中文字幕 | 欧美日韩国产一区二区三区 | 亚洲精选一区二区 | 亚洲视频一区 | 国产精品大片在线观看 | www.99久久.com| 日韩一区二区三区在线 | 夜夜久久 | 一级a性色生活片久久毛片波多野 | 国产精品视频一二三区 | 我想看一级黄色毛片 | 久久蜜桃av一区二区天堂 | av资源中文在线 | 欧美a级网站 | 毛片网站在线观看视频 | 日韩有码在线观看 | 欧美精品欧美精品系列 |