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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 22078|回復(fù): 13
收起左側(cè)

學(xué)51單片機(jī)做了一個(gè)RDA5807M的FM收音機(jī)-但雜音大

  [復(fù)制鏈接]
ID:192216 發(fā)表于 2017-6-16 14:50 | 顯示全部樓層 |閱讀模式
學(xué)51單片機(jī)做了一個(gè)RDA5807M的FM收音機(jī)-但雜音大,不知道是哪問(wèn)題,雜音真的很大,是不是程序出問(wèn)題了?程序是在網(wǎng)絡(luò)上下載的,電路裝好后就可以有聲音了。

20170606_210755.jpg 20170606_210806.jpg 20170606_210847.jpg 20170616_142814.jpg 20170616_142825.jpg 20170616_142832.jpg 20170616_142839.jpg 20170616_142939.jpg 2017-06-16_144655.jpg

  1. /*****************************************************************
  2. *                                                                *
  3. * ME850單片機(jī)開(kāi)發(fā)系統(tǒng)擴(kuò)展應(yīng)用 -  收音模塊演示程序               *
  4. *                                                                *
  5. * MCU 芯片: AT89S52      工作頻率: 11.0592MHz                    *
  6. *                                                                *
  7. *【版權(quán)】Copyright(C) 深圳碩飛科技有限公司  All Rights Reserved  *
  8. *【聲明】此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息!      *
  9. *                                                                *
  10. ******************************************************************
  11. *                                                                *
  12. *  K1--- 向上搜索電臺(tái) K2--- 向下搜索電臺(tái)                         *
  13. *  K3--- 音量加       K4--- 音量減                               *
  14. *                                                                *
  15. *****************************************************************/

  16. #include <reg51.h>         
  17. #include <intrins.h>
  18. //#include "lcd.h"
  19. #include "IIC.h"
  20. #include "delay.h"

  21. sbit  K1 = P3^2;
  22. sbit  K2 = P3^3;
  23. sbit  K3 = P3^4;
  24. sbit  K4 = P3^5;

  25. unsigned long frequency;

  26. // RDA5807 寄存器
  27. unsigned char  RDA_reg_data[8] =
  28. {
  29.    0xd0,0x00,  // 02H
  30.    0x00,0x00,  // 03H
  31.    0x00,0x40,  // 04H
  32.    0x90,0x88,  // 05H
  33. };

  34. //unsigned char code  cdis1[ ] = {"FM STEREO RADIO "};
  35. //unsigned char code  cdis2[ ] = {"FM       VOL    "};

  36. char code reserve[3]_at_ 0x3b; //保留0x3b開(kāi)始的3個(gè)字節(jié)

  37. #define uchar unsigned char
  38. #define uint  unsigned int

  39. /**********************************************************

  40. 連續(xù)寫(xiě)寄存器子函數(shù)

  41. **********************************************************/
  42. void RDA5807_write_reg(void)
  43. {
  44.    uchar i;

  45.    I2C_start();
  46.     // 收音模塊寫(xiě)入操作
  47.    I2C_write_byte(0x20);
  48.     // 寄存器連續(xù)寫(xiě)操作
  49.    for(i=0; i<8; i++)
  50.    {
  51.      I2C_write_byte(RDA_reg_data[i]);
  52.    }
  53.    I2C_stop();
  54. }

  55. /**********************************************************

  56. 連續(xù)讀寄存器子函數(shù)

  57. **********************************************************/
  58. void RDA5807_read_reg(uchar *reg_buf)
  59. {
  60.    I2C_start();

  61.     // 收音模塊讀取操作
  62.    I2C_write_byte(0x21);

  63.     // 寄存器連續(xù)讀操作
  64.    reg_buf[0] = I2C_read_byte(I2C_ACK);
  65.    reg_buf[1] = I2C_read_byte(I2C_ACK);
  66.    reg_buf[2] = I2C_read_byte(I2C_ACK);
  67.    reg_buf[3] = I2C_read_byte(I2C_NACK);

  68.    I2C_stop();
  69. }

  70. /**********************************************************

  71. 模塊上電初始化子函數(shù)

  72. **********************************************************/
  73. void RDA5807_power(void)
  74. {
  75.    delayms(50);

  76.     // 發(fā)送軟件復(fù)位指令
  77.    RDA_reg_data[0] = 0x00;
  78.    RDA_reg_data[1] = 0x02;
  79.    RDA5807_write_reg();

  80.    delayms(10);

  81.     // 收音模塊默認(rèn)參數(shù)
  82.    RDA_reg_data[0] = 0xd0;
  83.    RDA_reg_data[1] = 0x01;
  84.    RDA5807_write_reg();
  85. }
  86. /**********************************************************

  87. 功能描述:收音模塊自動(dòng)尋臺(tái)模式

  88. **********************************************************/
  89. void RDA5807_FM_seek(void)
  90. {
  91.    uint chan;
  92.    uchar  reg_data[4] = {0x00, 0x00, 0x00, 0x00};

  93.    RDA_reg_data[3] &= ~(1 << 4);      //調(diào)諧禁用

  94.    // 內(nèi)部自動(dòng)尋臺(tái)使能
  95.    RDA_reg_data[0] |=  (1 << 0);      //SEEK位置1
  96.    RDA5807_write_reg();

  97.     // 等待STC 標(biāo)志置位
  98.    while(0 == (reg_data[0] & 0x40))
  99.    {
  100.      delayms(20);
  101.       // 讀取內(nèi)部狀態(tài)
  102.      RDA5807_read_reg(reg_data);
  103.    }
  104.     // 獲取當(dāng)前工作頻點(diǎn)
  105.    chan = reg_data[0] & 0x03;
  106.    chan = reg_data[1] | (chan << 8);
  107.    chan = chan << 6;

  108.     // 保存當(dāng)前工作頻點(diǎn)
  109.    RDA_reg_data[2] = (chan >> 8) & 0xff;
  110.    RDA_reg_data[3] = (chan & 0xff);
  111. }
  112.    #include<stdio.h>
  113. void        mInitSTDIO( void )
  114. {        /* 僅用于調(diào)試用途及顯示內(nèi)容到PC機(jī),與該程序功能完全無(wú)關(guān),為printf和getkey輸入輸出初始化串口 */
  115.         SCON = 0x50;
  116.         PCON = 0x80;
  117.         TMOD = 0x20;
  118.         TH1  = 0xfd;  /* 11.0592MHz晶振, 19200bps */
  119.         TR1  = 1;
  120.         TI   = 1;
  121. }


  122. /**********************************************************

  123. 頻率顯示子函數(shù)

  124. **********************************************************/
  125. /*void  show_frequency(void)
  126. {
  127.   // unsigned char i,display[5];
  128.    unsigned int  temp;
  129.       double temp1;


  130.    temp = (RDA_reg_data[2]*256)+(RDA_reg_data[3]&0xc0);         //計(jì)算
  131.    temp = temp>>6;
  132.    frequency = (unsigned long)(100*temp+87000)/100;

  133.    temp1=  (double)frequency/10.0;

  134.    printf("the fz=%.1fM\n",temp1) ;

  135.    /*for(i=0; i<5; i++)  // 清顯存單元
  136.    display[i] = 0x00;

  137.    display[0] = (frequency)/1000 ;     //數(shù)據(jù)轉(zhuǎn)換
  138.    display[1] = (frequency%1000)/100;
  139.    display[2] = (frequency%100)/10;
  140.    display[3] = 0x2e;                  //小數(shù)點(diǎn)
  141.    display[4] = (frequency%10);

  142.    if(display[0] == 0)
  143.    {
  144.      display[0] = display[1]+0x30;
  145.      display[1] = display[2]+0x30;
  146.      display[2] = display[3];
  147.      display[3] = display[4]+0x30;
  148.      display[4] = 0x20;
  149.    }
  150.    else
  151.    {
  152.      display[0] += 0x30;
  153.      display[1] += 0x30;
  154.      display[2] += 0x30;
  155.      display[4] += 0x30;
  156.    }

  157.    lcd_pos_xy(3,2);                      //頻率顯示
  158.    lcd_wdat(display[0]);
  159.    lcd_wdat(display[1]);
  160.    lcd_wdat(display[2]);
  161.    lcd_wdat(display[3]);
  162.    lcd_wdat(display[4]); */
  163. //}
  164.               
  165. /**********************************************************

  166. 音量顯示子函數(shù)

  167. **********************************************************/
  168. /*void show_volume()
  169. {
  170.    unsigned int  temp;

  171.    temp = RDA_reg_data[7] & 0x0f; //取音量值

  172.    printf("the voice=%d\n",temp);

  173.   /* display[0] = temp/10;
  174.    display[1] = temp%10;

  175.    if(display[0] == 0)            //如果高位為0
  176.    {
  177.      display[0] = display[1];     //低位顯存內(nèi)容進(jìn)入高位顯存
  178.      display[1] = 0x20;           //低位不顯示
  179.    }
  180.    else
  181.    {
  182.      display[1] += 0x30;
  183.    }
  184.    display[0] += 0x30;

  185.    lcd_pos_xy(13,2);              //音量值顯示
  186.    lcd_wdat(display[0]);
  187.    lcd_wdat(display[1]); */

  188. //}                                   

  189. /**********************************************************

  190. 主函數(shù)

  191. **********************************************************/
  192. void  main(void)
  193. {  
  194.    RDA5807_power();
  195.    mInitSTDIO();

  196.    while(1)
  197.    {
  198.      if(K1 == 0)
  199.      {
  200.        delayms(20);
  201.        if(K1 == 0)
  202.        {
  203.          RDA_reg_data[0] |= (1 << 1);         //SEEK UP         
  204.          RDA5807_FM_seek();                  
  205.          while(K1 == 0);
  206.        }
  207.      }

  208.      if(K2 == 0)
  209.      {
  210.        delayms(20);
  211.        if(K2 == 0)
  212.        {
  213.          RDA_reg_data[0] &= ~(1 << 1);  //SEEK DOWN                 
  214.          RDA5807_FM_seek();
  215.          while(K2 == 0);
  216.        }
  217.      }

  218.      if(K3 == 0)
  219.      {
  220.        delayms(20);
  221.        if(K3 == 0)
  222.        {
  223.          if((RDA_reg_data[7] & 0x0f) < 0x0f)
  224.          {
  225.            RDA_reg_data[0] = 0xd0;
  226.            RDA_reg_data[1] = 0x01;
  227.            RDA_reg_data[3] &= ~(1 << 4);

  228.            RDA_reg_data[7]++;         // 音量遞增
  229.            RDA5807_write_reg();
  230.                    while(K3 == 0);
  231.          }
  232.        }
  233.      }

  234.      if(K4 == 0)
  235.      {
  236.        delayms(20);
  237.        if(K4 == 0)
  238.        {
  239.          if((RDA_reg_data[7] & 0x0f) > 0x00)
  240.          {
  241.            RDA_reg_data[0] = 0xd0;
  242.            RDA_reg_data[1] = 0x01;
  243.            RDA_reg_data[3] &= ~(1 << 4);
  244.            
  245.            RDA_reg_data[7]--;         // 音量遞減
  246.            RDA5807_write_reg();
  247.            while(K4 == 0);
  248.          }
  249.        }
  250.      }

  251.                      delayms(200);
  252. //    show_volume();
  253. //    show_frequency();
  254.    }
  255. }

  256. /*********************************************************/

