基于单片机的数字FM收音机设计与实现

合集下载

51单片机控制RDA5820制作 数字FM对讲机收音发射一体机程序

51单片机控制RDA5820制作 数字FM对讲机收音发射一体机程序

#include<reg52.h>#define uchar unsigned char#define uint unsigned intuint key_=0;uint k_1=0;uint a_3=0;uint m1,m_1,m_4;uint a_4=0;uint k_2=0;uint i_1=0;uint n_0=1;uint l1=1;uint l2=1;uint z,p=1;uint j_=1;uint r_i=0x0427;double b1=0;uint a1=0;uint a2=0;uint FreqTune=0x0000;uint vol=0xa;const uchar FmAddr = 0x22;sbit SDA =P0^0;sbit SCL =P0^1;sbit KEY =P1^4;sbit KEYu=P1^0;sbit KEYd=P1^2;sbit KEY1=P1^1;sbit KEY2=P1^3;sbit rs=P0^5;sbit rw=P0^6;sbit en=P0^7;sbit P02=P0^2;sbit P03=P0^3;sbit P04=P0^4;uchar code table[]="0123456789."; uchar code table_[]="Mhz Vol:";uchar code table_1[]="RT";uchar code table1[]="Welcome";uchar code table2[]="Digital FMdevice"; uchar code table3[]="Please choose"; uchar code table_3[]="s ";uchar code table4[]="function keys"; uchar code table5[]=" -Interphone "; uchar code table6[]=" FM receiver "; uchar code table7[]=" -FM receiver "; uchar code table8[]=" FM transmitter"; uchar code table9[]=" -FM transmitter"; uchar code table10[]=" Transmit Data "; uchar code table11[]=" -Transmit Data "; uchar code table12[]=" Interphone "; uchar code table14[]="Waiting ";uchar code table15[]="............... "; uchar code table16[]=" Interphone "; uchar code table18[]=" FM RX ";uchar code table20[]=" FM TX ";uchar code table22[]=" TX DATA ";uchar code tabletp[]=" ";uchar codetable23[]={0x00,0x1F,0x0A,0x04,0x04,0x0 4,0x04,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F, };uchar codetable24[]={0x00,0x1F,0x0A,0x04,0x04,0x0 4,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x0E,0x1E, };uchar codetable25[]={0x00,0x1F,0x0A,0x04,0x04,0x0 4,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1C ,};uchar codetable26[]={0x00,0x1F,0x0A,0x04,0x04,0x0 4,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x18, } ;uchar codetable27[]={0x00,0x1F,0x0A,0x04,0x04,0x0 4,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, };uchar codetable28[]={0x00,0x1F,0x0A,0x04,0x04,0x0 4,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };uchar codetable29[]={0x02,0x06,0x1E,0x1E,0x1E,0x1 E,0x06,0x02,};void Dela_y(uint c) //延时{int i=0;for(i=0;i<c;i++);}void DelayIT(uint del_1)//延时 10ms * del {uint i,j;for(i=0; i<del_1; i++)for(j=0; j<1827; j++);}void delay_lcd(uint n)//lcd延时{uint x,y;for(x=n;x>0;x--)for(y=110;y>0;y--);}void lcd_wcom(uchar com)//lcd写命令{rs=0;rw=0;P3=com;delay_lcd(5);en=1;en=0;}void lcd_wdat(uchar dat)//lcd写数据{rs=1;rw=0;P3=dat;delay_lcd(5);en=1;en=0;}void lcd_init()//lcd初始化{lcd_wcom(0x38);lcd_wcom(0x0c);lcd_wcom(0x06);lcd_wcom(0x01);}void OpenIIC(){SDA = 1;SCL = 1; Dela_y(5);SDA = 0; Dela_y(5);SCL = 0; Dela_y(5);}void CloseIIC(){SDA = 0 ;SCL = 1; Dela_y(5);SDA = 1; Dela_y(5);SCL = 1; SDA = 1; Dela_y(150); //防止过快的读取造成EPPROM 来不及反应}}void IICWriteByte( uchar byte ){uchar i=0;int f=30000;bit bitdata;for(i=0;i<8;i++){bitdata=byte>>(7-i) & 1;SDA = bitdata;SCL =1; Dela_y(5);SCL = 0; Dela_y(5);}SCL = 1;while(SDA && -f); Dela_y(5);SCL = 0; Dela_y(5);}void IICWrite(uchar uaddr, uchar romaddr, uint rdata,bit _16b){uchar temp;OpenIIC();IICWriteByte(uaddr);IICWriteByte(romaddr);if(_16b){temp =(uchar)((rdata>>8) & 0x00ff) ; IICWriteByte(temp);}temp = (uchar) (rdata & 0xff); IICWriteByte(temp);CloseIIC();}uchar IICReadByte(bit next){uchar buf =0,i=0;for(i=0;i<8;i++){buf <<=1;SCL = 1; buf |= SDA; Dela_y(5);SCL = 0; Dela_y(5);}if(next){SDA = 0; SCL = 1; Dela_y(5);SCL = 0; Dela_y(5); SDA = 1;}else{SDA = 1; SCL = 1; Dela_y(5);SCL = 0; Dela_y(5); SDA=0;}return buf;}uint IICRead(uchar uaddr, uchar ramAddr,bit _16b){uint buf;OpenIIC();IICWriteByte(uaddr);IICWriteByte(ramAddr);OpenIIC();IICWriteByte(uaddr | 0x01);if(_16b){buf = IICReadByte(1);buf = buf<<8;buf =buf|IICReadByte(0);}else{buf = IICReadByte(0);}CloseIIC();return buf;}uint FM_ReadReg(uchar regAddr)//读取FM 模块的寄存器{return IICRead(FmAddr,regAddr,1);}void FM_WriteReg(uchar regAddr,uint dat)//写FM模块的寄存器{IICWrite(FmAddr,regAddr,dat,1);}void FM_SetFreq_RX(uint FreqTune_1)//设置RX频道的频率87-1*,步进频率100k0x00{FM_WriteReg(3,(FreqTune_1<<6) |0x0010);}void FM_SetFreq__RX(uint FreqTune__1)//设置RX频道的频率65-90,步进频率100k 0x00{FM_WriteReg(53,0x28a);FM_WriteReg(53,0x384);FM_WriteReg(3,(FreqTune__1<<6) |0x001c);}void FM_SetVolume(uint vol_)//设置音量0x0{FM_WriteReg(5,vol_|=0x88a0);}void show(uint addr,double m)//lcd显示初始地址addr及数字xxx.x{uchar n;uchar _n=10;for(n=0;n<5;n++){if(n==0) _n=m/100;if(n==1) _n=((int)m/10)%10;if(n==2) _n=(int)m%10;if(n==3) _n=10;if(n==4) _n=((int)(m*10))%10;lcd_wcom(addr+n);lcd_wdat(table[_n]);}}void show_(uint a_ddr,double k_)//lcd显示初始地址addr及数字xx{uchar n;uchar _n=10;for(n=0;n<2;n++){if(n==0) _n=(int)k_/10;if(n==1) _n=(int)k_%10;lcd_wcom(a_ddr+n);lcd_wdat(table[_n]);}}void rssi(uint r_addr,int rssi) //LCD信号强度指示显示(地址,0——5){lcd_wcom(0x40);if(rssi==0){for(m1=0;m1<16;m1++){lcd_wdat(table28[m1]);}};if(rssi==1){for(m1=0;m1<16;m1++){lcd_wdat(table27[m1]);}};if(rssi==2){for(m1=0;m1<16;m1++){lcd_wdat(table26[m1]);}};if(rssi==3){for(m1=0;m1<16;m1++){lcd_wdat(table25[m1]);}};if(rssi==4){for(m1=0;m1<16;m1++){lcd_wdat(table24[m1]);}};if(rssi==5){for(m1=0;m1<16;m1++){lcd_wdat(table23[m1]);}};lcd_wcom(r_addr); //显示地址for(m1=0;m1<2;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(m1);} ;}void kanji()//开机画面{uchar m1;DelayIT(20);lcd_init(); //液晶初始化lcd_wcom(0x84); //显示地址for(m1=0;m1<7;m1++) //将table1[Welcome]中的数据依次写入1602显示{lcd_wdat(table1[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table2[Digital FMdevice]中的数据依次写入1602显示{lcd_wdat(table2[m1]);}DelayIT(100);lcd_init(); //液晶初始化lcd_wcom(0x81); //显示地址for(m1=0;m1<13;m1++) //将table3[Please choose]中的数据依次写入1602显示{lcd_wdat(table3[m1]); DelayIT(4) ;}lcd_wcom(0x80+0x41); //显示地址for(m1=0;m1<13;m1++) //将table4[function keys]中的数据依次写入1602显示{lcd_wdat(table4[m1]); DelayIT(5) ;}DelayIT(50) ;}void K_S()//主键盘扫描{if(a_3!=1)//有后退按键{a_3=1;if(k_1==0)//对讲机模式{lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table5[-Interphone]中的数据依次写入1602显示{lcd_wdat(table5[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table6[FM receiver]中的数据依次写入1602显示{lcd_wdat(table6[m1]);}};if(k_1==1)//收音机模式{lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table12[]中的数据依次写入1602显示{lcd_wdat(table12[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table7[]中的数据依次写入1602显示{lcd_wdat(table7[m1]);}};if(k_1==2)//FM发射模式{lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table6[]中的数据依次写入1602显示{lcd_wdat(table6[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table9[]中的数据依次写入1602显示{lcd_wdat(table9[m1]);}};if(k_1==3) //第四模式{lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table8[]中的数据依次写入1602显示{lcd_wdat(table8[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table11[]中的数据依次写入1602显示{lcd_wdat(table11[m1]);}};};if(KEYu==0) key_--;//按键判断if(KEYd==0) key_++;if(k_1!=key_%4) //有上下选择按键{k_1=key_%4;if(k_1==0){lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table5[]中的数据依次写入1602显示{lcd_wdat(table5[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table6[]中的数据依次写入1602显示{lcd_wdat(table6[m1]);}};if(k_1==1){lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table12[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table7[m1]);}};if(k_1==2){lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table6[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table9[m1]);}};if(k_1==3){lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table11[]中的数据依次写入1602显示{lcd_wdat(table8[m1]);}lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table11[m1]);}};DelayIT(30);};}使用道具举报13#枫霰中级会员发表于 2012-1-19 16:22:58|只看该作者接上:void mace()//主程序扫描{•串个门•加好友•打招呼•发消息if(k_1==0)//第一模式{for(;m_1>0;m_1--){m_4=8;lcd_init(); //液晶初始化for(;m_4<12;m_4++){lcd_wcom(0x80+0x44); //显示地址for(m1=0;m1<m_4;m1++) //将table15[ ]中的数据依次写入1602显示{lcd_wdat(table15[m1]);DelayIT(4);}}lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table16[m1]);}};z=1;};if(k_1==1) //第二模式{for(;m_1>0;m_1--){m_4=8;lcd_init(); //液晶初始化for(;m_4<12;m_4++){lcd_wcom(0x80+0x44); //显示地址for(m1=0;m1<m_4;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table15[m1]);DelayIT(4);}};lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<18;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table18[m1]);}};z=2;};if(k_1==2)//第三模式{for(;m_1>0;m_1--){m_4=8;lcd_init(); //液晶初始化for(;m_4<12;m_4++){lcd_wcom(0x80+0x44); //显示地址for(m1=0;m1<m_4;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table15[m1]);DelayIT(5);}};lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table20[m1]);}};z=3;};if(k_1==3&&k_2==1) //第四模式{for(;m_1>0;m_1--){m_4=8;lcd_init(); //液晶初始化for(;m_4<12;m_4++){lcd_wcom(0x80+0x44); //显示地址for(m1=0;m1<m_4;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table15[m1]);DelayIT(5);}};lcd_init(); //液晶初始化lcd_wcom(0x80); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table22[m1]);}};z=4;};}void main() //主程序{ uint z_1,Tune;P1=0xff;FM_WriteReg(2,0xd281);//rda5820地址FM_ReadReg(0x0b);P02=0;P03=0;kanji(); //开机画面while(1) //进入程序死循环{if(KEY2==0&&k_2<1) k_2++;//左右按键判断if(KEY1==0&&k_2>0) k_2--;if(k_2==0) //没有右按键{n_0=1;m_1=1;K_S(); //上下模式建扫描};if(k_2==1) //有右键{a_3=0;mace(); //模式扫描if(z==1) //第一模式{if(KEY==1){for(;p>0;p--) FM_SetFreq__RX(0x00);//设置频率65Mhzlcd_wcom(0x80+0x46); //显示地址for(m1=0;m1<8;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table_[m1]);} ;lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<1;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table_1[m1]);} ;for(;l1>0;l1--)l2=1;FM_WriteReg(0x40,0x0000);//进入接收模式if(KEYu==0&&KEY2==0&&vol<0xf)vol+=0x1;else if(KEYd==0&&KEY2==0&&vol>0x0)vol-=0x1;else if(KEYu==0&&Tune<20)a1++,Tune+=1;else if(KEYd==0&&Tune>0)a1--,Tune-=1; //声音,频率调节FreqTune=Tune*10;if(b1!=65+(double)Tune*1){b1=65+(double)Tune*1;FM_SetFreq__RX(FreqTune);//写入频率=65+tune};z_1=0xff&(FM_ReadReg(0x0a));FM_SetVolume(vol); //写入音量show(0x80+0x41,65+((double)z_1)/10);show_(0x80+0x4e,((double)vol)); //显示频率音量rssi(0x8d,(uint)((FM_ReadReg(0x0b)>>10)/5)); //显示信号强度if( ((FM_ReadReg(0x0b)>>10)/5) ){lcd_wcom(0x8f);for(m1=6;m1<7;m1++) //将s显示{lcd_wdat(table10[m1]);} ;};if( !((FM_ReadReg(0x0b)>>10)/5) ){lcd_wcom(0x8f);for(m1=0;m1<1;m1++) //将显示{lcd_wdat(table10[m1]);} ;};DelayIT(10);//延时 10ms * del};if(KEY==0){for(;l2>0;l2--){l1=1,FM_WriteReg(0x40,0x0001),FM_SetFreq__RX(FreqTune), lcd_wcom(0x80+0x40); //显示地址for(m1=0;m1<16;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(tabletp[m1]);} ;};FM_WriteReg(0x40,0x0001) ;z_1=0xff&(FM_ReadReg(0x0a));show(0x80+0x44,65+((double)z_1)/10);lcd_wcom(0x80+0x43); //显示地址for(m1=1;m1<2;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table_1[m1]);} ;if(KEYu==0&&KEY==0&&r_i<0x043b)r_i+=0x000c;//功率调节if(KEYd==0&&KEY==0&&r_i>0x0405)r_i-=0x000c;FM_WriteReg(0x42,r_i);rssi(0x80+0x4d,(uint)((r_i&0xff)/0x0c));DelayIT(10);//延时 10ms * del};};if(z==2) //第二模式{p=1;for(;j_>0;j_--)FM_SetFreq_RX(0x00);FM_WriteReg(0x40,0x0000);lcd_wcom(0x80+0x46); //显示地址for(m1=0;m1<8;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table_[m1]);} ;if(KEYu==0&&KEY2==0&&FreqTune<0xd2)a1+=10,FreqTune +=0x000a;else if(KEYd==0&&KEY2==0&&FreqTune>0x00)a1-=10,FreqTune-=0x000a;else if(KEYu==0&&KEY==0&&vol<0xf)a2++,vol+=0x1;else if(KEYd==0&&KEY==0&&vol>0x0)a2--,vol-=0x1;else if(KEYu==0&&FreqTune<0xd2)a1++,FreqTune+=0x0001; else if(KEYd==0&&FreqTune>0x00)a1--,FreqTune-=0x0001; if(b1!=87+(double)a1*0.1){b1=87+(double)a1*0.1;FM_SetFreq_RX(FreqTune);};FM_SetVolume(vol);z_1=0xff&(FM_ReadReg(0x0a));show(0x80+0x41,87+((double)z_1)/10);show_(0x80+0x4e,((double)vol));rssi(0x8d,(uint)((FM_ReadReg(0x0b)>>10)/5));if( ((FM_ReadReg(0x0b)>>10)/5) ){lcd_wcom(0x8f);for(m1=6;m1<7;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table10[m1]);} ;};if( !((FM_ReadReg(0x0b)>>10)/5) ){lcd_wcom(0x8f);for(m1=0;m1<1;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table10[m1]);} ;};DelayIT(10);//延时 10ms * del};if(z==3) //第三模式{ p=1;for(;j_>0;j_--)FM_SetFreq_RX(0x00);FM_WriteReg(0x40,0x0001) ;lcd_wcom(0x80+0x49); //显示地址for(m1=0;m1<3;m1++) //将table[]中的数据依次写入1602显示{lcd_wdat(table_[m1]);} ;if(KEYu==0&&KEY2==0&&FreqTune<0xd2)a1+=10,FreqTune +=0x000a;else if(KEYd==0&&KEY2==0&&FreqTune>0x00)a1-=10,FreqTune-=0x000a;else if(KEYu==0&&KEY==0&&r_i<0x043b)r_i+=0x000c;else if(KEYd==0&&KEY==0&&r_i>0x0405)r_i-=0x000c;else if(KEYu==0&&FreqTune<0xd2)a1++,FreqTune+=0x0001; else if(KEYd==0&&FreqTune>0x00)a1--,FreqTune-=0x0001; if(b1!=87+(double)a1*0.1){b1=87+(double)a1*0.1;FM_SetFreq_RX(FreqTune);};z_1=0xff&(FM_ReadReg(0x0a));FM_WriteReg(0x42,r_i);show(0x80+0x44,87+((double)z_1)/10);rssi(0x8d,(uint)((r_i&0xff)/0x0c));DelayIT(10);//延时 10ms * del};if(z==4) //第四模式{p=1;};};};}使用道具举报枫霰中级会员•串个门•加好友•打招呼14#发表于 2012-1-19 17:08:50|只看该作者本帖最后由枫霰于 2012-1-19 17:10 编辑RDA5820收音+发射模块PL102BH-20.pdf 资料•发消息近几天刚刚学了IIC总线控制,想亲自实践一下,就从众多IIC控制的芯片中找到了这个RDA5820模块,刚从网上淘回来就开始写控制它的C51程序,经过一周多努力终于调试成功。

