jiahangsonic 发表于 2009-2-27 15:29:22

我也上一个TEA5767做的调频收音机!M16+LCM1602(冷光屏)+TDA2822!全部资料!

程序如下!ICC编译!图片以后上!身边没相机!

程序实例:基于TWI(IIC)总线控制的TEA5767数字调频收音机实验程序
作者:刘佳杭
          河北理工大学轻工学院07通信2班
日期:2009-01-19
按键功能说明:
      (1)UP键,此键在正常工作模式下的作用是电台频率的上升,每次上升为100K,存储频道和读取存储频道的状态下是频道选择的上升键,每次步进1.
      (2)DOWN键,作用和UP一样,只是频率的下降和频道数的下降。
      (3)S/M READ键,此键的作用分为长按和短按。每次短按一次是在立体声和单声道之间切换。长按大约三秒进入存储频道读取状态,屏幕上会显示
      “CH:1   READ!”,此时配合UP键和DOWN键来选择将要读取的频道,选择好后,长按此键大约三秒确认,屏幕上会显示“CH:1 OK!”,表示读取成功,此时
         该频道的频率会导入PLL,立即收听此电台。
      (4)SAVE键,此键的作用是存储当前电台频道到指定频道,按一次切换到次状态,屏幕上显示“”,此时配合UP键和DOWN键来选择将要存储的频道,
         选择好后再次按一下此键,该频率就存入了指定选择频道,屏幕上显示“”,表示存储成功!

说明:存储频道在这里我只是设置了9个频道,存储的频道最多可以达到256个,但是太多没有多大的意义。如果想增加可自行更改程序!
      没有加自动搜索功能!感觉没必要!
电路图大家线参考一下啊!这个图是我早画的!TDA2822功放部分电路有问题,大家不要参考TDA2822部分电路,等我传修改版!!新图再实验室,一会传上来!

新图纸!现在已经上传!

点击此处下载 ourdev_422507.pdf(文件大小:202K) (原文件名:TEA5767.pdf)

/*****************************************************************
程序实例:基于TWI(IIC)总线控制的TEA5767数字调频收音机实验程序
作者:刘佳杭
          河北理工大学轻工学院07通信2班
日期:2009-01-19
*****************************************************************/

#include <iom16v.h>
#include <macros.h>
//头文件包含

#define uint unsigned int
#define uchar unsigned char
//数据类型宏定义

#define start 0x08
#define add_ack 0x18
#define date_ack 0x28
#define read_ack 0x50
//四个数据是为了检验每次向TWI从设备发送数据或者命令时验证是否成功,当单片机作为主机时可以省略,本程序没有采用。

#define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))        //产生START信号
#define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))        //产生STOP信号
#define Wait() while(!(TWCR&(1<<TWINT)))                //等待当前操作完成
#define TestACK() (TWSR&0xF8)                                //取出状态码
#define SetACK() (TWCR|=(1<<TWEA))                        //产生ACK
#define Writebyte(twi_d) {TWDR=(twi_d);TWCR=(1<<TWINT)|(1<<TWEN);}        //发送一个字节(twi_d为写入的数据)
#define tea5767_add_w 0xc0
#define tea5767_add_r 0xc1

#pragma data:data                        //在数据区定义以下变量和常量
uint frequency_5767=8750;//频率基准是87.5MHZ,美国欧洲中国频段
char frequen_temp1=0,frequen_temp2=0,frequen_temp3=0,frequen_temp4=0;
uchar i=0,band=0,flag=0,flag_key=0,add=1,flag_dis=0,flag_temp=0,temp_save=0;
uchar save_add=1;
uchar receive[];
uchar send[];
uint long_key=0;
uchar rx={0,0,0,0,0};
uint pll;
uchar flag1=0,flag2=0,temp=0,temp1=0;

/**************************************
模块名称:延时子程序
模块功能:软件延时,在晶振为8M时,此延时子程序执行一次是1MS
**************************************/
void delay(uint x)
{
               uint a,b;
               for(a=110;a>0;a--)
                               for(b=x;b>0;b--);
}

