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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LT8910驅動程序(無線發送和接受源碼)

[復制鏈接]
跳轉到指定樓層
樓主
官方提供的LT8910驅動程序,需要的朋友拿去參考參考


LT8920 是一款低成本,高集成度的 2.4GHZ 的無線收發芯片。是之前LT8910的升級版!
外圍射頻電路簡單,直接接天線

包括射頻前端和數字基帶的單芯片解決方案:
※ 支持跳頻
※ 支持 SPI 和 I2C 接口
※ 內置 auto_ack 功能
※ 數據率 1Mbps, 250Kbps, 125Kbps, 62.5Kbps
※ 極低功耗(1uA)
※ 支持信號能量檢測
※ 單芯片傳輸距離 200 米
※ TSSOP16 的封裝

單片機源程序如下:
  1. #include "intrins.h"
  2. #include "IIC_Drive.h"
  3. #include "LCD_Drive.h"
  4. #include "Interrupt.h"
  5. #include "SPI.h"

  6. #define SPI_TEST

  7. #define RX_MODE     0x80
  8. #define SLEEP_MODE  0x40
  9. #define AFTER_SLEEP 0x20


  10. unsigned char *p_rx_sum;
  11. unsigned char working_state = RX_MODE;              // working state

  12. unsigned char rssivalue = 0;

  13. unsigned char channel_index[79] = {0x00, 0x01, 0x02,
  14.                                                                    0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,                           //2402, 2412, 2422, 2432
  15.                                                                    0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
  16.                                                                    0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
  17.                                                                    0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
  18.                                                                    0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34,
  19.                                                                    0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
  20.                                                                    0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
  21.                                                                    0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f};

  22. void main(void)
  23. {
  24.         unsigned char rx_sum = 0;                                                           //接收次數累加器
  25.         unsigned char highReg = 0;
  26.         unsigned char lowReg  = 0;

  27.         unsigned char channelvalue = 0;
  28.        

  29.         p_rx_sum = &rx_sum;                     //指向累加器的指針

  30.         LCD_Initialize();
  31.         LCD_WriteCommand(0x80);
  32.         LCD_WriteDat(0xf6);                                  //''
  33.         LCD_WriteCommand(0x8c);
  34.         LCD_WriteDat(0x43);                                                //'C'
  35.         LCD_WriteDat(0x48);                                                //'H'
  36.         LCD_WriteDat(bcd_table[(channelvalue+2)/10]);
  37.         LCD_WriteDat(bcd_table[(channelvalue+2)%10]);

  38.         LCD_WriteCommand(0xc0);
  39.         LCD_WriteDat(0x72);                                          //'r'
  40.         LCD_WriteDat(0x73);                                           //'s'
  41.         LCD_WriteDat(0x73);                                           //'s'
  42.         LCD_WriteDat(0x69);                                          //'i'           means rssi
  43.         LCD_WriteDat(bcd_table[rssivalue/10]);
  44.         LCD_WriteDat(bcd_table[rssivalue%10]);

  45.         Timer0_Init();
  46.         //EX0_Init();
  47.         EA = 1;

  48. #ifdef SPI_TEST
  49.         RST  = 0;
  50.         Delay_ms(2);
  51.         RST  = 1;
  52.         Delay_ms(5);
  53.         PKT = 1;
  54.         LT8900_Init();
  55.         SPI_ReadReg(4);
  56.         if (RegH==0x9c && RegL==0xc9)
  57.         {
  58.                 LED_SPI = 0;
  59.         }

  60.         while (1)
  61.         {
  62.                 switch(working_state)
  63.                 {
  64.                 case RX_MODE:
  65.                                         //rssivalue = 0;
  66.                                         SPI_WriteReg( 7, 0x00, 0x00);
  67.                                         SPI_WriteReg(52, 0x80, 0x80);
  68.                                         EX0 = 0;
  69.                                         SPI_WriteReg( 7, 0x00, 0x80+channelvalue);                          //TX Enable & channel set to 2480M
  70.                                         EX0 = 1;
  71.                                 //        while(PKT);
  72.                                         do
  73.                                         {
  74.                                                 SPI_ReadReg(48);
  75.                                         }
  76.                                         while(RegL & 0x40);

  77.                                         SPI_WriteReg( 7, 0x00, 0x00);                          //goto idle mode
  78.                                         SPI_ReadReg(48);
  79.                                         if(!(RegH & 0x80))
  80.                                         {
  81.                                                 LED_RF = ~LED_RF;
  82.                                                 SPI_ReadReg(50);
  83.                                                 if (RegH==0x03 && RegL==0xce)
  84.                                                         rx_sum++;                                                          //RX 累加器加一
  85.                                                 if (RegH==0x01)
  86.                                                 {
  87.                                                                
  88.                                                         channelvalue = RegL;                  //switch to channel RegL
  89.                                                        
  90.                                                         LCD_WriteCommand(0x8e);
  91.                                                         LCD_WriteDat(bcd_table[(channelvalue+2)/10]);
  92.                                                         LCD_WriteDat(bcd_table[(channelvalue+2)%10]);
  93.                                                 }

  94.                                                 SPI_ReadReg(6);                                                                //get rssi_value
  95.                                                 RegH &= 0xfc;
  96.                                                 rssivalue = RegH>>2;
  97.                                                 LCD_WriteCommand(0xc4);
  98.                                                 LCD_WriteDat(bcd_table[rssivalue/10]);
  99.                                                 LCD_WriteDat(bcd_table[rssivalue%10]);
  100.                                                 rssivalue = 0;       
  101.                                         }
  102.                                         break;
  103.                                        

  104.                 case SLEEP_MODE:
  105.                                                 SPI_WriteReg(35, 0x43, 0x00);
  106.                                                 SPI_SS = 1;
  107.                                                 LCD_WriteCommand(0xc0);
  108.                                                 LCD_WriteDat(0x7a);
  109.                                                 working_state = AFTER_SLEEP;
  110.                                                 break;
  111.                 case AFTER_SLEEP:
  112.                                                 _nop_();
  113.                                                 break;
  114.                 default : break;
  115.                                                
  116.                 }       
  117.         }

  118. #else
  119.         MOSI = 0;               // A4 =0
  120.         RST  = 0;
  121.         Delay_ms(2);
  122.         RST  = 1;
  123.         Delay_ms(5);
  124.         PKT = 1;
  125.         RF_Init();
  126.         IIC_ReadReg( 4, &highReg, &lowReg);
  127.         if (highReg==0x9c && lowReg==0xc9)
  128.         {
  129.                 LED_IIC = 0;
  130.         }

  131.         while (1)
  132.         {
  133.                 IIC_WriteReg(52, 0x80, 0x80);
  134.                 IIC_WriteReg( 7, 0x00, 0xb0);                          //TX Enable & channel set to 2450M
  135.                 /*while(PKT);*/
  136.                 do
  137.                 {
  138.                         SPI_ReadReg(48);
  139.                 }
  140.                 while(RegL & 0x40);

  141.                 IIC_WriteReg( 7, 0x00, 0x00);                          //goto idle mode
  142.                 IIC_ReadReg(48, &highReg, &lowReg);
  143.                 if(!(highReg & 0x80))
  144.                 {
  145.                         rx_sum++;                                                          //RX 累加器加一
  146.                         LED_RF = ~LED_RF;
  147.                 }
  148.          }
  149.          
  150. #endif


  151.        
  152.         /*
  153.         LCD_WriteCommand(0x80);
  154.         LCD_WriteDat(0x32);                                  //'2'
  155.         LCD_WriteDat(0x34);                                  //'4'
  156.         LCD_WriteDat(0x35);                                  //'5'
  157.         LCD_WriteDat(0x30);                                  //'0'
  158.         LCD_WriteDat(0xa5);                                  //'.'
  159.         */

  160.        

  161.        

  162.                 /*
  163.                 if(rx_lcd_flag == 50)
  164.                 {
  165.                         LCD_WriteCommand(0x04);                                        // turn left
  166.                          LCD_WriteCommand(0x8f);
  167.                          LCD_WriteDat(0x7f);                                   //'<'
  168.                 }
  169.                 if(rx_lcd_flag == 100)
  170.                 {
  171.                          LCD_WriteDat(0x7f);
  172.                 }
  173.                 if(rx_lcd_flag == 150)
  174.                 {
  175.                          LCD_WriteDat(0x7f);
  176.                 }
  177.                 if(rx_lcd_flag == 200)
  178.                 {
  179.                          LCD_WriteDat(0x7f);
  180.                 }
  181.                 if(rx_lcd_flag >= 250)
  182.                 {
  183.                          rx_lcd_flag = 0;
  184.                         LCD_WriteCommand(0x06);                                                        //寫入新數據后 光標右移一位
  185.                         LCD_WriteDat(0xa0);
  186.                         LCD_WriteDat(0xa0);
  187.                         LCD_WriteDat(0xa0);
  188.                         LCD_WriteDat(0xa0);
  189.                         //LCD_WriteCommand(0x06);
  190.                 }
  191.                 */
  192.        
  193. }
  194. ……………………

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