基于单片机和TEA5767HN的FM收音机系统的设计

基于单片机和TEA5767HN的FM收音机系统的设计

在当前数字信息技术和网络技术高速发展的PC时代。

嵌入式技术越来越同人们的生活紧密相关。

其中掌上嵌入式电子产品更是给人们的生活带来了很大方便和很多快乐。

尽管生活方式不断发生变化,但无线电仍然很流行。

因此,本文针对TEA5767HN数字收音机芯片的控制机理,阐述了通过该芯片和C51单片机来将FM数字收音机嵌入智能电子产品的设计方法。

1 系统整体设计思路本立体声FM数字收音机的设计目标是通过单片机AT89S52来控制FM接收芯片TEA5767HN,从而实现可自动搜索并存储10多个电台节目(也可手动搜索并存储电台节目)。

所收听电台的频率和台号及时钟可在显示模块中的LCD上显示,音量则可通过音量加、减按键自主控制,并能存储关机时设定的数据以及闹钟功能。

具体系统设计框图如图1所示。

本系统主要由单片机AT89S52控制模块、TEA5767HN收音模块、音量控制模块、ROM存储模块、显示模块、按键模块和电源模块七部分组成。

本系统硬件设计的关键则在于FM接收、音频处理等模拟部分;软件设计的关键在于控制模块与收音模块之间的通信。

