找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機控制的FM收音發(fā)射電臺,多圖,詳細程序

  [復(fù)制鏈接]
ID:77496 發(fā)表于 2015-5-9 18:51 | 顯示全部樓層 |閱讀模式
  要進行FM收發(fā),我們先認識一款I(lǐng)C~~~RDA820.
  RDA5820 是一顆立體聲 FM 收發(fā)芯片,該芯片通過 IIC 接口控制,可以實現(xiàn) 65~108MHz
的全球FM頻段接收,同時可以作為 FM發(fā)射。RDA5820 接收與發(fā)送天線共用,僅需要極少的
外圍器件即可正常工作。
   看下面原理圖,從原理圖可以看出,RDA5820使用IIC接口,通過控制RDA5820里面一些寄存器,實現(xiàn)收音,發(fā)射,靜音,音量,頻點,發(fā)射功率,增益,靈敏度調(diào)節(jié)等~~~~~~~~發(fā)射和收音使用同一根天線。天線最好使用20CM拉桿天線,我這里使用50CM軟導(dǎo)線代替了。這樣收音還是挺可以的,發(fā)射的話,距離就沒那么遠而已。
  單片機使用STC15系列單片機,這個單片機沒得說的了。顯示屏使用1.8寸TFT液晶,(我之前帖子也有出現(xiàn)http://www.torrancerestoration.com/bbs/dpj-34112-1.html,當(dāng)時有壇友說開機試試,我那時候相機壞了,沒拍照片,后來修好相機,再上去看不知道怎么改貼了,如果有哪位大蝦知道,不防告訴一聲。)ST7735驅(qū)動。
廢話不再。
上圖:




RDA5820原理圖,簡單吧,與單片機通信主要使用IIC接口~~~~~~~~~
105455shinng20dnd5cc35.png



內(nèi)部接線多,沒辦法,這是手持,集成比較多功能
110927cfpf0dfd3y80ypf0.jpg



內(nèi)部集成有2.4G模塊,WIFI模塊,433模塊,但是這些沒接,與本設(shè)計無關(guān)~~~~
111016asnw2xt1ekdpe6wo.jpg



硬件搭起,軟件調(diào)試中~~,收音可以使用手機的收音功能。
111105v634tk6z4lr6ffbn.jpg



接口用了2耳機接口,一個接輸出的音箱,一個是輸入的話筒或其他要發(fā)射音源~~
111211b4kipl6g4jpq6nv6.jpg



裝機后效果,就這樣了~~~~~~~~~~~
111325vqhqnq7oi3ibqh37.jpg



完成~~一切正常
111431mjljjzljbwlojwni.jpg



基本功能具備了~~~~~~~~~~~
111534g60lzup7eilybcpr.jpg



試機~~~~~~
111623skpyyycqkccqummk.jpg

1.8收音機.zip (548.75 KB, 下載次數(shù): 140)
RDA5820編程指南1_0ch.pdf (594.52 KB, 下載次數(shù): 115)

主程序預(yù)覽:
  1. /*********************************************************************************
  2. 程序說明:
  3.     RDA5820收音程序
  4.     增肌了DS1302,充電,關(guān)機仍然走時
  5.     串口設(shè)置
  6. 作者:陳天圣
  7. 版權(quán):珠海市經(jīng)典電子有限公司
  8. *************************************************************************************/
  9. #include
  10. //#include
  11. #include "config.h"
  12. #include"string.h"
  13. #include "lcd.h"
  14. #include "ds1302.h"
  15. #include "uart.h"
  16. #include "disp.h"
  17. #include "RDA5208.h"
  18. #include "key.h"


  19. void sys_init();
  20. void task();
  21. /*******************************************************************************
  22. /*函數(shù)原型:
  23. /*功    能:
  24. /*入口參數(shù):
  25. ********************************************************************************/
  26. void sys_init()
  27. {
  28.     count=0;
  29.    
  30.     TMOD=0x01; //定時器1和定時器0工作在方式1,的定時模式
  31.                 //晶振22.1184  10MS
  32.     TH0 = (65536-4000)/256;
  33.     TL0 = (65536-4000)%256;
  34.     TR0=1;      //定時器1暫時關(guān)閉
  35.     ET0=1;
  36.     EA=1;       //系統(tǒng)中斷允許
  37.         Lcd_Init();   //tft初始化
  38.         LCD_Clear(GREEN); //清屏
  39.     xianshi();

  40. }

  41. void task()
  42. {
  43.    u8 i;
  44.   if(UART1_CNT>0)//串口1上有數(shù)據(jù)到來
  45.     {
  46.       delayms(500);//等待接收完畢
  47.       WDT_CONTR= 0x3d;
  48.       UART1_CNT=0;rec_f1=1;
  49.       if((UART1_REC[0]=='t')&&(UART1_REC[1]=='i')&&(UART1_REC[2]=='m')&&(UART1_REC[3]=='e'))
  50.         {
  51.          time_buf1[0]=(UART1_REC[5]-0x30)*10+(UART1_REC[6]-0x30);
  52.          time_buf1[1]=(UART1_REC[7]-0x30)*10+(UART1_REC[8]-0x30);
  53.          time_buf1[2]=(UART1_REC[9]-0x30)*10+(UART1_REC[10]-0x30);
  54.          time_buf1[3]=(UART1_REC[11]-0x30)*10+(UART1_REC[12]-0x30);
  55.          time_buf1[4]=(UART1_REC[13]-0x30)*10+(UART1_REC[14]-0x30);
  56.          time_buf1[5]=(UART1_REC[15]-0x30)*10+(UART1_REC[16]-0x30);
  57.          time_buf1[6]=(UART1_REC[17]-0x30)*10+(UART1_REC[18]-0x30);
  58.          time_buf1[7]=(UART1_REC[19]-0x30)*10+(UART1_REC[20]-0x30);
  59.         }
  60.       ds1302_write_time();
  61.       SendString_1("set OK!");
  62.      // SendString_1(UART1_REC);
  63.     for(i=0;i<50;i++)
  64.       {
  65.         SendData_1(UART1_REC[i]);
  66.       }
  67.    }
  68. }
  69. /*******************************************************************************
  70. /*函數(shù)原型:void main()
  71. /*功    能:主函數(shù)
  72. /*入口參數(shù):無
  73. 作      者:陳天圣
  74. ********************************************************************************/
  75. void main()
  76. {
  77.   vol=14;
  78.   jingyin=0;
  79.   pinduan=0;
  80.   gonglv=63;


  81.   sys_init();
  82.   WDT_CONTR= 0x3d;//開看門狗64分頻
  83.   UARTInit();//串口初始化
  84.   SendString_1("STC15F2K60S2Uart1 Test !");
  85.   init_i2c();//
  86.   SendString_1("SYS IS OK!");
  87.   ds1302_init();//時鐘初始化
  88.   freq=RDA5820_Freq_Get();//讀取設(shè)置的頻率值
  89.   WDT_CONTR= 0x3d;
  90.   rssi=RDA5820_Rssi_Get();//得到信號強度

  91.     RDA5820_Mute_Set(jingyin);//不靜音
  92.     RDA5820_Rssi_Set(60);//設(shè)置靈敏度
  93.         RDA5820_Band_Set(pinduan);        //設(shè)置頻段為87~108Mhz
  94.         RDA5820_Space_Set(0);        //設(shè)置步進100Khz
  95.         RDA5820_TxPGA_Set(3);        //信號增益為3
  96.     WDT_CONTR= 0x3d;
  97.         RDA5820_TxPAG_Set(gonglv);        //發(fā)射功率設(shè)置最大
  98.         RDA5820_RX_Mode();                //設(shè)置為接收模式
  99.         
  100.         freqset=8750;                                //設(shè)置初始頻率
  101.         RDA5820_Freq_Set(freqset);        //設(shè)置頻率
  102.     RDA5820_Vol_Set(vol);         //設(shè)置音量
  103.     WDT_CONTR= 0x3d;
  104.         while(1)
  105.         {        
  106.     keyscan();
  107.         WDT_CONTR= 0x3d;//開看門狗64分頻        
  108.     if(time_f==1)
  109.      {
  110.       time_f=0;
  111.       ds1302_read_time();
  112.       }
  113.     task();  
  114.     }

  115. }
  116. /*******************************************************************************
  117. /*函數(shù)原型:void time1() interrupt 3 using 1
  118. /*功    能:定時器中斷
  119. /*入口參數(shù):無
  120. ********************************************************************************/
  121. void time0() interrupt 1 using 1  //定時器1
  122. {
  123.     TH0 = (65536-4000)/256;
  124.     TL0 = (65536-4000)%256;
  125.   count++;
  126.     if(count==20)
  127.      {
  128.       count=0;
  129.       time_f=1;
  130.      }
  131. }
  132. /*----------------------------
  133. UART 中斷服務(wù)程序
  134. -----------------------------*/
  135. void Uart() interrupt 4 using 1
  136. {
  137.         char tmp = 0;
  138.         if(RI)
  139.         {
  140.          RI=0;//清零標(biāo)志        
  141.      UART1_REC[UART1_CNT]=SBUF;
  142.      UART1_CNT++;
  143.      recr1++;//串口1數(shù)據(jù)長度
  144.         }
  145.         if(TI)
  146.         {
  147.          TI = 0;
  148.      uart1Sending = 0;
  149.         }        

  150.   
  151. }

復(fù)制代碼





相關(guān)帖子

回復(fù)

使用道具 舉報

ID:95648 發(fā)表于 2015-11-13 15:43 | 顯示全部樓層
不錯啊,大神,還能不能再少點下載分。。
回復(fù)

使用道具 舉報

ID:95659 發(fā)表于 2015-11-13 16:20 | 顯示全部樓層
我要這個芯片資料,謝謝了。。。我掃描。。
回復(fù)

使用道具 舉報

ID:95659 發(fā)表于 2015-11-15 10:48 | 顯示全部樓層
丟個聯(lián)系方式唄,大神。。
回復(fù)

使用道具 舉報

ID:86796 發(fā)表于 2015-11-19 21:20 | 顯示全部樓層
我想起了小電臺,哈哈
回復(fù)

使用道具 舉報

ID:102697 發(fā)表于 2016-1-10 22:03 | 顯示全部樓層
樓主可以問你幾個問題嗎
回復(fù)

使用道具 舉報

ID:111164 發(fā)表于 2016-3-28 17:41 | 顯示全部樓層
求資料!
回復(fù)

使用道具 舉報

ID:72088 發(fā)表于 2016-9-25 16:53 | 顯示全部樓層
高人,我想搞收音機了,自己娛樂下
回復(fù)

使用道具 舉報

ID:105534 發(fā)表于 2016-9-29 13:30 | 顯示全部樓層
樓主高手,這個是不是可以做雙工對講機
回復(fù)

使用道具 舉報

ID:148440 發(fā)表于 2016-11-18 13:22 | 顯示全部樓層
頂一頂,下載玩
回復(fù)

使用道具 舉報

ID:148650 發(fā)表于 2016-11-18 14:02 | 顯示全部樓層
感謝樓主分享學(xué)習(xí)了
回復(fù)

使用道具 舉報

ID:276348 發(fā)表于 2018-1-15 20:13 | 顯示全部樓層
我就是想做一個單片機的收音機。
回復(fù)

使用道具 舉報

ID:301718 發(fā)表于 2018-4-3 21:21 | 顯示全部樓層
就需要這個
回復(fù)

使用道具 舉報

ID:145036 發(fā)表于 2019-4-9 12:29 | 顯示全部樓層
收發(fā)頻率范圍能夠超出不?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表