void count_dis()
{
        frequen_temp1=(frequency_5767/10)%10;
        frequen_temp2=(frequency_5767/100)%10;
        frequen_temp3=(frequency_5767/1000)%10;
        frequen_temp4=(frequency_5767/10000)%10;
}

//功能:E2PROM单字节读函数
uchar e2prom_read(uint addr)
{
while(EECR & (1<<EEWE));
EEAR = addr;
EECR|=BIT(EERE);
return EEDR;
}


//功能:单字节写函数
void e2prom_write(uint addr,uchar wData)
{
while(EECR & BIT(EEWE));
EEAR=addr;
EEDR=wData;
EECR|=BIT(EEMWE);
EECR|=BIT(EEWE);
}


//功能:E2PROM多字节读函数
void e2prom_reads(uint addr, char *ptr, uint size)
{
uint i;
for(i=0;i<size;i++)
{
ptr=e2prom_read(addr+i);
delay(10);
}
}


//功能:E2PROM多字节读函数
void e2prom_writes(uint addr, uchar *ptr, uint size)
{
uint i;
for(i=0;i<size;i++)
{
e2prom_write(addr+i,ptr);
delay(10);
}
}

void save_channel()
{
        send=(uchar)(frequency_5767/256);
        send=frequency_5767&0x00ff;
        e2prom_writes(add,send,2);
        delay(30);
}


void calculate_pll(unsigned long temp)
{
   pll = (unsigned int)(((temp*10-225)*4000)/32768);
}

/*********向1602液晶写指令**********/
void write_com(uchar com)
{
   PORTA&=0xbf;//rs清0,写指令
           PORTB = (PORTB & 0x0f)|com;//写指令,送高四位
           PORTA|=0x80;//en置位
           PORTA&=0x7f;//en清0

           PORTA&=0xbf;//rs清0,写指令
           PORTB = (PORTB & 0x0f)|(com<<4);//写指令,送高四位
           PORTA|=0x80;//en置位
           PORTA&=0x7f;//en清0
}

/*********向1602液晶写数据**********/
void write_dat(uchar dat)
{   
       PORTA|=0x40;//rs置位,写数据
           PORTB = (PORTB & 0x0f)|dat;//写数据,送低四位
           PORTA|=0x80;
           PORTA&=0x7f;

           PORTA|=0x40;//rs置位,写数据
           PORTB = (PORTB & 0x0f)|(dat<<4);//写数据,送低四位
           PORTA|=0x80;
           PORTA&=0x7f;

}

/*********1602液晶初始化**********/
void init_1602()
{
          PORTA&=0x7f; //EN清0
          write_com(0X33);//
          delay(5);
               write_com(0X32);//先设置为八位模式,然后再设置为4线模式,否则显示出问题!!!!!!!
          delay(5);
          write_com(0X28);//4位数据,16*2两行显示,5*7显示
          delay(5);
               write_com(0X0c);//
          delay(5);
               write_com(0X06);//自动移位
          delay(5);
               write_com(0X01);//自动移位
          delay(5);
}

void send_cgram(uchar len,uchar cgram_add)
{
       uchar k;
                write_com(cgram_add);
                for(k=0;k<len;k++)
                        {
                                //write_dat(table);
                        }
}

/*******************************************
函数名称: LCD1602_gotoXY
功    能: 移动到指定位置
参    数: Row--指定的行
                    Col--指定的列
返回值: 无
/********************************************/
void LCD1602_gotoXY(uchar Row,uchar Col)
{       
        switch (Row)                  //选择行
        {
                case 1:
                        write_com(0x80+Col); break;        //写入第1行的指定列       
                default:
                        write_com(0x80+0x40+Col); break;        //写入第1行的指定列       
        }
}

void LCD1602_disCGRAM(void)
{
        uchar i;
        LCD1602_gotoXY(1,6);   //从第1行第6列开始显示
        for (i = 0;i <4;i++)   //显示前32个字节的内容
        {              
                write_dat(i);               
        }
        LCD1602_gotoXY(2,6);   //从第2行第6列开始显示
        for (i = 4;i <8;i++)   //显示后32个字节的内容
        {              
                write_dat(i);       
        }
}