从图1中可以看出,控制模块仅仅通过I2C总线与收音模块连接并控制收音机工作。

本设计使用单片机P3口的两个I/O脚来模拟I2C总线的SDA和SCL时序并与TEA5767HN 通信;TEA5767HN输出的左右声道音频信号可通过音量控制模块进行前级放大及音量控制,然后输入到TDA7057进行后级功率放大,最后输出到扬声器。

单片机可通过I2C总线进行音量调节;ROM存储模块主要用于存储电台数据、音量数据和时钟数据,为存储和读取数据带来方便。

系统可通过按键进行操作,通过MCU检测按键信号并经单片机实现手动搜台、自动搜台、音量控制、时钟调整等功能,各项操作提示和操作结果均可通过LCD显示出来。

稳压电源模块产生的5 V和3.3 V电压可分别为各个模块器件供电。

2 硬件系统电路设计由于本系统硬件设计的关键在于FM接收、音频处理等模拟电路部分,其余电路均为常规电路,因而其硬件系统的设计着重分析收音模块、音量控制模块这两部分电路。

基于STM32开发板的FM收音机设计

基于STM32开发板的FM收音机设计

题目:基于单片机的数字FM收音机设计生产组长:岳昌运设计组长:曾路遥设计小组成员:岳昌运、曾路遥、吴佩欣、杨林昌、于廷照、苑志刚、张成坤、赵奕婷、田密、龚鹤灵、陆洋2012年9月13日基于单片机的数字FM 收音机设计一、概述:本设计是一个数字调频收音机,调频就是频率调制,所谓频率调制就是原来等幅恒频的高频信号的频率,随着调制信号(音频信号)的幅度变化而变化,调频收音机(FM Radio )就是接收这些频率调制的无线电信号,经过解调还原成原信号的电子设备。

FM Radio 电路一般主要由接收天线、振荡器、混频器、AGC (自动增益控制)、中频放大器、中频限幅器、中频滤波器、鉴频器、低频静噪电路、搜索调谐电路、信号检测电路及频率锁定环路、音频输出电路等组成。

本设计就是用单片机控制集成了上述所有FM 功能的专用芯片,设计一个数字FM 收音机系统。

二、总体设计: 总体系统结构:第七组人员分工:组号 七 设计组长 曾路遥组员 岳昌运、张成坤、杨林昌、吴佩欣、苑志刚、于廷照、田密、赵奕婷、陆洋、龚鹤灵 设计名称 基于单片机的调频收音机 实现功能 实现定点搜台拓展功能 实现自动、手动收听无线电台组员分工Si4720模块:岳昌运 吴佩欣 张成坤 曾路遥音频模块 : 杨林昌 龚鹤灵 路洋OLED 和键盘: 苑志刚 于廷照 田密 赵奕婷 控制模块:曾路遥 岳昌运CPU Si4720WM 8978键盘LED三、关键模块设计:Si4720功能框图:四、测试结果:key1为手动;key2为自动;key3为手动加0.1MHz;key4为手动减0.1MHz;OLED显示当前频率开机显示“HELLO FM PLAYER”,开机可以收听到106MHz,按key2后开始自动从76.0MHz搜台,然后每次自动加0.1MHz,到108.6MHz之后自动返回76.0MHz重新开始搜索。

期间可以按下key1可以停止自动调节,频率固定,按下key3、key4可以手动加减0.1MHz。

基于单片机的FM收音机的设计

基于单片机的FM收音机的设计

济南大学泉城学院毕业设计题目基于单片机的FM收音机的设计学院工学院专业电气工程及其自动化班级电气1301学生李帅先学号2013040039指导教师刘韦二〇一五年四月二十五日摘要本设计是一个数字调频收音机(FM),就是接受频率调制的无线电信号,经过解调还原成原信号的电子设备,利用单片机控制有FM功能的专用芯片,设计一个收音机系统。

单片机自从20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

单片机的应用改变了控制系统传统的设计思想和方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。

例如,本文所要论述的通过单片机STC89C54来控制TEA5767HN芯片使其实现调频功能。

STC89C54单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。

现在人们常使用的收音机为手动调频收台,使用较为麻烦,而且由于接收灵敏度不高,所接收的频段较窄。

本设计采用的是TEA5767HN芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。

TEA5767HN芯片内集成了完整的IF频率选择和鉴频系统,只需很少的低成本外围元件,就可实现FM收音机的全部功能。

随着信息化的发展,TEA5767系列单片数字收音机也就被广泛应用到数码音响,使用宏晶科技生产的8位微控制器STC89C54来控制数字收音机模块TEA5767,构成一个FM数字收音机系统。

本设计主要是体现单片机系统的自动控制能力,更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。

关键词:STC89C54单片机;TEA5767HN芯片;ABSTRACTThe design is a digital FM radio (FM), It is to receive the frequency modulated radio signals, electronic equipment restored to the original signal after demodulation, the use of dedicated chip MCU control FM functions, design a radio system.The singlechip has come out since the 1970s, compared to is valued people's and the attention by the extremely high performance price, therefore the application is very broad, the development is very quick. The application of SCM has changed the design idea and method of the traditional control system. Previously used by most of the hardware circuit of the control function, is the MCU software methods to achieve. With the combination of hardware or software to replace hardware and can improve the control system performance is called the micro control technology. STC89C54 Monolithic integrated circuit's characteristic is the volume is small, the integration rate is high, the weight is light, antijamming ability, is not high to the environment request, the low in price, the reliability is high, the flexibility is good, the development is easier. What this design uses is the TEA5767 chip, it is promotes by PHILIPS Corporation in view of the low voltage application single chip digit harmonious FM stereophonic receiver chip. In the TEA5767 chip integrated the complete IF frequency selection and the frequency discrimination system, only need the very few low cost periphery part, be possible to realize the FM radio's complete function. With the development of information technology, the TEA5767 series monolithic digital radios will be widely applied to digital audio, use the macro crystal technology to produce 8 bit micro controller STC89C54 to control the module of digital radio TEA5767, a FM digital radio system.This design is mainly the automatic control ability of MCU system, more important is the design idea and method of the application of SCM has changed the traditional control system.Keywords:STC89C52 , Nokia5110 , TEA5767目录摘要 (I)ABSTRACT (II)1前言................................................................................................ .. (1)1.1 选题的背景 (1)1.2 课题的意义 (1)2 设计内容与步骤 (3)2.1 确定机械手的总体方案 (3)2.2设计机械手的各执行构件 (3)2.3气动液压系统的设计 (4)3 设计方案的制动与选择 (5)3.1 机械手搬运规格及参数 (5)3.2 方案的制定 (5)3.3 方案的总结分析 (8)3.4 方案的优化设计 (9)4机械手主要零部件的设计 (13)4.1 机械手抓部件主要参数的确定 (13)4.1.1 推力液压缸选型的确定 (13)4.1.2 推力液压缸行程的确定 (16)4.1.3 机械手指的设计 (18)4.1.4 机械手骨架设计 (19)4.1.5 轴承的计算与选择 (19)4.1.6 立轴的设计 (20)4.2移动架部件主要参数的确定 (21)4.2.1 中间升降液压缸型号的确定 (21)4.3 滑动板部件主要参数的确定 (23)4.3.1 滑动板的外形设计 (23)4.3.2 支撑轴的设计 (24)4.3.3 滑轮的设计 (25)4.4 支撑架部件主要参数的确定 (26)4.4.1 推动液压缸的选型确定 (26)4.4.2 支撑架的设计 (27)5重要的零部件的校核 (29)5.1键的校核 (29)6结论 (31)参考文献 (32)致谢 (33)1前言1.1选题背景现如今,新媒体技术蓬勃发展。

51单片机控制的FM收音机

51单片机控制的FM收音机

专业综合课程设计基于单片机控制的FM收音机班级:通信(三)班成绩:基于单片机控制的FM收音机摘要:单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。

正因为单片机有如此多的优点,因此其应用领域之广,几乎到了无孔不入的地步。

在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。

我们可以开发利用单片机系统以获得很高的经济效益。

更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。

例如,本文所要论述的通过单片机来控制TEA5767HN芯片及驱动LCD1602液晶屏实现FM收音并显示频率。

现在人们常使用的收音机为手动调频收台,使用较为麻烦,而且由于接收灵敏度不高,所接收的频段较窄。

本设计采用的是TEA5767HN芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。

TEA5767HN芯片内集成了完整的IF频率选择和鉴频系统,只需很少的低成本外围元件,就可实现FM收音机的全部功能。

另外,它具有高性能的RF AGC电路,其接收灵敏度高;参考频率选择灵活;可实现自动搜台。

关键词:89C52单片机;TEA5767HN芯片;2822功率放大器AbstractThis test constitute with stc89c52 singlechip micyoco, tea5767 model,2822 power amplifier,1602 and peripheral circuit.In the design process,we used modular design for several types,such as searching model,display model,storage model and some ancillary function.STC series singlechip has very good control ability and stable level to meet the requirements.前言:本设计研究FM收音机分为硬件电路和程序设计两个方面。

大学生毕业设计 基于TEA5767和单片机的数字FM收音机设计

大学生毕业设计 基于TEA5767和单片机的数字FM收音机设计

摘要本设计是一个数字调频收音机(FM),就是接受频率调制的无线电信号,经过解调还原成原信号的电子设备,利用单片机控制有FM功能的专用芯片,设计一个基于TEA5767模块的数字FM收音机。

本设计采用模块化设计,整个系统由控制模块,FM音频模块和功放模块组成。

本设计核心采用的是TEA5767芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。

TEA5767芯片内集成了完整的IF频率选择和鉴频系统,就可实现FM收音机的全部功能。

