找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16628|回复: 13
打印 上一主题 下一主题
收起左侧

基于单片机控制的FM收音发射电台,多图,详细程序

  [复制链接]
跳转到指定楼层
楼主
  要进行FM收发,我们先认识一款IC~~~RDA820.
  RDA5820 是一颗立体声 FM 收发芯片,该芯片通过 IIC 接口控制,可以实现 65~108MHz
的全球FM频段接收,同时可以作为 FM发射。RDA5820 接收与发送天线共用,仅需要极少的
外围器件即可正常工作。
   看下面原理图,从原理图可以看出,RDA5820使用IIC接口,通过控制RDA5820里面一些寄存器,实现收音,发射,静音,音量,频点,发射功率,增益,灵敏度调节等~~~~~~~~发射和收音使用同一根天线。天线最好使用20CM拉杆天线,我这里使用50CM软导线代替了。这样收音还是挺可以的,发射的话,距离就没那么远而已。
  单片机使用STC15系列单片机,这个单片机没得说的了。显示屏使用1.8寸TFT液晶,(我之前帖子也有出现http://www.51hei.com/bbs/dpj-34112-1.html,当时有坛友说开机试试,我那时候相机坏了,没拍照片,后来修好相机,再上去看不知道怎么改贴了,如果有哪位大虾知道,不防告诉一声。)ST7735驱动。
废话不再。
上图:




RDA5820原理图,简单吧,与单片机通信主要使用IIC接口~~~~~~~~~



内部接线多,没办法,这是手持,集成比较多功能



内部集成有2.4G模块,WIFI模块,433模块,但是这些没接,与本设计无关~~~~



硬件搭起,软件调试中~~,收音可以使用手机的收音功能。



接口用了2耳机接口,一个接输出的音箱,一个是输入的话筒或其他要发射音源~~



装机后效果,就这样了~~~~~~~~~~~



完成~~一切正常



基本功能具备了~~~~~~~~~~~



试机~~~~~~

1.8收音机.zip (548.75 KB, 下载次数: 134)
RDA5820编程指南1_0ch.pdf (594.52 KB, 下载次数: 110)

主程序预览:
  1. /*********************************************************************************
  2. 程序说明:
  3.     RDA5820收音程序
  4.     增肌了DS1302,充电,关机仍然走时
  5.     串口设置
  6. 作者:陈天圣
  7. 版权:珠海市经典电子有限公司
  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. /*函数原型:
  23. /*功    能:
  24. /*入口参数:
  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暂时关闭
  35.     ET0=1;
  36.     EA=1;       //系统中断允许
  37.         Lcd_Init();   //tft初始化
  38.         LCD_Clear(GREEN); //清屏
  39.     xianshi();

  40. }

  41. void task()
  42. {
  43.    u8 i;
  44.   if(UART1_CNT>0)//串口1上有数据到来
  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. /*函数原型:void main()
  71. /*功    能:主函数
  72. /*入口参数:无
  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();//读取设置的频率值
  89.   WDT_CONTR= 0x3d;
  90.   rssi=RDA5820_Rssi_Get();//得到信号强度

  91.     RDA5820_Mute_Set(jingyin);//不静音
  92.     RDA5820_Rssi_Set(60);//设置灵敏度
  93.         RDA5820_Band_Set(pinduan);        //设置频段为87~108Mhz
  94.         RDA5820_Space_Set(0);        //设置步进100Khz
  95.         RDA5820_TxPGA_Set(3);        //信号增益为3
  96.     WDT_CONTR= 0x3d;
  97.         RDA5820_TxPAG_Set(gonglv);        //发射功率设置最大
  98.         RDA5820_RX_Mode();                //设置为接收模式
  99.         
  100.         freqset=8750;                                //设置初始频率
  101.         RDA5820_Freq_Set(freqset);        //设置频率
  102.     RDA5820_Vol_Set(vol);         //设置音量
  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. /*函数原型:void time1() interrupt 3 using 1
  118. /*功    能:定时器中断
  119. /*入口参数:无
  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 中断服务程序
  134. -----------------------------*/
  135. void Uart() interrupt 4 using 1
  136. {
  137.         char tmp = 0;
  138.         if(RI)
  139.         {
  140.          RI=0;//清零标志        
  141.      UART1_REC[UART1_CNT]=SBUF;
  142.      UART1_CNT++;
  143.      recr1++;//串口1数据长度
  144.         }
  145.         if(TI)
  146.         {
  147.          TI = 0;
  148.      uart1Sending = 0;
  149.         }        

  150.   
  151. }

复制代码





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:95648 发表于 2015-11-13 15:43 | 只看该作者
不错啊,大神,还能不能再少点下载分。。
回复

使用道具 举报

板凳
ID:95659 发表于 2015-11-13 16:20 | 只看该作者
我要这个芯片资料,谢谢了。。。我扫描。。
回复

使用道具 举报

地板
ID:95659 发表于 2015-11-15 10:48 | 只看该作者
丢个联系方式呗,大神。。
回复

使用道具 举报

5#
ID:86796 发表于 2015-11-19 21:20 | 只看该作者
我想起了小电台,哈哈
回复

使用道具 举报

6#
ID:102697 发表于 2016-1-10 22:03 | 只看该作者
楼主可以问你几个问题吗
回复

使用道具 举报

7#
ID:111164 发表于 2016-3-28 17:41 | 只看该作者
求资料!
回复

使用道具 举报

8#
ID:72088 发表于 2016-9-25 16:53 | 只看该作者
高人,我想搞收音机了,自己娱乐下
回复

使用道具 举报

9#
ID:105534 发表于 2016-9-29 13:30 | 只看该作者
楼主高手,这个是不是可以做双工对讲机
回复

使用道具 举报

10#
ID:148440 发表于 2016-11-18 13:22 | 只看该作者
顶一顶,下载玩
回复

使用道具 举报

11#
ID:148650 发表于 2016-11-18 14:02 | 只看该作者
感谢楼主分享学习了
回复

使用道具 举报

12#
ID:276348 发表于 2018-1-15 20:13 | 只看该作者
我就是想做一个单片机的收音机。
回复

使用道具 举报

13#
ID:301718 发表于 2018-4-3 21:21 | 只看该作者
就需要这个
回复

使用道具 举报

14#
ID:145036 发表于 2019-4-9 12:29 | 只看该作者
收发频率范围能够超出不?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表