找回密码
 立即注册

QQ登录

只需一步,快速开始

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

闲在家没事做了个单片机RDA5807M调频收音机 附代码

  [复制链接]
跳转到指定楼层
楼主
      不能随便出去的时期,用手头的零件做个数字收音机,收音模块5807M,IIC通讯,0.91寸OLED IIC通讯的,EC11,一对一编码器,自带一个按键,就用编码器+自带按键操作,单片机翻了翻盒子,发现两片STC15W408AS,就这个了。
      折腾了两天,昨晚上调试成功,今天整了一份Kicad的图纸,带自己随便画的一个小板图,还有程序全套。

制作出来的实物图如下:






电路原理图如下:


单片机源程序如下:
  1. /*---------------数字调频收音机------------------*/
  2. /*           学习之用,请勿商用                  */
  3. /*           转载请注明:数字收音机RDAV1.0       */
  4. /*-----------------------------------------------*/

  5. #include<rda.h>
  6. #include<ec11.h>
  7. #include<i2c.h>
  8. #include<5807.h>
  9. #include<oled.h>
  10. #include<bmp.h>
  11. void main()
  12. {
  13.         u8 keynum;
  14.         u32 rxfreq=9480,vol=2,tn,vol1,xfreq,yfreq;
  15.         oledinit();       
  16.         oledbmp(0,0,128,4,BMP1);
  17.        
  18.         rdainit();  //RDA5807 初始化
  19.         freqset(rxfreq);  //频率设置
  20.         volset(vol);      //音量设置
  21.         seeset(6); //搜台灵敏度设置,灵敏度太高会导致杂音,越小灵敏度越高,最大15。
  22.         seektion(1);
  23.        
  24.         delay_ms(3000);
  25.         oledclr();
  26.         oledchine(0,0,0);
  27.         oledchine(16,0,1);
  28.         oledchar(40,0,'-',16);
  29.        
  30.         oledchar(72,0,'.',16);
  31.        
  32.         oledstr(88,0,"MHz-",16);
  33.         oledchine(0,2,2);
  34.         oledchine(16,2,3);
  35.         oledchar(64,2,'-',16);
  36.         oledchar(88,2,'-',16);
  37.        
  38.         while(1)
  39.         {
  40.         keynum=kpass();       
  41.                
  42.                 switch(keynum)
  43.                 {
  44.                         case 0:
  45.                                 break;
  46.                         case 1:
  47.                             rxfreq+=10;     //频率+
  48.                                 if(rxfreq>10800)
  49.                                 rxfreq=10800;
  50.                                 freqset(rxfreq);
  51.                                 break;
  52.                         case 2:
  53.                                 rxfreq-=10;    //频率-
  54.                                 if(rxfreq<8830)
  55.                                 rxfreq=8830;
  56.                                 freqset(rxfreq);
  57.                                 break;
  58.                         case 3:
  59.                                 vol+=1;       //音量+                               
  60.                                 if(vol>15)
  61.                                 vol=15;
  62.                                 volset(vol);  
  63.                                 break;
  64.                         case 4:
  65.                                 vol-=1;       //音量-
  66.                                 if(vol<1)
  67.                                 vol=1;
  68.                                 volset(vol);  
  69.                                 break;                               
  70.                 }       

  71.                     if(tn!=rxfreq|vol1!=vol)
  72.                 {
  73.                         tn=rxfreq;
  74.                         vol1=vol;
  75.                         xfreq=rxfreq/100;
  76.                         yfreq=rxfreq/10%10;
  77.                 olednum(72,2,vol,2,16);
  78.                 olednum(48,0,xfreq,3,16);
  79.                         olednum(80,0,yfreq,1,16);
  80.                 }
  81.                
  82.         }
  83. }
复制代码

所有资料51hei提供下载:
rdAv0.1.7z (47.46 KB, 下载次数: 275)


51hei截图20200228173019.png (7.13 KB, 下载次数: 113)

51hei截图20200228173019.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:588044 发表于 2020-3-7 12:35 | 只看该作者
看你写的5807的驱动好简单哦,能用不?
回复

使用道具 举报

板凳
ID:687694 发表于 2020-3-7 14:21 | 只看该作者
jun4052 发表于 2020-3-7 12:35
看你写的5807的驱动好简单哦,能用不?

必须可以用啊。5807也是I2C通讯,就是控制寄存器多了几个,用到的我就用用不到的默认值就好了。
回复

使用道具 举报

地板
ID:475993 发表于 2020-3-9 11:51 | 只看该作者
支持一下,就是程序没啥注释,格式也不美观。
回复