采用的是Lcd1602液晶显示屏,实现单片机的频率值与模块内部的寄存器(PLL值)之间的相互转换,从而带动功放的工作。

功能:自动收台,手动收台,液晶显示。

采用主要模块有:(1)STC89C52单片机模块。

(2)Lcd1602显示模块。

(3)TEA5767收音机模块。

关键词:STC89C52 Lcd1602 TEA5767模块目录摘要 (2)1.绪论 (5)1.1 课题背景 (5)1.2 课题概述 (5)2.设计要求与思路 (5)2.1 收音机的设计要求 (5)2.2 系统设计整体思路 (5)3.主要电路模块的实现方案比较及选择 (6)3.1 控制模块方案选择 (7)3.2 液晶显示模块方案选择 (7)3.3 无线芯片方案选择 (7)4.系统电路图 (8)4.1 微控制器模块 (8)4.2 FM模块 (9)4.2.1 FM模块介绍 (9)4.3 工作原理 (10)4.3.1串行总线工作模式 (10)4.3.2 串行总线基本操作 (10)4.3.3数据传送 (12)4.3.4、三线总线工作模式 (12)5.系统软件设计 (13)5.1 主程序设计 (13)5.2 流程图 (14)6.硬件电路测试与检测 (14)6.1 硬件装配 (14)6.2 系统测试 (14)7.结束语 (15)8.参考文献 (15)9.致谢 (15)10.附录 (16)10.1 电路原理图 (16)10.2 电路PCB图 (16)10.3 电路实物图 (17)10.3 元器件清单 (18)11.操作框图 (19)程序框图 (20)12.程序 (21)12.1 主程序 (21)12.2 I2C总线 (26)12.3 Lcd1602程序 (29)基于TEA5767模块的数字FM收音机设计一.绪论1.1课题背景随着科学技术的不断发展,新颖的调频收音机的不断出现,技术不断的提高,设计出来的收音机外型精致和小巧。

51单片机FM收音机课程设计报告

51单片机FM收音机课程设计报告

微处理器系统综合设计51单片机FM收音机课程设计报告姓名:朱洪涛学号:311309020430学院:计算机科学与技术学院班级:通信1304微处理器系统综合设计1 设计要求51单片机FM收音机分为硬件电路和程序设计两个方面。

从硬件电路来说,主要是实现所需电压值、稳压、搜台、控制和频率显示等方面;从系统程序来说,主要是通过软件来实现RDA5807模块的功能,最后将程序经过编译后所生成的后缀为.HEX的文件烧录到单片机芯片中,使用IIC总线方式调台,并且得到当前的频率,处理并实现频率转换、显示。

2 项目概述2.1 主要功能该项目实现的主要功能及参数:(1)采用液晶作为显示器。

(2)可接收87.5~108MHz范围内的调频广播电台。

(3)立体声,耳机输出声音。

(4)按键可实现音量调节和自动搜台两个功能。

2.2 设计方案项目采用“电子积木+底板”的形式,通过电子积木拼接,实现项目功能。

主要积木包括:51单片机核心板、独立按键模块、FM模块、LCD1602液晶模块。

系统框图微处理器系统综合设计51单片机FM收音机实物图程序框图微处理器系统综合设计3 硬件电路RDA5802E芯片为核心的,新一代数字调频收音机模块。

具有微处理器系统综合设计4 软件程序4.1 程序流程本项目采用C51语言开发,在集成开发环境KEIL中编写完成。

微处理器系统综合设计(1)初始化开机后,完成的初始化包括:1、串口初始化。

串口初始化之后,可通过printf语句通过串口打印信息。

可以作为程序调试的方法。

2、液晶初始化。

液晶LCD1602初始化,并显示“开机界面”,然后再清屏。

(2)主循环1、显示当前频率及音量信息。

调用Lcd_Display(),根据变量frequency及volume显示。

2、根据键值,执行相应程序。

如果4个按键有按下的,分别会执行:自动搜台加减和音量加减。

4.2 主要函数(1)库函数I2C.h该文件包括了I2C总线驱动的一些基本函数。

基于单片机数字FM收音机的设计方法与实现(毕业论文)

基于单片机数字FM收音机的设计方法与实现(毕业论文)

学科分类号0806本科毕业论文(设计)题目(中文):基于单片机的数字FM收音机设计(英文):The Design of FM Radio Based onMCU学生姓名:某某学号:0810404003系别:物理与信息工程系专业:通信工程专业指导教师:某某讲师起止日期:2011年12月—2012年5月2012年5月12日怀化学院本科毕业设计报告书诚信声明作者郑重声明:所呈交的本科毕业设计,是在指导老师的指导下,独立进行研究所取得的成果,成果不存在知识产权争议。

除文中已经注明引用的内容外,报告书中不含任何其他个人或集体已经发表或撰写过的成果。

对毕业设计做出重要贡献的个人和集体均已在文中以明确的方式标明。

本声明的法律结果由作者承担。

本科毕业设计报告书作者签名:年月日目录摘要 (I)关键词 (I)Abstract (II)Key words (III)1 前言 (3)2 方案设计与论证·······················································错误!未定义书签。

3 硬件电路设计 (7)3.1 主控电路 (7)3.2 音频输出模块电路 (10)3.3 FM收音电路 (12)3.4 LED数码管电路 (16)3.5 按键电路 (17)3.6 I2C总线简介 (18)3.7 电路装配注意事项 (21)4 软件设计 (21)4.1主程序设计 (22)4.2数码管显示控制子程序 (24)4.3 收音机控制子程序 (25)5 系统测试 (26)6 结论与心得 (27)参考文献 (28)致谢 (29)附录A (30)附录B (37)基于单片机的FM调频收音机摘要调频收音机本次所设计的题目是调频收音机的设计。

RDA5820和51单片机制作的FM数字收音机源代码及电路原理图

RDA5820和51单片机制作的FM数字收音机源代码及电路原理图