/*******************************************
函数名称: LCD1602_sendstr
功    能: 向1602液晶写入一个字符串
参    数: ptString--字符串指针
返回值: 无
/********************************************/
void LCD1602_sendstr(uchar *ptString)
{
        while((*ptString)!='\0')               //字符串未结束就一直写
        {
                        write_dat(*(ptString++));
                        delay(0);
        }
}

void display(uchar hang,uchar lie,uchar *str)
{
        LCD1602_gotoXY(hang,lie);
        LCD1602_sendstr(str);
}

void display_one(uchar hang,uchar lie,uchar wor)
{
        LCD1602_gotoXY(hang,lie);
        write_dat(wor);
}

/**************************************
模块名称:TWI总线初始化
模块功能:配置TWI总线,使之工作方式与tea5767相兼容。
**************************************/
void init_twi()
{
    TWCR=0X00; //关闭TWI总线
    TWBR=0x12; //设置传输比特率
    TWSR=0x03; //设置TWI总线的速度,频率不能大于400K,否则5767不工作
    TWCR=0x04; //使能TWI总线
}

/**************************************
模块名称:TWI读取从设备数据程序(从5767读取温度值程序)
模块功能:读取5767
**************************************/
uchar read_byte()
{
        uchar i;
        TWCR|=0x04;
        Wait();
        i=TWDR;
        return i;
}

void read_5767(uchar data)
{
    uchar k;
                Start();
                Wait();
                Writebyte(tea5767_add_r);
                Wait();
                for(k=0;k<5;k++)
                        {
                                rx=read_byte();
                        }
}

void write_5767(uint tx0,uint tx1,uchar tx2,uchar tx3,uchar tx4)
{
                Start();
                Wait();
                Writebyte(tea5767_add_w);
                Wait();
                Writebyte(tx0);
                Wait();
                Writebyte(tx1);
                Wait();
                Writebyte(tx2);
                Wait();
                Writebyte(tx3);
                Wait();
                Writebyte(tx4);
                Wait();
                Stop();
}

void read_channel()
{
        e2prom_reads(add,receive,2);
        frequency_5767=(uint)receive*256+receive;
        //frequency_5767=((int)receive<<8)|receive;
        calculate_pll(frequency_5767);       
        count_dis();
        write_5767(pll/256,pll%256,0x01|band,0x90,0x00);
        display_one(2,9,frequen_temp1+0x30);
        display_one(2,7,frequen_temp2+0x30);
        display_one(2,6,frequen_temp3+0x30);
        if(frequen_temp3==0)       
                        flag_dis=0;
                else
                        flag_dis=1;
        if(flag_dis==0)
                        display_one(2,5,frequen_temp4+0x30);
        else
                        display(2,5," ");       
}

void init_5767()
{
        calculate_pll(frequency_5767);
        write_5767(pll/256,pll%256,0x01,0x90,0x00);// 初始化为:不再搜索模式,
}

void init_sys()
{
                DDRD&=0x0f;
                PORTD|=0XF0;//上拉电阻使能
                DDRB=0XFF;//设置PORTB口数据方向为输出
       DDRA|=0xc0;//设置PORTD口PORTA7和PORTA6为输出
                DDRC|=0X01;
}

uchar scan_press()
{
       i=PIND&0xf0;
                if(i==0xf0)
                        return 0;
                else
                        return 1;
}

uchar key_scan()
{
                uchar value_key=0;
                if(scan_press()==1)
                {
                        delay(8);
                        switch (i)
                        {
                                case 0xf0:
                                       break;
                                       
                                case 0x70:
                                        value_key=1;
                                        delay(30);
                                       break;
                                case 0xb0:
                                        value_key=2;
                                        delay(30);
                                       break;
                                case 0xd0:
                                        while((PIND&0XF0)==0Xd0)
                                                {
                                                        long_key++;
                                                        delay(2);
                                                }
                                        value_key=3;
                                        delay(30);
                                       break;
                                case 0xe0:
                                        while((PIND&0XF0)==0XE0);
                                        delay(5);
                                        value_key=4;
                                        delay(30);
                                       break;
                                default:
                                        value_key=0;
                                        delay(30);
                                        break;
                        }
                }
                return value_key;
}

