记得我做收音机还是在读小学时,用一个二极管接一条长长的电线再接一个耳机,几乎听不到什么东西。但是觉得很神奇,想知道得更多些,从此爱上电子技术。当然那时候也喜欢航模什么的,超喜欢一本杂志是《中学科技》,还有《电子世界》《无线电》,里面介绍了很多电子知识。可能因为看多了,很多电路方面的原理都是自己悟出来的。装的第一台7管收音机是在读高二时,在杂志上看到有黄河741套件,就买回来装了。想想是三十年 前了的事情了。当时听到收音响起来有多激动。
重新想起收音机是几个月前的事。不知道为什么,只是突然想听收音机了,就在网上搜相关资料。之前看到的数字收音都只是加了数字显示功能。收音电路部分还是模拟的,并没有什么吸引我的。但看到DSP收音后才知道,原来通信技术真的发展到软件通信阶段了。基本上所有功能都通过单片机运算实现,已经成了一台计算机了,真太神奇了。这又激起了我的兴趣。想着自己装一台,再自己定制界面,没事再改改程序,好爽啊。在矿坛里看到sudywolf大牛的帖子,所有资料都共享出来,太好了,非常感谢这些无私的人。只是sudywolf大牛当时给出的是触摸屏控制的代码。我手头只有按键和1602。完全用他的代码不行。就根据他给出的资料改成现在这个样子。用着感觉挺好。以后还可以再增加功能,很好玩。先发出来给大家看看。
代码也发出来,只有2个文件,有需要可以下载参考。里面有注释,很好懂。功能不多,只有向前搜台,音量增减。读懂后可以断续增加其他功能。
制作出来的实物图如下:
单片机源程序如下:
- #include <Arduino.h>
- #include <EEPROM.h>
- #include <Wire.h>
- #include <LiquidCrystal.h>
- #include "akc6955.h"
- AKC6955_RADIO radio;
- //设置针脚。音量用芯片上电位器控制电路
- //byte pinSS=8; //自动搜所有台并保存按键
- byte pinNext=10; //下一个台按键
- byte pinPrev=11; //上一个台按键
- //byte pinBand=9; //波段按键
- byte pinVoldec=12; //音量减
- byte pinVoladd=8; //音量加
- byte val;
- void setup(void)
- {
- lcd.begin(16,2);
- radio.Initialize();
- //pinMode(pinSS,INPUT_PULLUP);//扫描全部并保存。INPUT_PULLUP使用内部上拉电阻
- pinMode(pinNext,INPUT_PULLUP);//next
- pinMode(pinPrev,INPUT_PULLUP);//prev
- //pinMode(pinBand,INPUT_PULLUP);//band
- pinMode(pinVoldec,INPUT_PULLUP);
- pinMode(pinVoladd,INPUT_PULLUP);
- }
- void loop()
- {
- val=digitalRead(pinNext);
- if (val==LOW)
- {
- delay(80);
- if (val==LOW) radio.Seek(1);//搜索下一个台
- }
- val=digitalRead(pinPrev);
- if (val==LOW)
- {
- delay(80);
- if (val==LOW) radio.Seek(0); //搜索下一个台
- } //搜索上一个台
- /* val=digitalRead(pinBand);
- if (val==LOW) //下一个波段
- {
- delay(80);
- if (val==LOW)
- {while(bcount++>3) bcount=0;
- radio.band_cursor = (++ radio.band_cursor) % BAND_COUNT ;
- radio.switchBand(radio.band_cursor);
- }
- } */
- val=digitalRead(pinVoldec);
- if(val==LOW)
- {
- delay(80);
- if (val==LOW&&(radio.reg6.sound_volume-23) >= 1) //音量减少
- radio.setVolume(--radio.reg6.sound_volume);
- }
- val=digitalRead(pinVoladd);
- if(val==LOW)
- {delay(80);
- if (val==LOW&&(radio.reg6.sound_volume-23) < 40) //音量增加
- radio.setVolume(++radio.reg6.sound_volume);
- }
- delay(100);
- }
复制代码
部分程序下载(不完整):
My6955.zip
(6.07 KB, 下载次数: 67)
|