* 晶振:8M*/#include <reg52.h>#include <string.h>#define ChannelCount 50 //最多支持多少个台,因为常驻内存,多了RAM放不下#define uchar unsigned char#define uint unsigned inttypedef struct{uchar Freq;uchar Rssi;}ChannelInfo;sbit SDA = P2^0;sbit SCL = P2^1;sbit key1 = P3^4;sbit key2 = P2^7;sbit key3 = P2^6;sbit key4 = P2^5; // P3^7;sbit LcdEn = P3^4;sbit LcdRs = P3^5;uchar Channel = 0;uchar FreqTune = 0;const uint MinFreq = 870; //起始频率* 100KHzconst uint MaxFreq = 1080; //最高频率* 100KHzconst uchar FmAddr = 0×22; //FM模块IIC 地址const uchar EpAddr = 0xA0; //24C02 EPPRom 的地址uchar RSSI = 0; //信号强度uchar ChannelTune[ChannelCount];uchar code LevlChar[5][8] ={{0x1F,0×11,0x0A,0×04,0×04,0×04,0×04,0×04},{0×00,0×00,0×00,0×00,0×00,0×00,0×06,0x1E},{0×00,0×00,0×00,0×00,0×06,0x1E,0x1E,0x1E}, //显示型号强度的自定义字符{0×00,0×00,0×06,0x1E,0x1E,0x1E,0x1E,0x1E},{0×06,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E}};uchar vol = 0×8; //音量0~0xFuchar Func = 0×0; //当前功能号bit AutoScan = 0; //标记当前是不是在自动搜台bit Mute = 0; //标记是否被静音uchar KeyNumber = 0;void OpenIIC();void CloseIIC();void IICWrite(uchar uaddr, uchar romaddr, uint rdata,bit _i6b);void IICWriteByte( uchar byte );uint IICRead(uchar uaddr, uchar romaddr,bit _i6b);uchar IICReadByte(bit next);void FM_SetFreq();void FM_SetVolume();uint FM_ReadReg(uchar regAddr); //读取FM模块的寄存器void FM_WriteReg(uchar regAddr,uint dat); //写FM模块的寄存器uchar FM_GetRSSI(); //获取当前的信号强大void Delay(uint c);bit KeyScan();void BeginScan();void Lcd_DispNumber(uint number);void Lcd_Init();void Lcd_Comm(uchar cmd);void Lcd_Data(uchar dat);void Lcd_String(char* dat);void Lcd_DispRssi();void Lcd_DispFreq();void Lcd_Refresh();void Lcd_DispDiscript();void Eprom_LoadInitData();uint Eprom_Read(uchar addr,bit _16bit);void Eprom_Write(uchar addr,uint dat,bit _16bit);void main(){P3 = 0xff;P2 = 0xff;Delay(10000); //延时,等待外部FM模块的启动Eprom_LoadInitData(); //从EppRom 加载频道音量等信息 FM_WriteReg(2,0xd281); //启动FM模块FM_SetVolume(); //设置启动音量FM_SetFreq(); //设置默认频道的频率Lcd_Init();Lcd_Refresh();while(1){if( KeyScan()){Lcd_Refresh();}}}void Eprom_LoadInitData(){uint result = 0;int i=0;result =Eprom_Read(0,0);if(result>0){ vol = (uchar)result –1;}result =Eprom_Read(1,0);Channel = (uchar)result;for(i=0;i<ChannelCount;i++){result =Eprom_Read(i * 2 + 2,1);ChannelTune[i] = result;}FreqTune = ChannelTune[Channel];}void Eprom_Write(uchar addr,uint dat,bit _16bit) {IICWrite(EpAddr,addr,dat,_16bit);}uint Eprom_Read(uchar addr,bit _16bit){return IICRead(EpAddr,addr,_16bit);}uint FM_ReadReg(uchar regAddr){return IICRead(FmAddr,regAddr,1);}void FM_WriteReg(uchar regAddr,uint dat) {IICWrite(FmAddr,regAddr,dat,1);}void FM_SetFreq(){FM_WriteReg(3,(FreqTune<<6) | 0×10);}void FM_SetVolume(){uint reg2H;if(vol>0){if(Mute){reg2H = FM_ReadReg(2);reg2H |= 0×4000;FM_WriteReg(2,reg2H);}FM_WriteReg(5,vol);}else{Mute = 1;reg2H = FM_ReadReg(2);reg2H &= 0xBFFF;FM_WriteReg(2,reg2H);}Eprom_Write(0,vol+1,0);}void Lcd_Init(){uchar CGRamAddr = 0×40;int i,j;LcdEn = 0;Lcd_Comm(0×38);Lcd_Comm(0x0c);Lcd_Comm(0×06);Lcd_Comm(0×01);for(j=0;j<5;j++){Lcd_Comm(CGRamAddr + 8 * j); //建立自定义字符(显示信号强度的) for(i=0;i<8;i++){Lcd_Data(LevlChar[j][i]);Delay(510);}}}void Lcd_Comm(uchar cmd){LcdRs =0;P0 = cmd;Delay(50);LcdEn = 1;Delay(50);LcdEn = 0;}void Lcd_Data(uchar dat){LcdRs = 1;P0 = dat;LcdEn = 1;Delay(50);LcdEn = 0;}void Lcd_String(char* dat){char *p;int j, i=strlen(dat);for(j=0;j<i;j++){p=dat + j;Lcd_Data(*p);}}void Lcd_DispRssi(){int i;Lcd_Comm(0×80);for(i=0;i<5;i++){Lcd_Data(‘‘);}RSSI = FM_GetRSSI();Lcd_Comm(0×80);Lcd_Data(0×00);if(RSSI>=1) Lcd_Data(0×01);if(RSSI>=2) Lcd_Data(0×02);if(RSSI>=3) Lcd_Data(0×03);if(RSSI>=4) Lcd_Data(0×04);}void Lcd_DispFreq(){uint curFreq = MinFreq + FreqTune;int i;Lcd_Comm(0×85);for(i=5;i<16;i++){Lcd_Data(‘‘);}Lcd_Comm(0×80+6);if(curFreq>=1000)Lcd_Data(48 +curFreq /1000 % 10); Lcd_Data(48 +curFreq /100 % 10);Lcd_Data(48 +curFreq /10 % 10);Lcd_Data(‘.’);Lcd_Data(48 + curFreq % 10);Lcd_Data(‘M’);Lcd_Data(‘H’);Lcd_Data(‘Z’);}void Lcd_DispDiscript(){int i;Lcd_Comm(0×80+0×40);for(i=0;i<15;i++){Lcd_Data(‘‘);}Lcd_Comm(0×80+0×40);switch(Func){case 0:Lcd_String(“Channel:”);Lcd_DispNumber(Channel+1);break;case 1:Lcd_String(“Volume:”);Lcd_DispNumber(vol);break;case 2:Lcd_String(“Tune”);break;case 3:Lcd_String(“Auto Scan”);}}void Lcd_Refresh(){Lcd_DispRssi();Lcd_DispFreq();Lcd_DispDiscript();}void Lcd_DispNumber(uint number){int i=0,len;char str[6]={‘\0′,’\0′,’\0′,’\0′,’\0′,’\0′}; char temp;dostr[i++] = ’0′+ (number % 10); number /= 10;}while(number) ;len = strlen(str);for(i=0;i<len/2;i++){temp = str[i];str[i] = str[len-i-1];str[len-i-1] = temp;}Lcd_String(str);}bit KeyScan(){bit keyRel = 0; //按键释放检测char value=0;int i;uint temp;if(AutoScan) return 0;if(KeyNumber==0){if(key3==0){Delay(50);if(key3==0){KeyNumber =3;}}if(key4==0){Delay(50);if(key4==0){KeyNumber=4;}}if(key2==0){Delay(50);if(key2==0)KeyNumber=2;}}return 0;}else{switch(KeyNumber){case 1:if(key1==1)keyRel = 1; break;case 2:if(key2==1)keyRel = 1; break;case 3:if(key3==1)keyRel = 1; break;case 4:if(key4==1)keyRel = 1; break;}if(keyRel){switch(KeyNumber){case 2:Func++;if(Func>3) Func = 0;break;case 3:value = -1;break;case 4:value = 1;break;}if(KeyNumber>2){if(Func==0){if((value > 0 && Channel<ChannelCount) || (value<0 && Channel > 0)) {Channel+=value;FreqTune= ChannelTune[Channel];FM_SetFreq();Eprom_Write(1,Channel, 0);}else if(Func==1){if((value > 0 && vol<0xF) || (value<0 && vol > 0)){vol+=value;FM_SetVolume();}}else if(Func==2){if((value > 0 && FreqTune<0xd2) || (value<0 && FreqTune > 0)) {FreqTune+=value;ChannelTune[Channel] = FreqTune;FM_SetFreq();Eprom_Write(Channel * 2 + 2 ,FreqTune,1);}}else if(Func==3) //开始自动扫描{AutoScan = 1;BeginScan();AutoScan = 0;Channel = 0;FreqTune = ChannelTune[0];Func = 0;FM_SetFreq();//覆盖EppRom中的所有的频道for(i=0;i<ChannelCount;i++){temp = ChannelTune[i];Eprom_Write(i * 2+2,temp,1);}Eprom_Write(0×01,0,0); //重置EPPROM中的频道号为0}}KeyNumber=0;}return keyRel;}}//全自动搜索void BeginScan(){uint state;int i=0,count=0;bit cmp = 0;uint seekth = 0×8; //灵敏度0~127,默认为8 灵敏度越低越可能搜索到假台,高了可能一些信号弱一点的频道被跳过。

基于单片机的FM收音机设计

基于单片机的FM收音机设计

ELECTRONIC ENGINEERING & PRODUCT WORLD2022.4电子产品世界基于单片机的FM收音机设计Design of home internet detection system based on STM32许可嘉,杨晓军 (成都大学电子信息与电气工程学院,成都610106)摘 要:该设计是单片机控制电路与TEA5767模块电路及音频功率放大电路共同组成的FM收音机电路,用来实现频道接收、保存、播放等功能。

系统采用STC89C52为主控,TEA5767作为数字信号处理器,I2C总线协议为主控与数字信号处理器之间的通信协议,可以实现频道自动搜索、接收、保存、播放等功能。

通过LCD显示器实时显示当下操作及相应频道所在频率。

最终测试结果表明:该设计可以实现频率在87.5 MHz~108 MHz调频广播的接收,本设计能够达到了既定的设计目标。

关键词:单片机;FM收音机;TEA5767;I2C总线随着现代科学技术的不断发展,电子产品也不断更新换代,单片机的广泛应用使用使现在的电子产品设计越来越方便、功能越来越好,而单片机是所有微处理器中性价比最高的一种,它的功能不断完善,种类不断增加,因此它的应用领域也不断扩大,本文我们将单片机与FM收音机芯片综合运用起来,设计了一款可以实现调频、存台的FM收音机系统。

1 系统方案1.1 系统总体设计该系统设计采用模块化设计,主要由存储模块,主控制器,数字处理芯片和音频功率放大器组成。

系统工作原理框图如图1所示,由主控制器接收按键信号进行人机交互,通过I2C总线,主控制器作为主机,TEA5767为从机,双机通信,TEA5767芯片输出音频信号经LM386放大后通过耳机或扬声器播放,系统运行时,收听电台的频率可在LCD显示器上实时显示,通过按键手动控制频率搜台,或切换至自动搜台模式,音频输出设备音量可由电位器调节[8]。

2 系统硬件设计该系统的硬件设计部分分为TEA5767数字处理电路、主控制器电路和音频功放电路。

大学生毕业设计基于TEA5767和单片机的数字FM收音机设计资料

大学生毕业设计基于TEA5767和单片机的数字FM收音机设计资料

摘要本设计是一个数字调频收音机(FM),就是接受频率调制的无线电信号,经过解调还原成原信号的电子设备,利用单片机控制有FM功能的专用芯片,设计一个基于TEA5767模块的数字FM收音机。

本设计采用模块化设计,整个系统由控制模块,FM音频模块和功放模块组成。

本设计核心采用的是TEA5767芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。

TEA5767芯片内集成了完整的IF频率选择和鉴频系统,就可实现FM收音机的全部功能。

采用的是Lcd1602液晶显示屏,实现单片机的频率值与模块内部的寄存器(PLL值)之间的相互转换,从而带动功放的工作。

功能:自动收台,手动收台,液晶显示。

采用主要模块有:(1)STC89C52单片机模块。

(2)Lcd1602显示模块。

(3)TEA5767收音机模块。

关键词:STC89C52 Lcd1602 TEA5767模块目录摘要 (2)1.绪论 (5)1.1 课题背景 (5)1.2 课题概述 (5)2.设计要求与思路 (5)2.1 收音机的设计要求 (5)2.2 系统设计整体思路 (5)3.主要电路模块的实现方案比较及选择 (6)3.1 控制模块方案选择 (7)3.2 液晶显示模块方案选择 (7)3.3 无线芯片方案选择 (7)4.系统电路图 (8)4.1 微控制器模块 (8)4.2 FM模块 (9)4.2.1 FM模块介绍 (9)4.3 工作原理 (10)4.3.1串行总线工作模式 (10)4.3.2 串行总线基本操作 (10)4.3.3数据传送 (12)4.3.4、三线总线工作模式 (12)5.系统软件设计 (13)5.1 主程序设计 (13)5.2 流程图 (14)6.硬件电路测试与检测 (14)6.1 硬件装配 (14)6.2 系统测试 (14)7.结束语 (15)8.参考文献 (15)9.致谢 (15)10.附录 (16)10.1 电路原理图 (16)10.2 电路PCB图 (16)10.3 电路实物图 (17)10.3 元器件清单 (18)11.操作框图 (19)程序框图 (20)12.程序 (21)12.1 主程序 (21)12.2 I2C总线 (26)12.3 Lcd1602程序 (29)基于TEA5767模块的数字FM收音机设计一.绪论1.1课题背景随着科学技术的不断发展,新颖的调频收音机的不断出现,技术不断的提高,设计出来的收音机外型精致和小巧。