void key()
{
        scan_press();
        key_scan();
}

void min_control()
{
                        if(frequen_temp1==-1)
                        {
                                frequen_temp1=9;
                                frequen_temp2--;
                        }
                        if(frequen_temp2==-1)
                        {
                                frequen_temp2=9;
                                frequen_temp3--;
                        }       
                        if(frequen_temp3==-1)
                        {
                                frequen_temp3=9;
                                frequen_temp4--;
                        }       
}

void add_control()
{
                if(frequen_temp1==10)
                        {
                                frequen_temp1=0;
                                frequen_temp2++;
                               
                        }
                if(frequen_temp2==10)
                        {
                                frequen_temp2=0;
                                frequen_temp3++;
                        }       
                if(frequen_temp3==10)
                        {
                                frequen_temp3=0;
                                frequen_temp4++;
                        }       
}

void control_tea5767()
{
        uchar k=0;
        k=key_scan();
        if(k!=0)
        {
                switch (k)
                {
                        case 1:
                                        if(flag_key==0)
                                        {
                                                flag2=0;
                                                if(flag1==0)       
                                                        frequency_5767=frequency_5767+10;
                                                count_dis();       
                                                add_control();
                                                if((frequen_temp3==0)&&(frequen_temp2==8)&&(frequen_temp1==0))
                                                        flag1=1;
                                                if(frequen_temp3==0)       
                                                        flag_dis=0;
                                                else
                                                        flag_dis=1;
                                                display_one(2,9,frequen_temp1+0x30);
                                                display_one(2,7,frequen_temp2+0x30);
                                                display_one(2,6,frequen_temp3+0x30);
                                                if(flag_dis==0)
                                                        display_one(2,5,frequen_temp4+0x30);
                                                else
                                                        display(2,5," ");       
                                                calculate_pll(frequency_5767);
                                                write_5767(pll/256,pll%256,0x01|band,0x90,0x00);
                                        }
                                        else
                                        {
                                                while((PIND&0XF0)==0X70);
                                                delay(50);
                                                save_add++;
                                                        if(save_add>0)
                                                        {
                                                                if(save_add==1)
                                                                        add=1;
                                                                if(save_add==2)
                                                                        add=3;
                                                                if(save_add==3)
                                                                        add=5;
                                                                if(save_add==4)
                                                                        add=7;
                                                                if(save_add==5)
                                                                        add=9;
                                                                if(save_add==6)
                                                                        add=11;
                                                                if(save_add==7)
                                                                        add=13;
                                                                if(save_add==8)
                                                                        add=15;
                                                                if(save_add==9)
                                                                        add=17;
                                                                if(save_add==10)
                                                                        save_add=1;
                                                                display(1,5,"CH:");
                                                                display_one(1,8,save_add+0x30);
                                                        }
                                        }
                                       
                                        break;//增加频率
                                       
                        case 2:
                                        if(flag_key==0)
                                        {
                                                flag1=0;
                                                if(flag2==0)       
                                                frequency_5767=frequency_5767-10;
                                                count_dis();
                                                min_control();
                                                if((frequen_temp4==0)&&(frequen_temp3==8)&&(frequen_temp2==7)&&(frequen_temp1==5))
                                                        flag2=1;
                                                if(frequen_temp4!=1)
                                                        flag_dis=1;
                                                else flag_dis=0;
                                                if(frequen_temp3==0)
                                                        flag_dis=0;
                                                display_one(2,9,frequen_temp1+0x30);
                                                display_one(2,7,frequen_temp2+0x30);
                                                display_one(2,6,frequen_temp3+0x30);
                                                if(flag_dis==0)
                                                        display_one(2,5,frequen_temp4+0x30);
                                                else
                                                        display(2,5," ");       
                                                if((frequen_temp3==9)&&(frequen_temp2==9))
                                                        flag_dis=1;//此位是为了消除高位的0,使得显示明了
                                                calculate_pll(frequency_5767);
                                                write_5767(pll/256,pll%256,0x01|band,0x90,0x00);
                                        }
                                        else
                                        {
                                                if(save_add>0)
                                                {
                                                        while((PIND&0XF0)==0Xb0);
                                                        delay(50);
                                                        save_add--;
                                                                if(save_add==1)
                                                                        add=1;
                                                                if(save_add==2)
                                                                        add=3;
                                                                if(save_add==3)
                                                                        add=5;
                                                                if(save_add==4)
                                                                        add=7;
                                                                if(save_add==5)
                                                                        add=9;
                                                                if(save_add==6)
                                                                        add=11;
                                                                if(save_add==7)
                                                                        add=13;
                                                                if(save_add==8)
                                                                        add=15;
                                                                if(save_add==9)
                                                                        add=17;
                                                                if(save_add==0)
                                                                        save_add=9;
                                                                display(1,5,"CH:");
                                                                display_one(1,8,save_add+0x30);
                                                }
                                                else
                                                        save_add=1;
                                        }
                                        break;//减小频率                                       
                        case 3:
                                if(long_key>500)
                                        {
                                                display(1,5,"CH:");
                                                display_one(1,8,save_add+0x30);
                                                long_key=0;
                                                temp_save=temp_save+1;
                                                flag_temp=1;
                                                flag_key=1;
                                                temp=0;
                                        }
                                else
                                        {
                                                flag_temp=0;//flag_temp用于控制单声道和立体声的切换,如果不执行就执行存储频道的读取
                                                flag_key=0;
                                                long_key=0;
                                        }
                                if(temp_save!=0)
                                {
                                        if(temp_save==1)
                                                {
                                                        flag_key=1;
                                                        flag_temp=1;
                                                        display(1,10," READ!");
                                                        display(1,5,"CH:");
                                                        display_one(1,8,save_add+0x30);
                                                }
                                                if(temp_save==2)
                                                {
                                                        flag_temp=1;
                                                        flag_key=0;
                                                        display(1,10,"   OK!");
                                                        ///////////////////////////////////////////////////////////////////////////////////////////////
                                                        ///////////////////////////////////////////////////frequency_5767=EEPROMread(add);//读取频道频率
                                                        read_channel();
                                                        delay(3000);
                                                        display(1,5,"    ");
                                                        display(1,10,"Stereo");
                                                }
                                                if(temp_save==2)
                                                        temp_save=0;
                                }
                                if(flag_temp==0)
                                        temp++;
                                if(temp==1)//3-0xa1
                                        {
                                                display(1,10,"Mono");
                                                band=0x08;
                                                write_5767(pll/256,pll%256,0x01|band,0x90,0x00);
                                        }//单声道
                                if(temp==2)//3-0xa9
                                        {
                                                display(1,10,"Stereo");
                                                band=0x00;
                                                write_5767(pll/256,pll%256,0x01|band,0x90,0x00);
                                        }//立体声
                                if(temp==2)
                                        temp=0;
                                break;//立体声和单声道切换.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        case 4:
                                temp1++;
                                if(temp1==1)
                                        {
                                                display(1,5,"CH:");
                                                display_one(1,8,save_add+0x30);
                                                flag=1;
                                                flag_key=1;
                                        }
                                if(temp1==2)
                                        {
                                                flag=1;
                                                flag_key=0;
                                                display(1,10,"Saved!");
                                                save_channel();//////////////////////////////////////////EEPROMwrite(add,frequency_5767);
                                                delay(2000);
                                                display(1,10,"Stereo");
                                                display(1,5,"    ");
                                        }       
                                if(temp1==2)
                                        {
                                                temp1=0;
                                        }       
                                break;//存储频道
                                default:
                                        break;       
                }
        }
}

