单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 175|回复: 0
收起左侧

我的第一台DSP收音机(AKC6955)

[复制链接]
gdbin001 发表于 2020-1-31 09:44 | 显示全部楼层 |阅读模式
记得我做收音机还是在读小学时,用一个二极管接一条长长的电线再接一个耳机,几乎听不到什么东西。但是觉得很神奇,想知道得更多些,从此爱上电子技术。当然那时候也喜欢航模什么的,超喜欢一本杂志是《中学科技》,还有《电子世界》《无线电》,里面介绍了很多电子知识。可能因为看多了,很多电路方面的原理都是自己悟出来的。装的第一台7管收音机是在读高二时,在杂志上看到有黄河741套件,就买回来装了。想想是三十年 前了的事情了。当时听到收音响起来有多激动。
重新想起收音机是几个月前的事。不知道为什么,只是突然想听收音机了,就在网上搜相关资料。之前看到的数字收音都只是加了数字显示功能。收音电路部分还是模拟的,并没有什么吸引我的。但看到DSP收音后才知道,原来通信技术真的发展到软件通信阶段了。基本上所有功能都通过单片机运算实现,已经成了一台计算机了,真太神奇了。这又激起了我的兴趣。想着自己装一台,再自己定制界面,没事再改改程序,好爽啊。在矿坛里看到sudywolf大牛的帖子,所有资料都共享出来,太好了,非常感谢这些无私的人。只是sudywolf大牛当时给出的是触摸屏控制的代码。我手头只有按键和1602。完全用他的代码不行。就根据他给出的资料改成现在这个样子。用着感觉挺好。以后还可以再增加功能,很好玩。先发出来给大家看看。
代码也发出来,只有2个文件,有需要可以下载参考。里面有注释,很好懂。功能不多,只有向前搜台,音量增减。读懂后可以断续增加其他功能。
制作出来的实物图如下:

现在的样子

现在的样子

和老收音机合个影

和老收音机合个影


单片机源程序如下:
  1. #include <Arduino.h>
  2. #include <EEPROM.h>
  3. #include <Wire.h>
  4. #include <LiquidCrystal.h>
  5. #include "akc6955.h"

  6. AKC6955_RADIO radio;
  7. //设置针脚。音量用芯片上电位器控制电路
  8. //byte pinSS=8; //自动搜所有台并保存按键
  9. byte pinNext=10; //下一个台按键
  10. byte pinPrev=11; //上一个台按键
  11. //byte pinBand=9; //波段按键
  12. byte pinVoldec=12; //音量减
  13. byte pinVoladd=8;  //音量加
  14. byte val;
  15. void setup(void)
  16. {
  17.   lcd.begin(16,2);
  18.   radio.Initialize();
  19.   //pinMode(pinSS,INPUT_PULLUP);//扫描全部并保存。INPUT_PULLUP使用内部上拉电阻
  20.   pinMode(pinNext,INPUT_PULLUP);//next
  21.   pinMode(pinPrev,INPUT_PULLUP);//prev
  22.   //pinMode(pinBand,INPUT_PULLUP);//band  
  23.   pinMode(pinVoldec,INPUT_PULLUP);  
  24.   pinMode(pinVoladd,INPUT_PULLUP);
  25. }
  26. void loop()
  27. {  
  28.   val=digitalRead(pinNext);
  29.     if (val==LOW)
  30.    {
  31.     delay(80);
  32.     if (val==LOW) radio.Seek(1);//搜索下一个台
  33.    }
  34.     val=digitalRead(pinPrev);
  35.     if (val==LOW)
  36.    {
  37.     delay(80);
  38.     if (val==LOW) radio.Seek(0); //搜索下一个台
  39.    } //搜索上一个台   
  40.    /* val=digitalRead(pinBand);
  41.     if (val==LOW)         //下一个波段
  42.     {
  43.       delay(80);
  44.       if (val==LOW)
  45.       {while(bcount++>3) bcount=0;
  46.       radio.band_cursor = (++ radio.band_cursor)  % BAND_COUNT ;
  47.       radio.switchBand(radio.band_cursor);
  48.       }
  49.   }  */
  50.    val=digitalRead(pinVoldec);  
  51.    if(val==LOW)
  52.    {
  53.      delay(80);
  54.      if (val==LOW&&(radio.reg6.sound_volume-23) >= 1)   //音量减少
  55.         radio.setVolume(--radio.reg6.sound_volume);   
  56.    }
  57.    val=digitalRead(pinVoladd);
  58.     if(val==LOW)
  59.     {delay(80);
  60.       if (val==LOW&&(radio.reg6.sound_volume-23) < 40)  //音量增加
  61.             radio.setVolume(++radio.reg6.sound_volume);
  62.     }
  63.    delay(100);
  64. }
复制代码
51hei.png
部分程序下载(不完整):
My6955.zip (6.07 KB, 下载次数: 0)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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