基于单片机的多功能收音机的设计与实现讲诉

基于单片机的多功能收音机的设计与实现讲诉

学号09700113毕业设计说明书基于单片机的多功能收音机的设计与实现学生姓名李炯专业名称电子与信息工程系指导教师电子与信息工程系2013年6 月16 日基于单片机的多功能收音机的设计与实现Microcontroller-based multi-function design and implementation of radio摘要单片机自从20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,因此应用很广泛,发展很快。

单片机的特点是体积非常小、集成度很高、重量轻、抗干扰的能力强,对环境的要求不高,价格还算低廉,可靠性比较高,灵活性好,开发较容易。

正是因为单片机有如此多的优点,因此其应用领域很广泛,几乎到了无孔不入的地步。

在我国,单片机已经被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。

我们可以开发利用单片机系统以获得很高的经济效益。

更重要的意义是对单片机的应用可以改变控制系统传统的设计思想和方法。

在以前采用的硬件电路实现的大部分控制功能,正在利用单片机通过软件方法来实现。

这种以软件结合硬件或者取代硬件并能提高系统性能的控制技术称为微控制技术。

例如,本文所要论述的通过单片机来控制TEA5767芯片及驱动LED数码管实现FM收音并显示频率。

现在人们通常使用的收音机为手动调频收台,使用较为麻烦,且由于接收灵敏度不高,所接收的频段范围较小。

本设计采用的是TEA5767芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。

TEA5767芯片内集成了完整的IF频率选择和鉴频系统,只需很少的低成本外围元件,就可实现FM收音机的全部功能。

另外,它具有高性能的RF AGC电路,其接收灵敏度高、参考频率选择灵活、可实现自动搜台。

关键字:单片机;TEA5767;LED八段数码管目录第一章述 (1)1.1收音机的简介及发展史 (1)1.2收音机的分类 (3)1.3收音机的基本原理 (3)第二章多功能收音机的总体设计 (5)2.1 设计收音机的功能介绍 (5)2.2 总体设计思路 (5)2.3芯片的选择 (6)第三章收音机的硬件设计原理 (8)3.1 收音机的单片机模块功能设计 (8)3.2 收音机的FM收音模块设计 (11)3.2.1 TEA5767芯片介绍 (11)3.2.2 I2C总线协议介绍 (13)3.3收音机的显示模块设计 (15)3.4收音机的功放模块设计 (17)3.5 串口转USB功能设计 (18)3.5.1 PL2302原理简介 (18)3.5.2 MAX323原理简介 (20)3.6 电源模块设计 (22)第四章软件设计 (24)4.1编程语言选择 (24)4.2 软件总体设计结构 (24)4.3 收音机频率调节模块软件设计 (26)4.3.1 频率计算软件设计 (26)4.3.2 自动搜台软件设计 (27)4.3.3 手动搜台软件设计 (29)4.4 I2C总线控制模块软件设计 (31)4.5 LED显示模块软件设计 (32)4.6 成果展示 (34)第五章总结 (36)致谢 (37)参考文献 (38)附录 (40)附录1. 电路设计总原理图 (40)附录2. TEA5767芯片管脚定义及内部结构原理 (41)附录3. 软件设计总程序 (45)第一章概述收音机一直在人们的娱乐生活中占有非常重要的位置,从原来的老式晶体管收音机到今天的网络收音机,说明通过广播可以享受生活,这一直是人们喜欢的生活方式。

基于FM模块的数字调谐收音机设计

基于FM模块的数字调谐收音机设计

基于FM模块的数字调谐收音机设计一、设计目的(1)掌握数字调谐收音机的组成原理与设计方法。

(2)掌握FM模块(KT0913)的性能与使用方法。

(3)设计一个用单片机控制并显示调谐频率的简易数字调谐收音机,自己实际控制电路及软件的设计与调试,写出实验报告。

二、设计任务与要求(1)FM接受频率范围:88~108MHz。

(2)设计硬件控制电路和单片机控制程序,完成对FM收音机模块的控制。

(3)具有点头自动搜索功能,能够控制电台搜索方向,搜索到电台信号后即可收听电台播音。

(4)具有电台频率显示和电台存储功能,至少可存储5个电台。

(5)给出详细的电路原理图,程序流程图和主要代码。

三、调频收音机原理与FM模块介绍(1)调频收音机系统框图及原理说明图2.2.1.1调频接收系统框图(超外差式)如上图所示,调频广播系统中广泛采用超外差式接收和解调电路,下面简述其各个部分原理:接收天线接收自由空间的电磁波,并将其转换为高频信号。

调谐回路一般包括电台选择电路,实现电台选择和阻抗匹配的作用。

调谐回路后一般还有高频放大电路,将接收天线得到的微弱信号放大,并送入混频电路。

本机振荡电路:通常为LC正弦波发生电路,给混频器送出一个等幅的高频振荡信号进行差频,本机振荡的频率一般比从天线回路中选出的高频信号高出或低出一个中频值。

混频电路:之所以采用所谓超外差调频接收,就是因为传统高放式收音机虽然比直接检波式收音机灵敏度高、功率大,但是选择性还较差,调谐也比较复杂。

把从天线接收到的高频信号放大几百甚至几万倍,一般要有几级的高频放大,每一级电路都有一个谐振回路,当被接收的频率改变时,谐振电路都要重新调整,而且每次调整后的选择性和通带很难保证完全一样,为了克服这些缺点,现在的收音机几乎都采用超外差式电路;超外差接收,即将本机振荡电路送出的高频信号和由高频放大器送来的已调高频信号进行差频,产生一已调中频信号,但信号的调制规律保持不变。

混频的目的是将不同电台的已调高频信号的载频差拍至一个固定的中频频率,但仍保持信号的调制特征。

(完整word版)基于51单片机的数控调频收音机

(完整word版)基于51单片机的数控调频收音机

课程设计论文题目:基于RDA5807的数控FM收音机院(系):信息与通信学院专业:电子信息工程学生姓名:杜俊峰学号:1100220509指导教师:蔡晓东2013 年12月15日摘要此收音机基于RDA5807收音模块,通过STC89C52单片机来控制频率显示、音量控制,单片机与收音模块之间通过IIC通信协议来进行通信控制。

该数控收音机具有噪音消除、软静音、低音增强,而且灵敏度高、噪声小,抗干扰能力强,能够在液晶屏上实时显示频率和声音。

并且体积小、方便携带。

关键词:RDA5807,STC89C52.IIC通信AbstractThis radio radio module based RDA5807 by STC89C52 microcontroller to control the frequency display, through IIC communication protocol for communication between the control volume control, microcontroller and radio module. The digital radio with noise cancellation, soft mute, bass boost, and high sensitivity, low noise, strong anti-interference ability to display the frequency and sound in real time on the LCD screen. And small, easy to carry.Key words:RDA5807,STC89C52 、IIC目录引言 (1)1 设计要求及方案选择 (1)1.1 设计要求 (1)1.2 方案选择 (1)1.2.1 方案对比 (1)1.2.2 方案构图 (2)1.2.3 各部分作用 (2)2 理论分析与设计 (3)2.1 单片机最小系统设计 (3)2.1.1 STC89C52特性 (3)2.1.2 STC89C521引脚功能 (3)2.2 收音模块及存储芯片电路设计 (4)3 电路设计 (6)3.1 硬件电路设计 (6)3.1.1单片机最小系统电路 (6)3.1.2 模块电路设计 (6)4 软件设计 .............................................................. 错误!未定义书签。

51单片机+TEA5767+数码管的FM收音机制作电路图+程序

51单片机+TEA5767+数码管的FM收音机制作电路图+程序

51单片机+TEA5767+数码管的FM收音机制作电路图+程序展开全文现在网上很多网友都在做和TEA5767有关的东东,今天找到个MP4的尸体,屏碎了,打开一看刚好有能用的TEA5767,验证了一下这个东西的实用性,用手上刚好有的51单片机开发板和lm386,为这个集成模块搭建了一个测试平台,下面是试验图片,如果在西安的朋友,肯定知道我手的那个电台了,哈哈!图片一:这个图可以看到整体结构了,其实硬件电路很简单,看看pdf文档完全可以搭建出来,单片机实验板是以前开发的商品。

图片二:这一部分是主要部分了,中间上面那个就是拆下来的TEA5767,它右边是LM386,做功率放大的,下面的扬声器是从一个笔记本里边拆下来的(太败家了,衰!)。