void dispaly_init()
{
        count_dis();
        display(1,2,"Designed by");
        display(2,2,"Liu Jiahang");
        delay(5000);
        write_com(0x01);
        delay(10);
       
       
        display(1,0,"Based On IIC-BUS");
        display(2,0,"TEA5767 FM TURNR");
        delay(5000);
        write_com(0x01);
        delay(10);
       
        display(1,3,"Starting...");
        display(2,1,"Please Waiting!");
        delay(3000);
        write_com(0x01);
        delay(10);
       
        display(1,10,"Stereo");
        display(2,1,"FM:");
        display(2,4,"87.5MHZ");
}

/*********主函数**********/
voidmain()
{
   uchar i;//设置循环变量I
          init_sys();
          init_1602();
               init_twi();
               init_5767();
               dispaly_init();
               while(1)
               {
                       key();
                        control_tea5767();
               }
}

jjldc 发表于 2009-2-27 15:36:00

很期待楼主的实物图~~~

Iressa 发表于 2009-2-27 15:40:06

支持一下

nbanba 发表于 2009-2-27 19:27:04

正在研究TEA5767,谢谢楼主。

zhao431431 发表于 2009-2-27 19:41:22

刚弄到一个5767模块。。正好可以用来玩玩。谢谢/。

hellohui 发表于 2009-2-27 20:01:06