復(fù)制代碼



全部資料下載地址:
RDA5807M-FM程序.rar (39.17 KB, 下載次數(shù): 287)




相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:96682 發(fā)表于 2017-6-16 19:11 | 顯示全部樓層
可以這么說(shuō),使用這種電源較使用純直流的電池簡(jiǎn)直是沒(méi)法比

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:162582 發(fā)表于 2017-6-19 18:00 | 顯示全部樓層
首先你不能使用充電器供電,其次用電池供電也要加濾波電容。最后你的功放要去掉。我用tea5767做的也是這樣
回復(fù)

使用道具 舉報(bào)

ID:448994 發(fā)表于 2019-3-2 19:49 | 顯示全部樓層
能求電路圖嗎
回復(fù)

使用道具 舉報(bào)

ID:659397 發(fā)表于 2020-1-20 10:49 | 顯示全部樓層
對(duì),就像樓上說(shuō)的,先把電源改成電池;接著去掉功放,因?yàn)镽DA5807有耳機(jī)驅(qū)動(dòng)能力
回復(fù)

使用道具 舉報(bào)

ID:1025655 發(fā)表于 2023-12-26 11:14 | 顯示全部樓層
FM的天線(xiàn)呢?實(shí)物上沒(méi)看到喲!
回復(fù)