下面的程序可以直接运行了,绝对没问题的,这个也是参考了几个网站的程序,做了些修改,可以手动自动调台了,手动调台有问题,算法好像不对,但是出来的频率问题不大,自动搜索的结果是正确的,我要提醒大家一点,自动搜台的效果和接受强度,也就是天线,有很大的关系,我的天线是一截不到15mm的软导线,good luck!1./*********************************************************** ****************************************2.TEA5767采用I2C接口控制,单片机用AT89S52.晶振11.0592Mhz。

采用四位LED显示。

3.TEA5767采用I2C接口控制.TEA5767读写数据都是5个字节,其中PLL参数14位. Fosc =11.0592Mhz.4.************************************************************ ****************************************/5.#include "regx52.h"6.#include "intrins.h"7./*********************************************************** ************************/8.#define max_freq 108000 //108Mhz9.#define min_freq 87500 //87.5Mhz10.#define max_pll 0x339b //108MHz时的pll.11.#define min_pll 0x299d //87.5MHz时的pll.12.#define Add_Freq 113.#define Dec_Freq 014.#define REFERENCE_FREQ 32.76815.#define ATIIcxxDriverAddressW 0xC016.#define ATIIcxxDriverAddressR 0xC117.#define _Nop()_nop_(),_nop_(),_nop_(),_nop_(),_nop_() /*定义空指令*/18.#define LED P019.void Initialization(void);20.void Get_Pll(void);21.void Get_Frequency(void);22.void Search(unsigned char mode);23.void Auto_Search(unsigned char mode);24.unsigned char GetKey();25.void Delay(unsigned char Time);26.void Led_Display(unsigned long i);27.void DelayD(unsigned char Time);28.unsigned char GetKey();29.void Delay(unsigned char Time);30.void ATIICxx_PWrite(unsigned char *McuAddress,unsigned char count);31.void ATIICxx_PRead(unsigned char *McuAddress,unsigned char count);32.void I2C_Send_Byte(unsigned char sendbyte);33.unsigned char I2C_Receive_Byte(void);34.void I2C_Start(void);35.void I2C_Stop(void);36.void I2C_Ack(void);37.void I2C_Noack(void);38.39./******************************************************** *************/40./* IIC读写程序芯片型号*/41.sbit I2C_SCK=P3^0; /*实时时钟时钟线引脚 */42.sbit I2C_SDA=P3^1; /*实时时钟数据线引脚 */43.sbit k1=P1^7;44.sbit k2=P1^6;45.sbit k3=P1^5;46.sbit k4=P1^4;47./******************************************************** *************/48./******************************************************** ****************/49.sbit ge=P2^3;50.sbit shi=P2^2;51.sbit bai=P2^1;52.sbit qan=P2^0;53.unsigned char tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳54.//0, 1, 2 3 4 5 6 7 8 955./******************************************************** ****************/56.unsigned char radio_write_data[5]={0x2d,0x56,0x20,0x11,0x00}; //初始化写入TEA5767的数据(FM89.8Mhz)57.unsigned char radio_read_data[5];58.unsigned int Pll_Data;59.unsigned long Frequency_Data;60./******************************************************** ***************************/61.void Initialization(void)62.{63.TMOD = 0x11;64.TH0 = 0x5d;65.TL0 = 0x3d;66.TR0 = 0; //25ms67.TH1 = 0x5d;68.TL1 = 0x3d;69.TR1 = 0; //25ms70.T2CON = 0x30;71.T2MOD = 0x00;72.RCAP2H = 0xFE;73.TH2 = RCAP2H;74.RCAP2L = 0xFB;75.TL2 = RCAP2L;76.TR2 = 0; //2400bps77.PCON = 0x00;78.SCON = 0xD0;79.IP = 0x14;80.EX0 = 1;81.IT0 = 1;82.ET0 = 1;83.EX1 = 1;84.IT1 = 1;85.ES = 0;86.EA = 0;87.}88.89./******************************************************** ***************************/90.//读TEA5767状态,并转换成频率91.void Radio_Read(void)92.{93.unsigned char temp_l,temp_h;94.Pll_Data = 0;95.96.ATIICxx_PRead(&radio_read_data[0],5);97.98.temp_l = radio_read_data[1];99.temp_h = radio_read_data[0];100.temp_h &= 0x3f;101.Pll_Data = temp_h*256+temp_l;102.Get_Frequency();103.}104.105./******************************************************** ***************************/106.//由PLL计算频率107.void Get_Frequency(void)108.{109.unsigned char hlsi;110.unsigned int npll = 0;111.112.npll = Pll_Data;113.hlsi = radio_read_data[2]&0x10;114.if (hlsi)115.Frequency_Data = (unsigned long)((float)(npll)*(float)REFERENCE_FREQ*(float)0.25-225); //频率单位:KHz116.else117.Frequency_Data = (unsigned long)((float)(npll)*(float)REFERENCE_FREQ*(float)0.25+225); //频率单位:KHz118.}119.120./******************************************************** ***************************/121.//由频率计算PLL122.void Get_Pll(void)123.{124.unsigned char hlsi;125.126.hlsi = radio_read_data[2]&0x10;127.if (hlsi)128.Pll_Data = (unsigned int)((float)((Frequency_Data+225)*4)/(float)REFERENCE_FREQ); //频率单位:k129.else130.Pll_Data = (unsigned int)((float)((Frequency_Data-225)*4)/(float)REFERENCE_FREQ); //频率单位:k131.}132.133./******************************************************** ***************************/134.//手动设置频率,mode=1,+0.1MHz; mode="0:-0".1MHz ,不用考虑TEA5767用于搜台的相关位:SM,SUD135.void Search(unsigned char mode)136.{137.Radio_Read();138.139.if(mode)140.{141.Frequency_Data += 100;142.if(Frequency_Data > max_freq)143.Frequency_Data = min_freq;144.}145.else146.{147.Frequency_Data -= 100;148.if(Frequency_Data < min_freq)149.Frequency_Data = max_freq;150.}151.152.Get_Pll();153.radio_write_data[0] = Pll_Data/256;154.radio_write_data[1] = Pll_Data%256;155.radio_write_data[2] = 0x41;156.radio_write_data[3] = 0x11;157.radio_write_data[4] = 0x40;158.ATIICxx_PWrite(&radio_write_data[0],5);159.}160.161./******************************************************** ***************************/162.//自动搜台,mode=1,频率增加搜台; mode="0:频率减小搜台".163.void Auto_Search(unsigned char mode)164.{165.Radio_Read();166.Get_Pll();167.if(mode)168.{169.radio_write_data[2] = 0xb1;170.if(Pll_Data > max_pll)171.{172.Pll_Data = min_pll;173.}174.}175.else176.{177.radio_write_data[2] = 0x41;178.if(Pll_Data < min_pll)179.{180.Pll_Data = max_pll;181.}182.}183.184.radio_write_data[0] = Pll_Data/256+0x40;185.radio_write_data[1] = Pll_Data%256;186.radio_write_data[3] = 0x11;187.radio_write_data[4] = 0x40;188.ATIICxx_PWrite(&radio_write_data[0],5);189.Radio_Read();190.while(!(radio_read_data[0]&0x80)) //RF电台就绪标志191.{192.Radio_Read();193.}194.}195.196./******************************************************** ***************************/197.void main(void)198.{199.//0x2d,0x56,0x20,0x11,0x00200.unsigned long temp;201.Initialization();202.radio_write_data[0] =0x2A;203.radio_write_data[1] =0xB6;204.radio_write_data[2] =0x41;205.radio_write_data[3] =0x11;206.radio_write_data[4] =0x40;207.ATIICxx_PWrite(&radio_write_data[0],5);//初始化TEA5767(89.8Mhz)208.Frequency_Data = 89800;209.210.while(1)211.{ temp= Frequency_Data;212.Led_Display(Frequency_Data);213.214.if( k1 == 0)215.{ DelayD(2);216.while(k1 == 0);//等待键松开217.Search(Add_Freq);218.}219.if( k2 == 0)220.{ DelayD(2);221.while(k2 == 0);//等待键松开222.Search(Dec_Freq);223.}224.if( k3 == 0)225.{ DelayD(2);226.while(k3 == 0);//等待键松开227.Auto_Search(Add_Freq);228.}229.if( k4 == 0)230.{ DelayD(2);231.while(k4 == 0);//等待键松开232.Auto_Search(Dec_Freq);233.}234.235.}236.}237.238./******************************************************** *************/239.struct bytedata_2240.{241.unsigned char ByteH;242.unsigned char ByteL;243.};244.245.union int2byte246.{247.unsigned int IntData;248.struct bytedata_2 ByteData;249.};250./******************************************************** *************/251.//启动I2C总线,退出时SCL为低252.void I2C_Start(void)253.{254.I2C_SDA=1; /*发送起始条件的数据信号*/255._Nop();256.I2C_SCK=1;257._Nop();_Nop();_Nop();_Nop();_Nop();/*起始条件建立时间大于4.7us,延时*/258.I2C_SDA=0; /*发送起始信号*/259._Nop();_Nop();_Nop();_Nop();_Nop(); /* 起始条件锁定时间大于4μs*/260.I2C_SCK=0; /*钳住I2C总线,准备发送或接收数据 */261._Nop();_Nop();_Nop();_Nop();_Nop();/*起始条件建立时间大于4.7us,延时*/262.}263.//*停止I2C总线264.void I2C_Stop(void)265.{266.I2C_SCK=0;267.I2C_SDA=0; /*发送结束条件的数据信号*/268._Nop(); /*发送结束条件的时钟信号*/269.I2C_SCK=1; /*结束条件建立时间大于4μs*/270._Nop();_Nop();_Nop();_Nop();_Nop();271.I2C_SDA=1; /*发送I2C总线结束信号*/272.}273.//MCU等待应答位(返回0表示应答)274.bit I2C_WaitAck(void)275.{276.unsigned char ucErrTime = 200; //因故障接收方无ACK,超时值。

基于单片机的多功能收音机的设计与实现讲诉

基于单片机的多功能收音机的设计与实现讲诉

学号09700113毕业设计说明书基于单片机的多功能收音机的设计与实现学生姓名李炯专业名称电子与信息工程系指导教师电子与信息工程系2013年6 月16 日基于单片机的多功能收音机的设计与实现Microcontroller-based multi-function design and implementation of radio摘要单片机自从20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,因此应用很广泛,发展很快。

单片机的特点是体积非常小、集成度很高、重量轻、抗干扰的能力强,对环境的要求不高,价格还算低廉,可靠性比较高,灵活性好,开发较容易。

正是因为单片机有如此多的优点,因此其应用领域很广泛,几乎到了无孔不入的地步。

在我国,单片机已经被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。

我们可以开发利用单片机系统以获得很高的经济效益。

更重要的意义是对单片机的应用可以改变控制系统传统的设计思想和方法。

在以前采用的硬件电路实现的大部分控制功能,正在利用单片机通过软件方法来实现。