我也正在研究TEA5767,非常感谢楼主!

root_007 发表于 2009-2-27 20:27:10

自动搜索不是不实用,而是不成熟,可以找到的算法都是利用芯片的sm功能来实现,实际上这项功能很难用,几乎没有成功的,所以可以用每次增加100k的方法来实现自动收台.

zc3909 发表于 2009-2-27 23:32:28

我也正在研究TEA5767,非常感谢

jiahangsonic 发表于 2009-3-1 20:45:38

阿莫也不给我至酷啊!我全部资料了!

changlu 发表于 2009-3-2 23:20:47

期待楼主的实物图

hyz_avr 发表于 2009-3-2 23:36:19

没图。没啥意思了。。呵呵

mrightt 发表于 2009-3-10 08:51:29

现在的原理图和程序是对应的吧

jiahangsonic 发表于 2009-3-10 12:24:22

肯定是对应的啊!

abcd200844 发表于 2009-3-11 15:09:37

好东西,我顶一下。

tanjianchao 发表于 2009-3-11 22:09:49

我用proteus仿真一下,结果lcd没显示。请提供正确的图纸

jackiezeng 发表于 2009-3-17 21:18:27

楼主把模块的脚位弄出来看看,,

jiahangsonic 发表于 2009-3-20 10:47:09

tanjianchao
你好!肯定没问题!请你检查是否连接好!绝对没有问题!本人已经做出来了!

tanjianchao 发表于 2009-3-20 20:07:33

楼主:是用内部8M时钟吗?还有你用什么版本编译的?可以发HEX文件吗?

jiahangsonic 发表于 2009-3-21 20:20:12

tanjianchao
你好!是用ICCAVR编译的!你如果需要HEX文件请把邮箱给我!我给你发发!
liujiahang@126.com

jiahangsonic 发表于 2009-3-21 20:20:46

还有!是用内部的8M晶振!

tanjianchao 发表于 2009-3-22 12:20:06

楼上的帮忙发HEX到tanjiancha@163.com

vincent.r 发表于 2009-3-22 13:06:19

mark

moviexm 发表于 2009-3-26 09:58:19

TEA5767价格怎么样啊???

woaixuan78 发表于 2009-5-3 23:12:26

顶。回头试试

s2z0g0 发表于 2009-5-25 22:26:46

楼主,编译好写入后,无显示,能说下熔丝位吗,还有原理图和程序是对应的吧。

longquan 发表于 2009-5-25 22:48:53

s2z0g0 发表于 2009-5-25 23:10:32

接上模块液晶有显示,初始化正常,但是,安up和down键,频率乱跳,不能正常调节

s2z0g0 发表于 2009-5-27 19:45:45

使用8M时钟,乱码,改成1M就OK了

Swallow 发表于 2009-5-29 11:19:18

mark!

belove 发表于 2009-5-29 11:24:51

mark

ecat 发表于 2009-8-20 13:30:23