使用道具 舉報(bào)

ID:1025655 發(fā)表于 2023-12-26 11:15 | 顯示全部樓層
FM的天線(xiàn)呢?實(shí)物上面看不到呀!
回復(fù)

使用道具 舉報(bào)

ID:774081 發(fā)表于 2023-12-29 15:18 | 顯示全部樓層
最大的原因是沒(méi)有焊接天線(xiàn)。。。
回復(fù)

使用道具 舉報(bào)

ID:712493 發(fā)表于 2023-12-29 15:46 | 顯示全部樓層
實(shí)際要分清什么雜音,或說(shuō)是雜音  還是噪音
回復(fù)

使用道具 舉報(bào)

ID:1085441 發(fā)表于 2024-1-25 17:41 | 顯示全部樓層
雜音大除了天線(xiàn)原因,還有可能是調(diào)諧頻率不準(zhǔn),您的頻率控制字對(duì)嗎?
回復(fù)

使用道具 舉報(bào)

ID:524818 發(fā)表于 2024-1-26 10:47 | 顯示全部樓層
用充電頭做電源應(yīng)該不行,換成電池吧
回復(fù)

使用道具 舉報(bào)

ID:195496 發(fā)表于 2024-4-11 08:27 | 顯示全部樓層
折騰才有快樂(lè)
回復(fù)

