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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4058|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

iic-RAD5820-STC15單片機(jī)驅(qū)動(dòng)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:144279 發(fā)表于 2016-10-24 20:23 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)于RAD5820的C語(yǔ)言程序,iic協(xié)議

資料打包下載:
mic-rda20160823.rar (36.52 KB, 下載次數(shù): 22)

主程序預(yù)覽:
  1. #define         MAIN_Fosc                24000000UL                 //24M
  2. #include        "STC15Fxxxx.H"
  3. #include <i2c.h>

  4. /*I2C interface
  5. sbit SCL = P1^5;
  6. sbit SDA = P1^6;*/

  7. //clk out     STC --> RDA  SUPORT 32.768KHz/12M/24M/13M/26M/19.2/38.4M
  8. sbit RCLK = P5^4;   //RST /SysClk0 /SS_3 /CMP+   RDA5820clk    12M

  9. //HID interface
  10. sbit VOICE = P2^3;  //HZ   1S/ TIME  3S
  11. sbit BACK = P0^4;  //BACK  1S/ VOL-  3S
  12. sbit NEXT = P5^2;  //NEXT  1S/ VOL+  3S


  13. /*i2c
  14. #define max_freq 108000
  15. #define min_freq 87500*/

  16. unsigned char RDA_rest[3]={0x02,0x00,0x02,};        //要寫入RDA5820的數(shù)據(jù)
  17. unsigned char radio_write_data[3]={0x02,0x00,0x02,};
  18. //unsigned char radio_write_data[5]={0x2a,0xb6,0x40,0x11,0x40};        //要寫入TEA5767的數(shù)據(jù)

  19. unsigned char radio_read_data[5];        //TEA5767讀出的狀態(tài)
  20. unsigned int default_pll=0x301d;         //0x29f9;        //默認(rèn)存臺(tái)的pll,95.8MHz
  21. //unsigned int max_pll=0x339b;           //108MHz時(shí)的pll,
  22. //unsigned int min_pll=9000;             //70MHz時(shí)的pll
  23. unsigned long frequency;
  24. unsigned int pll;

  25. /*void delay(unsigned int time)
  26. {
  27. while(time--);
  28. }*/

  29. void delay1ms (unsigned int b)//1ms
  30. {
  31. for(b;b>0;b--)
  32. {unsigned int i;
  33.   for(i=0;i<300;i++)
  34.    {;}
  35. }
  36. }

  37. void radio_write(void)
  38. {
  39.     unsigned char i;
  40.     iic_start();
  41.     iic_write8bit(0x22);        //RDA5820寫地址
  42.     if(!iic_testack())
  43.     {
  44.         for(i=0;i<3;i++)
  45.         {
  46.             iic_write8bit(radio_write_data[i]);
  47.             iic_ack();
  48.         }
  49.     }
  50.     iic_stop();   
  51. }

  52. //由頻率計(jì)算PLL
  53. void get_pll(void)
  54. {
  55.     unsigned char hlsi;
  56.    // unsigned int twpll=0;
  57.     hlsi=radio_write_data[2]&0x10;  //HLSI位
  58.     if (hlsi)
  59.         pll=(unsigned int)((float)((frequency+225)*4)/(float)32.768);    //頻率單位:k
  60.     else
  61.         pll=(unsigned int)((float)((frequency-225)*4)/(float)32.768);    //頻率單位:k
  62. }


  63. //由PLL計(jì)算頻率
  64. void get_frequency(void)
  65. {
  66.     unsigned char hlsi;
  67.     unsigned int npll=0;
  68.     npll=pll;
  69.     hlsi=radio_write_data[2]&0x10;
  70.     if (hlsi)
  71.         frequency=(unsigned long)((float)(npll)*(float)8.192-225);    //頻率單位:KHz
  72.     else
  73.         frequency=(unsigned long)((float)(npll)*(float)8.192+225);    //頻率單位:KHz
  74. }

  75. //讀TEA5767狀態(tài),并轉(zhuǎn)換成頻率
  76. void radio_read(void)
  77. {
  78.     unsigned char i;
  79.     unsigned char temp_l,temp_h;
  80.     pll=0;
  81.     iic_start();
  82.     iic_write8bit(0x23);        //RDA5820讀地址
  83.     if(!iic_testack())
  84.     {
  85.         for(i=0;i<5;i++)
  86.         {
  87.             radio_read_data[i]=iic_read8bit();
  88.             iic_ack();
  89.         }
  90.     }
  91.     iic_stop();
  92.     temp_l=radio_read_data[1];
  93.     temp_h=radio_read_data[0];
  94.     temp_h&=0x3f;
  95.     pll=temp_h*256+temp_l;
  96.     get_frequency();
  97. }


  98. /*
  99. //手動(dòng)設(shè)置頻率,mode=1,+0.1MHz; mode=0:-0.1MHz ,不用考慮TEA5767用于搜臺(tái)的相關(guān)位:SM,SUD
  100. void search(bit mode)
  101. {
  102.     radio_read();        
  103.     if(mode)
  104.     {
  105.         frequency+=10;
  106.         if(frequency>max_freq)
  107.             frequency=min_freq;
  108.     }
  109.     else
  110.     {
  111.         frequency-=10;
  112.         if(frequency<min_freq)
  113.             frequency=max_freq;
  114.     }         
  115.     get_pll();
  116.     radio_write_data[0]=pll/256;
  117.     radio_write_data[1]=pll%256;
  118.     radio_write_data[2]=0x20;
  119.     radio_write_data[3]=0x11;
  120.     radio_write_data[4]=0x00;
  121.     radio_write();
  122. }*/

  123. //自動(dòng)搜臺(tái),mode=1,頻率增加搜臺(tái); mode=0:頻率減小搜臺(tái),不過(guò)這個(gè)好像不能循環(huán)搜臺(tái)
  124. void auto_search(bit mode)
  125. {
  126.     radio_read();
  127.     get_pll();
  128.     if(mode)
  129.         radio_write_data[2]=0xa0;
  130.     else
  131.         radio_write_data[2]=0x20;   
  132.     radio_write_data[0]=pll/256+0x40;
  133.     radio_write_data[1]=pll%256;   
  134.     radio_write_data[2]=0x20;    //...
  135.                 radio_write_data[3]=0x11;
  136.     radio_write_data[4]=0x00;
  137.     radio_write();
  138.     radio_read();
  139.     while(!(radio_read_data[0]&0x80))     //搜臺(tái)成功標(biāo)志
  140.     {
  141.             delay1ms(1000);
  142.         radio_read();
  143.         //disp_freq(9,1);
  144.                
  145.     }   
  146. }

  147. void main()
  148. {
  149.         /*P0M1 = 0;        P0M0 = 0;       
  150.         P1M1 = 0;        P1M0 = 0;       
  151.         P2M1 = 0;        P2M0 = 0;       
  152.         P3M1 = 0;        P3M0 = 0;       
  153.         P4M1 = 0;        P4M0 = 0;       
  154.         P5M1 = 0;        P5M0 = 0;       
  155.         P6M1 = 0;        P6M0 = 0;       
  156.         P7M1 = 0;        P7M0 = 0;         */

  157. radio_write();
  158. while(1)
  159. {
  160.           if(NEXT==0)
  161.           {
  162.            delay1ms(15); //延時(shí)15ms
  163.            if(NEXT==0)
  164.      while(NEXT==0);//等待按鍵釋放
  165.            auto_search(1);
  166.            radio_read();
  167.      
  168.           }

  169.     if(BACK==0)
  170.     {
  171.      delay1ms(15); //延時(shí)15ms
  172.      if(BACK==0)
  173.      while(BACK==0);//等待按鍵釋放
  174.      auto_search(0);
  175.      radio_read();
  176.    
  177.     }

  178.         }
  179. }
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:76817 發(fā)表于 2018-3-6 21:22 | 只看該作者
太贊了,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩二 | 精品久久久久久久 | 国产一区二区在线免费观看 | 精品在线一区二区三区 | 综合久久一区 | 三级免费| 日本欧美国产在线 | aaaaa毛片| 一区二区三区四区不卡 | 久久综合一区 | 欧美精品欧美精品系列 | 欧美在线观看一区 | 91精品国产色综合久久 | 日韩电影在线一区 | 免费看的av | 欧美日韩国产在线观看 | 色综合色综合色综合 | 嫩草网 | 五月免费视频 | 国产精品高潮呻吟 | 久久精品视频9 | 欧美久久一区二区三区 | 99久久免费精品视频 | 美女福利网站 | 久在草| 欧美精品乱码99久久影院 | 日韩免费高清视频 | 国产激情视频在线观看 | 午夜电影网站 | 精品1区 | 亚洲h色 | 色偷偷噜噜噜亚洲男人 | 欧美一区二区三区日韩 | 欧美成人精品二区三区99精品 | 精品国产一区二区三区四区在线 | 日韩欧美一区二区在线播放 | 99精品一区二区三区 | 午夜精品一区二区三区免费视频 | 亚洲一级毛片 | 成人午夜| 中文av网站|