pww999 发表于 2012-6-3 17:47:12

开源项目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--;

////////////////////

}

Randy 发表于 2012-6-3 21:27:52

支持,我之前在学校的时候也玩过一个,不错,继续努力!

迷你强 发表于 2012-6-3 22:36:43

好复杂的接线啊

einyboy 发表于 2013-1-1 20:00:10

想做了软件无线电设备。
页: [1]
查看完整版本: 开源项目Arduino mini328连接TEA5767 收音机源码及电路