使用道具 舉報(bào)

ID:71233 發(fā)表于 2024-4-12 19:43 | 顯示全部樓層
信號(hào)一般的地方,天線(xiàn)必須長(zhǎng)些,像我這里,即使天線(xiàn)很長(zhǎng),還是比不上以前那種分立元件調(diào)頻收音機(jī)。
回復(fù)

使用道具 舉報(bào)

ID:72088 發(fā)表于 2025-4-11 15:06 | 顯示全部樓層
單片機(jī)調(diào)臺(tái)后要進(jìn)入待機(jī)狀態(tài),不然會(huì)干擾收音機(jī)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜三级网站 | 国产色婷婷精品综合在线手机播放 | www.婷婷| 黄色大片在线免费观看 | 午夜三级视频 | 欧美久久国产 | 一区二区三区中文字幕 | 在线亚洲人成电影网站色www | 国产欧美一区二区三区久久 | 欧美一级视频免费看 | 欧美精品综合在线 | 91精品国产高清一区二区三区 | 国产成人在线视频 | 免费麻豆视频 | 色综合美女 | 欧美日韩精品免费 | 不卡一区二区在线观看 | 国产精品日产欧美久久久久 | 亚洲欧美日韩精品久久亚洲区 | 亚洲欧美日韩在线一区二区 | www成人免费 | 国产精品久久毛片av大全日韩 | 日本黄色免费大片 | 精品久久中文 | 亚洲国产一区视频 | 91久久精品国产91久久性色tv | 日韩快播电影 | 三级黄色大片网站 | 日韩国产精品一区二区三区 | 日韩一区二区三区视频 | 亚洲区一区二 | 91久久精品一区二区二区 | 嫩草一区二区三区 | 久久久一二三 | 综合九九| 国产一区高清 | 久久人 | 久久精品99 | 91文字幕巨乱亚洲香蕉 | 香蕉视频久久久 | 日韩成人免费在线视频 |