所有資料51hei提供下載:
LT8910驅動程序.rar (142.91 KB, 下載次數: 143)




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

使用道具 舉報

沙發
ID:498382 發表于 2019-3-26 01:42 | 只看該作者
學習了!謝謝分享!!!
回復

使用道具 舉報

板凳
ID:544323 發表于 2019-5-22 01:01 | 只看該作者
學習了!謝謝分享!!!
回復

使用道具 舉報

地板
ID:111843 發表于 2019-12-21 23:41 | 只看該作者
不錯,感謝分享!
回復

使用道具 舉報

5#
ID:524433 發表于 2020-5-14 09:42 | 只看該作者
下載學習
回復

使用道具 舉報

6#
ID:791040 發表于 2020-6-27 16:08 | 只看該作者
感謝分享!下載學習
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费一区二区 | 精品国产91 | 国产成人一区二区三区精 | 九九热视频这里只有精品 | 国产日韩欧美在线播放 | 亚洲国产精品99久久久久久久久 | 日韩国产在线观看 | 午夜影院在线观看 | 欧美性受xxxx白人性爽 | 国产精品久久久亚洲 | 精品一二三区 | 国产高清在线视频 | 成人一区二区视频 | 久久久91 | 国产在线高清 | 成人三级在线播放 | 色久五月| 亚洲精品国产电影 | 美女一级黄 | 欧美久久久网站 | www.色午夜.com | 精产国产伦理一二三区 | 韩国毛片一区二区三区 | 久热久热 | 久草热播 | 精品一二三区在线观看 | 又爽又黄axxx片免费观看 | 欧美二区三区 | 国产精品国产精品国产专区不卡 | 国产精品99一区二区 | 国产精品一区2区 | 欧美日韩中文在线 | 亚洲天堂免费 | 中文字幕在线观看一区 | 欧美色综合 | 中文字幕亚洲视频 | 欧美日韩高清 | 最新日韩av | 亚洲欧美一区二区三区情侣bbw | 亚洲国产欧美在线 | 久草视频2 |