开源项目Arduino mini328连接TEA5767 收音机源码及电路
转自:http://www.electronicsblog.net欢迎各位讨论及增加功能.....................................
手头上有一个TEA5767收音机电路 搜索了下网络 收集了相关教程 ,
还在了解代码,S1及S2是向上或向下搜台,由于接线太多.好象不太灵敏及噪音比较大,没有自搜保存电台功能?
用AD9.4画了个简单接线电路图, L R 须接功放放大音量
接线电路图在最下面.pdf
用arduino 0023编写通过
手机3.7V电池,收听了3个小时运行正常,
新人 未知道怎么发代码,直接粘出来了~
源码:/// Arduino FM receiver with TEA5767
#include <Wire.h>
#include <LiquidCrystal.h>
unsigned char search_mode=0;
int b=0;
int c=0;
#define Button_next 6 //D6
#define Button_prev 7 //D7
unsigned char frequencyH=0;
unsigned char frequencyL=0;
unsigned int frequencyB;
double frequency=0;
double freq_available=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Wire.begin();
lcd.begin(16, 2);
/// buttons
pinMode(Button_next, INPUT);
digitalWrite(Button_next, HIGH); //pull up resistor
pinMode(Button_prev, INPUT);
digitalWrite(Button_prev, HIGH); //pull up resistor
frequency=87.5; //starting frequency
frequencyB=4*(frequency*1000000+225000)/32768; //calculating PLL word
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
delay(100);
Wire.beginTransmission(0x60); //writing TEA5767
Wire.send(frequencyH);
Wire.send(frequencyL);
Wire.send(0xB0);
Wire.send(0x10);
Wire.send(0x00);
Wire.endTransmission();
delay(100);
}
void loop()
{
unsigned char buffer;
lcd.setCursor(0, 0);
Wire.requestFrom(0x60,5); //reading TEA5767
if (Wire.available())
{
for (int i=0; i<5; i++) {
buffer= Wire.receive();
}
freq_available=(((buffer&0x3F)<<8)+buffer)*32768/4-225000;
lcd.print("FM ");
lcd.print((freq_available/1000000));
frequencyH=((buffer&0x3F));
frequencyL=buffer;
if (search_mode) {
if(buffer&0x80) search_mode=0;
}
if (search_mode==1) lcd.print(" SCAN");
else {
lcd.print(" ");
}
lcd.setCursor(0, 1);
lcd.print("Level: ");
lcd.print((buffer>>4));
lcd.print("/16 ");
if (buffer&0x80) lcd.print("STEREO ");
else lcd.print("MONO ");
}
///// buttons read
//////////// button_next//////////
if (!digitalRead(Button_next)&&!b) {
frequency=(freq_available/1000000)+0.05;
frequencyB=4*(frequency*1000000+225000)/32768+1;
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
Wire.beginTransmission(0x60);
Wire.send(frequencyH);
Wire.send(frequencyL);
Wire.send(0xB0);
Wire.send(0x1F);
Wire.send(0x00);
Wire.endTransmission();
//////////////////////
b=100;
};
if (!digitalRead(Button_next)&&b==1) {
///scannnn UP
search_mode=1;
Wire.beginTransmission(0x60);
Wire.send(frequencyH+0x40);
Wire.send(frequencyL);
Wire.send(0xD0);
Wire.send(0x1F);
Wire.send(0x00);
Wire.endTransmission();
/////////////////
b=100;
};
if (!b==0) b--;
//////////// button_prev//////////
if (!digitalRead(Button_prev)&&!c) {
frequency=(freq_available/1000000)-0.05;
frequencyB=4*(frequency*1000000+225000)/32768+1;
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
Wire.beginTransmission(0x60);
Wire.send(frequencyH);
Wire.send(frequencyL);
Wire.send(0xB0);
Wire.send(0x1F);
Wire.send(0x00);
Wire.endTransmission();
c=100;
};
if (!digitalRead(Button_prev)&&c==1) {
///scannnn DOWN
search_mode=1;
Wire.beginTransmission(0x60);
Wire.send(frequencyH+0x40);
Wire.send(frequencyL);
Wire.send(0x50);
Wire.send(0x1F);
Wire.send(0x00);
Wire.endTransmission();
c=100;
};
if (!c==0) c--;
////////////////////
}
支持,我之前在学校的时候也玩过一个,不错,继续努力! 好复杂的接线啊 想做了软件无线电设备。
页:
[1]