正好要用。

czhaii 发表于 2009-8-20 13:52:04

fy024 发表于 2009-8-20 14:15:56

mark

xingkong911 发表于 2009-9-14 23:22:41

我的程序参考楼主的,写入的数据:0x2C,0xAA,0x01,0x90,0x00
可读出来的确实:0xAC,0xFF,0xFF,0xFF,0xFF
不知各位有没有读写错误的?各位有事如何解决的?

icevel 发表于 2009-12-25 01:16:30

嘿~~ 哪里都能看到你啊呵呵 实验室有人有三片 正想着怎么驱动呢 哈哈   有机会试试   我是 lr

xyq4513 发表于 2009-12-25 10:10:41

研究TEA5767,非常感谢楼主!

fang45 发表于 2009-12-25 11:52:07

mark

laolu 发表于 2009-12-25 12:21:02

mark

411412 发表于 2010-1-11 10:26:00

mark

boy364100 发表于 2010-3-1 21:12:38

不错,MARK~~

guozs1984 发表于 2010-4-4 16:09:46

mark

vipcff 发表于 2010-4-4 20:01:37

谢谢伟大的楼主

damoplus 发表于 2010-4-4 21:48:49

mark

lv998127 发表于 2010-4-4 22:54:59

mark!

starsky0932 发表于 2010-6-2 14:25:21

回复【楼主位】jiahangsonic
-----------------------------------------------------------------------

请教楼主,输出信号一定要接功放么?

我程序写出来了,但是没有搜到台有吱吱声为什么呢?

XUEPENGBIN 发表于 2010-6-2 15:36:24

收藏了

akcheng 发表于 2010-8-14 17:16:03

mark

poet_lee 发表于 2010-9-6 09:29:52

谢谢分享~

minghui2009 发表于 2010-10-3 16:51:09

谢谢分享

wcm_e 发表于 2010-10-13 12:41:56

mark

yekangan 发表于 2010-12-18 00:02:19

楼主有没有考虑3 。6 脚接地前加个电感?

yekangan 发表于 2010-12-18 00:03:51

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_605298Q2RWWL.jpg
(原文件名:KC203数字收音机原理图.jpg)

ST_ATMEL_NXP 发表于 2012-9-20 21:28:17

谢谢楼主,收藏了

dianzichina 发表于 2012-11-3 21:17:52

入手一个收音机,来学习来了。

永兴电子 发表于 2012-11-4 08:04:38

{:smile:}{:smile:}{:smile:}{:smile:}大力支持楼主!!

andyw 发表于 2012-11-19 13:38:19

程序里头那个延时函数来看,不是8M的晶振, 这个程序放在8M的运行,按键处理结果一下就看出来了,数字飞跳,看上去只有奇数或者偶数在走。。。

我改了一下,似乎延时正常了,但是搜不到任何台,等我有时间在研究了

zhaochuanyuAVR 发表于 2012-12-30 14:38:14

感谢楼主的分享!能否发两张PCB的截图和实物?我想看看收音机模块引脚的对应关系,网络上的好多版本都蒙了!

number007cool 发表于 2012-12-30 14:47:25

zhaochuanyuAVR 发表于 2012-12-30 14:38 static/image/common/back.gif
感谢楼主的分享!能否发两张PCB的截图和实物?我想看看收音机模块引脚的对应关系,网络上的好多版本都蒙了 ...

哥们你的微型四轴可以飞了?

zhaochuanyuAVR 发表于 2012-12-30 14:51:47

呵呵 还记得我呢!我刚出差回来!很忙没时间整,我看有人做的板子形状跟我的一样都飞了!

nsj21n 发表于 2013-1-5 12:51:31

不错,有点意思,自己做的东西好玩!

JIANYANG 发表于 2013-3-5 11:54:47

正需要谢谢分享

heng2007 发表于 2013-3-5 13:19:56

很感兴趣,先收藏再研究
页: [1]
查看完整版本: 我也上一个TEA5767做的调频收音机!M16+LCM1602(冷光屏)+TDA2822!全部资料!