这种以软件结合硬件或者取代硬件并能提高系统性能的控制技术称为微控制技术。

例如,本文所要论述的通过单片机来控制TEA5767芯片及驱动LED数码管实现FM收音并显示频率。

现在人们通常使用的收音机为手动调频收台,使用较为麻烦,且由于接收灵敏度不高,所接收的频段范围较小。

本设计采用的是TEA5767芯片,它是由PHILIPS公司推出的针对低电压应用的单芯片数字调谐FM立体声收音机芯片。

TEA5767芯片内集成了完整的IF频率选择和鉴频系统,只需很少的低成本外围元件,就可实现FM收音机的全部功能。

另外,它具有高性能的RF AGC电路,其接收灵敏度高、参考频率选择灵活、可实现自动搜台。

关键字:单片机;TEA5767;LED八段数码管目录第一章述 (1)1.1收音机的简介及发展史 (1)1.2收音机的分类 (3)1.3收音机的基本原理 (3)第二章多功能收音机的总体设计 (5)2.1 设计收音机的功能介绍 (5)2.2 总体设计思路 (5)2.3芯片的选择 (6)第三章收音机的硬件设计原理 (8)3.1 收音机的单片机模块功能设计 (8)3.2 收音机的FM收音模块设计 (11)3.2.1 TEA5767芯片介绍 (11)3.2.2 I2C总线协议介绍 (13)3.3收音机的显示模块设计 (15)3.4收音机的功放模块设计 (17)3.5 串口转USB功能设计 (18)3.5.1 PL2302原理简介 (18)3.5.2 MAX323原理简介 (20)3.6 电源模块设计 (22)第四章软件设计 (24)4.1编程语言选择 (24)4.2 软件总体设计结构 (24)4.3 收音机频率调节模块软件设计 (26)4.3.1 频率计算软件设计 (26)4.3.2 自动搜台软件设计 (27)4.3.3 手动搜台软件设计 (29)4.4 I2C总线控制模块软件设计 (31)4.5 LED显示模块软件设计 (32)4.6 成果展示 (34)第五章总结 (36)致谢 (37)参考文献 (38)附录 (40)附录1. 电路设计总原理图 (40)附录2. TEA5767芯片管脚定义及内部结构原理 (41)附录3. 软件设计总程序 (45)第一章概述收音机一直在人们的娱乐生活中占有非常重要的位置,从原来的老式晶体管收音机到今天的网络收音机,说明通过广播可以享受生活,这一直是人们喜欢的生活方式。

单片机控制的FM收音机

单片机控制的FM收音机

单⽚机控制的FM收⾳机基于单⽚机控制的FM收⾳机摘要:单⽚机⾃20世纪70年代问世以来,以极其⾼的性能价格⽐受到⼈们的重视和关注,所以应⽤很⼴,发展很快。

单⽚机的特点是体积⼩、集成度⾼、重量轻、抗⼲扰能⼒强,对环境要求不⾼,价格低廉,可靠性⾼,灵活性好,开发较为容易。

正因为单⽚机有如此多的优点,因此其应⽤领域之⼴,⼏乎到了⽆孔不⼊的地步。

在我国,单⽚机已被⼴泛地应⽤在⼯业⾃动化控制、⾃动检测、智能仪表、智能化家⽤电器、航空航天系统和和国防军事、尖端武器等各个⽅⾯。

我们可以开发利⽤单⽚机系统以获得很⾼的经济效益。

更重要的意义是单⽚机的应⽤改变了控制系统传统的设计思想和⽅法。

以前采⽤硬件电路实现的⼤部分控制功能,正在⽤单⽚机通过软件⽅法来实现。

这种以软件结合硬件或取代硬件并能提⾼系统性能的控制技术称为微控制技术。

例如,本⽂所要论述的通过单⽚机来控制TEA5767HN芯⽚及驱动LCD1602液晶屏实现FM收⾳并显⽰频率。

现在⼈们常使⽤的收⾳机为⼿动调频收台,使⽤较为⿇烦,⽽且由于接收灵敏度不⾼,所接收的频段较窄。

本设计采⽤的是TEA5767HN 芯⽚,它是由PHILIPS公司推出的针对低电压应⽤的单芯⽚数字调谐FM⽴体声收⾳机芯⽚。

TEA5767HN芯⽚内集成了完整的IF频率选择和鉴频系统,只需很少的低成本外围元件,就可实现FM 收⾳机的全部功能。

另外,它具有⾼性能的RF AGC电路,其接收灵敏度⾼;参考频率选择灵活;可实现⾃动搜台。

关键词:89C52单⽚机;TEA5767HN芯⽚;2822功率放⼤器AbstractThis test constitute with stc89c52 singlechip micyoco,tea5767 model,2822 power amplifier,1602 and peripheral circuit.In the design process,we used modular design for several types,such as searching model,display model,storage model and some ancillary function.STC series singlechip has very good control ability and stable level to meet the requirements.前⾔:本设计研究FM收⾳机分为硬件电路和程序设计两个⽅⾯。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的数字FM收音机设计与实现
基于51单片机的数字FM收音机
设计与实现
摘 要
关键词:数字调频;STC89C52;TEA5767;TDA2030
ABSTRACT
Nowadays peopleusually use the radio for manual FM accept , it is much trouble, and because the rx sensitivity is not high, the frequency band received is very narrow。TEA5767 has high-performance RF AGC circuit, high sensitivity receiving, reference frequency selection flexible and it can be the realization of automatic search platform。So inthis designingI will use the STC89C52 single-chip microcomputer and TEA5767 as the core components of digital FM radio system andUse the I2C communication to connect between STC89C52 and TEA5767 chip。Through the software written and using single chip computer control TEA5767 achieve manually live to be automatic FM, received signal through the TAD2030 amplifier amplification device, then use the speaker output the signal。In the process of FM the frequency of the signal can be checked by LCD1602。
该设计分为两部分:硬件电路和程序。硬件电路包括控制模块、FM调频模块、电源供电模块和接收模块四部分。主控制器采用的是单片机STC89C52,调频模块采用的是TEA5767芯片,电源供电模块可采用电池直接供电或通过变压设备得到要求的电源。本设计采用模块化设计,整个系统由、控制模块、TEA576模块、音量控制模块和功放模块显示模块组成,系统的整体方案框图如图1-2
1
FM
FM收音机由输入回路、高放回路、本振回路、混频回路、中放回路、鉴频回路和音频功率放大器组成。如图1-1所示。
调频的接收天线以耳机的地线替代,也可直接插上配给的天线ANT,二者工作原理相同。调频广播的高频信号输入回路直接经电容C、L组成的LC振荡回路,实际上构成一带通滤波器,其通频带为88MHz—108MHz。在集成块内部接受的调频信号经过高频放大,谐振放大。被放大的信号与本地振荡器产生的本振信号在内部进行FM混频,混频后输出。
此设计的基本原理与上述传统收音机的原理相似,在此不再累述。主要组成部分有单片机、存储器、功放、收音芯片。此处介绍不同之处。此方案通过单片机根据键盘输入,通过I2C对TEA5767模块的控制寄存器进行读写22构成的功放电路放大处理由扬声器输出。并将从TEA5767模块中读取的频率字换算后显示在LCD上。按存储键时,单片机将频率字写入24c02实现存台功能,按读取键即可收听所存电台。
图1-1FM收音机原理框图
FM混频信号由FM中频回路进行选择,提取以中频为载波的调频波。该中频选择回路由滤波器构成。中频调制波经中放电路进行中频放大,然后进行鉴频得到音频信号,经功率放大输出,耦合到扬声器,还原为声音。此外,因在调频波段未收到电台信号时,内部增益处于失控而产生的噪声很大。为此,通过检出无信号时的控制电平,控制静噪电路工作,使音频放大器处于微放大状态,从而达到静噪功能。
图1-2系统框图
从图1-2中可以看出,控制模块仅仅通过I2C总线与收音模块连接并控制收音机工作。本设计使用单片机P3口的两个I/O脚来模拟I2C总线的SDA和SCL时序并与TEA5767通信;TEA5767输出的左右声道音频信号可通过音量控制模块进行前级放大及音量控制,然后输入到TDA7057进行后级功率放大,最后输出到扬声器。单片机可通过I2C总线进行音量调节;ROM存储模块主要用于存储电台数据、音量数据和时钟数据,为存储和读取数据带来方便。系统可通过按键进行操作,通过MCU检测按键信号并经单片机实现手动搜台、自动搜台、音量控制、时钟调整等功能,各项操作提示和操作结果均可通过LCD显示出来。稳压电源模块产生的5 V和3.3 V电压可分别为各个模块器件供电。
Key words:Digital FM;STC89C52;TEA5767;TAD2030
绪论
虽然手机、计算机、电视等各种电子娱乐设施已经越来越普遍,但是收音机在丰富的娱乐媒介中仍然占有重要地位。随着消费类电子的兴起和繁荣以及数字电子技术的发展,收音机逐渐数字化,集成化,而且成本越来越低,这使得在各种设备中嵌入收音机的现象更加普遍。广大从事消费类电子设计的厂商都不忘在诸如MP3、智慧手机、便携式Video播放器等产品中嵌入FM部分。TEA5767系列单片数字元收音机就被广泛地应用在各类电子产品中。利用TEA5767设计数字FM收音机与传统的超外差式收音机的调谐方式不太一样,传统的超外差式收音机的固定频率为,而TEA5767系列数字元收音机的固定中频为225KHz,由于固定中频不同,锁相环系统的软件控制就有很大的差别,这就给广大芯片应用设计者带来一定的难度。本设计将采用宏晶STC89C52芯片来控制Philips公司的TEA5767收音模块,从而做成一个数位收音机。该收音机,具有抗干扰能力强、体积小、方便携带、调频范围宽等优点。
相关文档
最新文档