|
转自: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[5];
- lcd.setCursor(0, 0);
- Wire.requestFrom(0x60,5); //reading TEA5767
- if (Wire.available())
- {
- for (int i=0; i<5; i++) {
- buffer[i]= Wire.receive();
- }
- freq_available=(((buffer[0]&0x3F)<<8)+buffer[1])*32768/4-225000;
- lcd.print("FM ");
- lcd.print((freq_available/1000000));
- frequencyH=((buffer[0]&0x3F));
- frequencyL=buffer[1];
- if (search_mode) {
- if(buffer[0]&0x80) search_mode=0;
- }
- if (search_mode==1) lcd.print(" SCAN");
- else {
- lcd.print(" ");
- }
- lcd.setCursor(0, 1);
- lcd.print("Level: ");
- lcd.print((buffer[3]>>4));
- lcd.print("/16 ");
- if (buffer[2]&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--;
- ////////////////////
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|