使用道具 举报

5#
ID:687694 发表于 2020-3-9 22:10 | 只看该作者
sad520ljh 发表于 2020-3-9 11:51
支持一下,就是程序没啥注释,格式也不美观。

谢谢,还在学习中。
回复

使用道具 举报

6#
ID:630491 发表于 2020-3-14 11:56 | 只看该作者
lovexulu 发表于 2020-3-7 14:21
必须可以用啊。5807也是I2C通讯,就是控制寄存器多了几个,用到的我就用用不到的默认值就好了。

既然是iic,那么可以改成iic的12864吧?
回复

使用道具 举报

7#
ID:687694 发表于 2020-3-23 18:45 | 只看该作者
1679079206 发表于 2020-3-14 11:56
既然是iic,那么可以改成iic的12864吧?

iic只是通讯协议,至于你想用什么类型的显示屏,符合协议都可以用,但是对应器件的寄存器地址命令格式不尽相同,按照显示驱动器件的数据手册更改就行了。
回复

使用道具 举报

8#
ID:84278 发表于 2020-4-16 12:15 | 只看该作者
不能调台,学习下
回复

使用道具 举报

9#
ID:564022 发表于 2020-7-24 22:48 | 只看该作者
为什么收不到电台呢
回复

使用道具 举报

10#
ID:804975 发表于 2021-10-5 21:04 | 只看该作者
sad520ljh 发表于 2020-3-9 11:51
支持一下,就是程序没啥注释,格式也不美观。

能开源,就是良心了,还要这么多的要求。
回复

使用道具 举报

11#
ID:252807 发表于 2021-10-6 15:00 | 只看该作者
这个东东制作出来效果如何?
回复

使用道具 举报

12#
ID:967119 发表于 2021-10-11 13:55 | 只看该作者
请问这些头文件能分享出来吗?我准备移植到PIC单片机试试。谢谢!
回复

使用道具 举报

13#
ID:967119 发表于 2021-10-11 13:58 | 只看该作者
本帖最后由 cczjw 于 2021-10-11 14:23 编辑

请问这些头文件能分享出来吗?我准备移植到PIC单片机试试。谢谢!
回复

使用道具 举报

14#
ID:385359 发表于 2022-4-7 07:33 | 只看该作者
感谢,用上了  
回复

使用道具 举报

15#
ID:205485 发表于 2022-4-14 07:59 | 只看该作者
这个比较有意思
回复

使用道具 举报

16#
ID:996773 发表于 2022-4-19 16:22 | 只看该作者


大家好,我是新来的,玩单片机没多久,89c52加索尼v800原装收音板。锁相环控制
回复

使用道具 举报

17#
ID:360457 发表于 2022-5-9 14:26 | 只看该作者
你这个MCU是16脚的 28脚的可以用吗     STC15W408AS  28脚的
回复

使用道具 举报

18#
ID:470485 发表于 2022-5-9 16:21 | 只看该作者
我也在玩RDA5807M小模块
遇到一个问题:
初始化后搜台
Register[2] |= (1<<8);
FM_WR_Reg(REG_02,Register[2]);

检查STC标志
while((FM_RD_Reg(REG_0A) & (1<<14)) == 0 )            //等待STC位置为1 表示搜索完成
    delay_ms(10);                                       //延时10ms

获取频率
Chan = FM_RD_Reg(REG_0A) & 0x03FF;

问题是,通过耳机能正常收音,立即获取的频率不正确,
加延时,延时越长越接近正确频率。
回复

使用道具 举报

19#
ID:1026132 发表于 2022-5-13 09:04 | 只看该作者
闲在家没事做,也想做一个。
回复

使用道具 举报

20#
ID:507641 发表于 2022-5-13 18:43 | 只看该作者
hi等你 发表于 2022-4-19 16:22
大家好,我是新来的,玩单片机没多久,89c52加索尼v800原装收音板。锁相环控制

很好,希望分支享让大家学习
回复

使用道具 举报

21#
ID:998993 发表于 2023-8-1 22:53 | 只看该作者
看你写的5807的驱动好简单哦
回复

使用道具 举报

22#
ID:1085441 发表于 2023-8-2 22:25 | 只看该作者
hi等你 发表于 2022-4-19 16:22
大家好,我是新来的,玩单片机没多久,89c52加索尼v800原装收音板。锁相环控制

感叹!看到LC72130了,大约十几年前用过这个芯片,那时候DSP芯片见不到,这个算是电调主流了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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