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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7526|回復: 5
收起左側

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

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

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)




回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧洲免费视频 | 大吊一区二区 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 久久99精品久久久97夜夜嗨 | h视频在线免费观看 | 欧美黄色网 | 成人精品一区二区户外勾搭野战 | 欧美精品一区三区 | 日韩国产欧美视频 | 亚洲精彩视频在线观看 | 超碰免费在线观看 | 欧美成视频在线观看 | 欧美精品v国产精品v日韩精品 | 毛片在线看片 | 国产高清一二三区 | 日韩一区二区三区在线视频 | 欧美精品91爱爱 | 亚洲精品9999 | a黄视频| 四虎影院在线播放 | 狠狠干2020| 中文字幕免费视频 | 夜夜爽99久久国产综合精品女不卡 | 国产精品电影在线观看 | 欧美黄色片在线观看 | 日韩欧美视频 | 精品国产91乱码一区二区三区 | 男女视频免费 | 天天躁天天操 | av一级在线观看 | 久久精品网 | 九九九视频在线 | 亚洲欧美成人影院 | 九色综合网 | 欧美视频精品 | 操人视频在线观看 | 日韩av一区二区在线观看 | 日韩一区二区三区在线观看 | 亚洲精品久久久久久久久久久久久 | 日韩在线看片 | 久久毛片 |