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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7559|回復: 5
收起左側(cè)

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

[復制鏈接]
ID:93248 發(fā)表于 2018-5-16 15:50 | 顯示全部樓層 |閱讀模式
官方提供的LT8910驅(qū)動程序,需要的朋友拿去參考參考
0.jpg

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

包括射頻前端和數(shù)字基帶的單芯片解決方案:
※ 支持跳頻
※ 支持 SPI 和 I2C 接口
※ 內(nèi)置 auto_ack 功能
※ 數(shù)據(jù)率 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;                                                           //接收次數(shù)累加器
  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);                                                        //寫入新數(shù)據(jù)后 光標右移一位
  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驅(qū)動程序.rar (142.91 KB, 下載次數(shù): 143)




回復

使用道具 舉報

ID:498382 發(fā)表于 2019-3-26 01:42 | 顯示全部樓層
學習了!謝謝分享。!
回復

使用道具 舉報

ID:544323 發(fā)表于 2019-5-22 01:01 | 顯示全部樓層
學習了!謝謝分享。。
回復

使用道具 舉報

ID:111843 發(fā)表于 2019-12-21 23:41 | 顯示全部樓層
不錯,感謝分享!
回復

使用道具 舉報

ID:524433 發(fā)表于 2020-5-14 09:42 | 顯示全部樓層
下載學習
回復

使用道具 舉報

ID:791040 發(fā)表于 2020-6-27 16:08 | 顯示全部樓層
感謝分享!下載學習
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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