51单片机控制的FM收音机1.docx

上传人:b****8 文档编号:11494102 上传时间:2023-03-02 格式:DOCX 页数:28 大小:560.99KB
下载 相关 举报
51单片机控制的FM收音机1.docx_第1页
第1页 / 共28页
51单片机控制的FM收音机1.docx_第2页
第2页 / 共28页
51单片机控制的FM收音机1.docx_第3页
第3页 / 共28页
51单片机控制的FM收音机1.docx_第4页
第4页 / 共28页
51单片机控制的FM收音机1.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

51单片机控制的FM收音机1.docx

《51单片机控制的FM收音机1.docx》由会员分享,可在线阅读,更多相关《51单片机控制的FM收音机1.docx(28页珍藏版)》请在冰豆网上搜索。

51单片机控制的FM收音机1.docx

51单片机控制的FM收音机1

专业综合课程设计

 

基于单片机控制的FM收音机

 

班级:

通信(三)班

 

成绩:

 

基于单片机控制的FM收音机

摘要:

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

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

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

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

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

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

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

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

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

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

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

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

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

关键词:

89C52单片机;TEA5767HN芯片;2822功率放大器

Abstract

Thistestconstitutewithstc89c52singlechipmicyoco,tea5767model,2822poweramplifier,1602andperipheralcircuit.Inthedesignprocess,weusedmodulardesignforseveraltypes,suchassearchingmodel,displaymodel,storagemodelandsomeancillaryfunction.STCseriessinglechiphasverygoodcontrolabilityandstableleveltomeettherequirements.

前言:

本设计研究FM收音机分为硬件电路和程序设计两个方面。

从硬件电路来说,主要是实现所需电压值、稳压、搜台、控制和频率显示等方面;从系统程序来说,主要是如何将电台频率换算出PLL控制字写入TEA5767HN,以及PLL控制字转换成频率送显示。

意义:

随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,TEA5767HN芯片可通过IIC系统总线进行各种功能控制,并通过IIC总线输出7位IF计数值;立体声解调器完全免调,可用软件控制SNC、HCC、暂停和静音功能;具有两个可编程I/O口,可用于系统的其他相关功能,又由于其小尺寸的封装,使得它非常适合用于电路板空间相当有限的设计上。

1课题分析

1.1总体分析

课题研究分为两部分:

硬件电路和程序。

硬件电路包括主控制器、调频模块、喇叭(耳机)接收和频率显示四部分。

主控制器采用的是单片机AT89S51,调频模块采用的是TEA5767HN芯片,显示电路采用FPB9742芯片和LCD液晶屏直读显示。

程序部分用C语言编写包括设定89.6MHZ电台、TEA5767HN写入和读出、PLL控制字转换为频率送显示和IIC总线操作子程序包。

通过设计电路图和电路焊接,编写程序并调试,使系统达到设计要求。

1.2主要技术分析:

1.2.1调频广播收音机的原理:

一个典型的调频广播收音机的电路原理图如下:

自动增益控制

高频放大器

混频器

中频放大器

限幅器

鉴频器

音频放大器

调谐器

本地振荡器

1.2.2本设计用到的TEA5767HN的功能介绍:

(1)具有集成的高灵敏度低噪声射频输入放大器;

(2)具有射频自动增益控制电路RFAGC;

(3)LC调谐振荡器采用廉价的固定片式电感;

(4)具有内部实现的FM中频选择性;

(5)具有完全集成的FM鉴频器,无需外部解调;

(6)可选择32.768kHZ或13MHZ的晶体参考频率振荡器,也可使用外部

6.5MHZ的参考频率;

(7)采用PLL合成器调谐系统;

(8)引脚BUSMODE可选择IIC和3-wire总线;

(9)总线可输出7位中频计数器;

(10)总线可输出4位信号电平信息;

(11)具有软件静音功能;

(12)具有免调整立体声解调功能;

(13)具有电台自动搜索功能;

1.2.3TEA5767HN的IIC总线说明:

TEA5767HN的IIC总线地址是C0H,是可收发的从器件结构,无内部地址。

最大低电平是0.2VCCD,最大高电平是0.45VCCD。

当使用IIC总线时,引脚BUSMODE必须接地。

因总线的最高时钟频率是400kHZ,故芯片的时钟频率不能高于该值。

当向TEA5767HN写入数据时,地址的最低位是0,即写地址是C0H。

当从TEA5767HN读出数据时,地址的最低位是1,即读地址是C1H。

TEA5767HN遵守通用的IIC总线通信协议,IIC总线的写模式和读模式格式分别为:

IIC写模式

开始位

写地址

应答位

数据字节

应答位

停止位

IIC读模式

开始位

读地址

应答位

数据字节1

 

1.2.4写数据:

TEA5767HN内部有一个5字节的控制寄存器,在IIC上电复位后,必须先通过总线接口向其写入适当控制字,TEA5767HN才能正常工作。

写入控制字应按照以下顺序:

地址,字节1,字节2,字节3,字节4,字节5

首先发送每个字节的最高位。

在时钟下降沿后写入的数据才有效。

 

写模式字节1格式

位7(MSB)

位6

位5

位4

位3

位2

位1

位0(LSB)

MUTE

SM

PLL13

PLL12

PLL11

PLL10

PLL9

PLL8

写模式字节1各位说明

符号

说明

7

MUTE

左右声道静音设置。

1:

左右声道静音;0:

左右声道非静音

6

SM

搜索模式设置。

1:

搜索模式;0:

非搜索模式

5~0

PLL13~8

预置或搜索电台的频率数据高6位

写模式字节2格式

位7(MSB)

位6

位5

位4

位3

位2

位1

位0(LSB)

PLL7

PLL6

PLL5

PLL4

PLL3

PLL2

PLL1

PLL0

 

写模式字节2各位说明

符号

说明

7~0

PLL7~0

预置或搜索电台的频率数据低8位

写模式字节3格式

位7(MSB)

位6

位5

位4

位3

位2

位1

位0(LSB)

SUD

SSL1

SSL0

HLSI

MS

ML

MR

SWP1

 

写模式字节3各位说明

符号

说明

7

SUD

上下搜索设置。

1:

向上搜索;0:

向下搜索

6,5

SSL1~0

设定搜索停止电平,见下表

4

HLSI

设定高低本振。

1:

高端本振注入;0:

低端本振注入

3

MS

单声道或立体声设置。

1:

强制单声道;0:

开立体声

2

ML

左静音设置。

1:

左声道静音强制单声道;0:

左声道非静音

1

MR

右静音设置。

1:

右声道静音强制单声道;0:

右声道非静音

0

SWP1

软件可编程输出口1设置。

1:

SWPOR1为高;0:

SWPOR1为低

 

搜索停止电平设置

SSL1

SSL0

搜索停止电平

0

0

不搜索

0

1

低电平,ADC输出值为5

1

0

中电平,ADC输出值为7

1

1

高电平,ADC输出值为10

(本设计用的是第三种)

 

1.2.5读数据

读地址为C1H。

读模式字节1格式

位7(MSB)

位6

位5

位4

位3

位2

位1

位0(LSB)

RF

BLF

PLL13

PLL12

PLL11

PLL10

PLL9

PLL8

读模式字节1各位说明

符号

说明

7

RF

Ready标志。

1:

发现了一个电台或搜索到头;0:

未搜索到头

6

BLF

波段到头标志。

1:

搜索到头;0:

未搜索到头

5~0

PLL13~8

搜索或预置的电台频率值的高6位(需换算)

 

读模式字节2格式

 

位7(MSB)

位6

位5

位4

位3

位2

位1

位0(LSB)

PLL7

PLL6

PLL5

PLL4

PLL3

PLL2

PLL1

PLL0

 

读模式字节2各位说明

符号

说明

7~0

PLL7~0

搜索或预置的电台频率值的低8位(需换算)

 

读模式字节3格式

位7(MSB)

位6

位5

位4

位3

位2

位1

位0(LSB)

STEREO

IF6

IF5

IF4

IF3

IF2

IF1

IF0

 

读模式字节3各位说明

符号

说明

7

STEREO

立体声标志。

1:

立体声;0:

单声道

6~0

IF6~0

中频计数结果

1.2.6根据电台频率换算出PLL控制字写入以及根据PLL控制字换算出电台频率读出。

TEA5767HN的中频f固定为225khz,参考频率与所使用的晶振有关,具体数值如下:

XTAL是写模式控制字第4字节的位4,PLLREF是写模式控制字第5字节的7位。

FM收音机参考频率

XTAL

PLLREF

参考频率

振荡频率

0

0

3000HZ

13MHZ

0

1

3000HZ

6.5MHZ

1

0

32768HZ

32.768KHZ

1

1

32768HZ

32.768KHZ

 

fRF=(NDEC*fREFS)/4-(+)fIF式中,fRF为收到的电台频率,NDEC为控制字的十进制值,fIF为中频频率,fREFS为参考频率。

当采用高本振时,公式用减号,当采用低本振时,公式用加号。

本设计用的参考频率是32768HZ,低本振,计算公式为:

fRF=NDEC*8192+225000(HZ)

2FM收音机流程图:

3FM收音机电路图:

器件清单:

器件

规格

件数

电解电容

1µF

2

电解电容

1000µF

1

电解电容

47µF

4

普通电容

0.1µF

1

电阻

10k

2

TDA2822

1

喇叭

1

4FM收音机实物图:

5.FM收音机核心程序:

#include

#include

#include

#include

#include

#definemax_freq108000

#definemin_freq87500

sbitKEY11=P3^0;

sbitKEY22=P3^1;

sbitKEY1=P3^2;

sbitKEY2=P3^3;

unsignedcharradio_write_data[5]={0x2a,0xb6,0x40,0x11,0x40};//要写入TEA5767的数据

unsignedcharradio_read_data[5];//TEA5767读出的状态

unsignedintdefault_pll=0x301d;//0x29f9;//默认存台的pll,95.8MHz

unsignedintmax_pll=0x339b;//108MHz时的pll,

unsignedintmin_pll=9000;//70MHz时的pll

unsignedlongfrequency;

unsignedintpll;

unsignedlongFM;

/*voiddelay(unsignedinttime)

{

while(time--);

}*/

voiddelay1ms(unsignedintb)//1ms

{

for(b;b>0;b--)

{unsignedinti;

for(i=0;i<300;i++)

{;}

}

}

#include

sbitRS=P2^4;//定义端口

sbitRW=P2^3;

sbitEN=P2^2;

sbitP20=P2^0;//定义锁存使能端口段锁存

sbitP21=P2^1;//位锁存

sbitP35=P3^5;//这是为了关闭开发板上的点阵实际应用去掉

#defineRS_CLRRS=0

#defineRS_SETRS=1

#defineRW_CLRRW=0

#defineRW_SETRW=1

#defineEN_CLREN=0

#defineEN_SETEN=1

#defineDataPortP1

/*------------------------------------------------

uS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

------------------------------------------------*/

voidDelayUs2x(unsignedchart)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编

------------------------------------------------*/

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

/*------------------------------------------------

判忙函数

------------------------------------------------*/

bitLCD_Check_Busy(void)

{

DataPort=0xFF;

RS_CLR;

RW_SET;

EN_CLR;

_nop_();

EN_SET;

return(bit)(DataPort&0x80);

}

/*------------------------------------------------

写入命令函数

------------------------------------------------*/

voidLCD_Write_Com(unsignedcharcom)

{

while(LCD_Check_Busy());//忙则等待

RS_CLR;

RW_CLR;

EN_SET;

DataPort=com;

_nop_();

EN_CLR;

}

/*------------------------------------------------

写入数据函数

------------------------------------------------*/

voidLCD_Write_Data(unsignedcharData)

{

while(LCD_Check_Busy());//忙则等待

RS_SET;

RW_CLR;

EN_SET;

DataPort=Data;

_nop_();

EN_CLR;

}

/*------------------------------------------------

清屏函数

------------------------------------------------*/

voidLCD_Clear(void)

{

LCD_Write_Com(0x01);

DelayMs(5);

}

/*------------------------------------------------

初始化函数

------------------------------------------------*/

voidLCD_Init(void)

{

LCD_Write_Com(0x38);/*显示模式设置*/

DelayMs(5);

LCD_Write_Com(0x38);

DelayMs(5);

LCD_Write_Com(0x38);

DelayMs(5);

LCD_Write_Com(0x38);

LCD_Write_Com(0x08);/*显示关闭*/

LCD_Write_Com(0x01);/*显示清屏*/

LCD_Write_Com(0x06);/*显示光标移动设置*/

DelayMs(5);

LCD_Write_Com(0x0C);/*显示开及光标设置*/

}

//1602显示

voidDISP_FM()

{

unsignedcharj;

j=(radio_read_data[3]&0xf0)>>4;

LCD_Write_Com(0x8e);

LCD_Write_Data('0'+(j/10));

LCD_Write_Data('0'+(j%10));

LCD_Write_Com(0x8c);

LCD_Write_Data('S');

LCD_Write_Data(':

');

FM=frequency;

LCD_Write_Com(0x80);

LCD_Write_Data('F');

LCD_Write_Data('M');

LCD_Write_Data('');

LCD_Write_Data('R');

LCD_Write_Data('a');

LCD_Write_Data('d');

LCD_Write_Data('i');

LCD_Write_Data('o');

 

LCD_Write_Com(0xc2);

if(FM/100000)

LCD_Write_Data('0'+FM/100000);

elseLCD_Write_Data('');

LCD_Write_Com(0xc3);

LCD_Write_Data('0'+(FM%100000)/10000);

LCD_Write_Com(0xc4);

LCD_Write_Data('0'+(FM%10000/1000));

LCD_Write_Com(0xc5);

LCD_Write_Data('.');

LCD_Write_Com(0xc6);

LCD_Write_Data('0'+(FM%1000)/100);

LCD_Write_Com(0xc7);

LCD_Write_Data('0'+(FM%100)/10);

LCD_Write_Com(0xc8);

LCD_Write_Data('0'+(FM%10));

LCD_Write_Com(0xc9);

LCD_Write_Data('');

LCD_Write_Com(0xca);

LCD_Write_Data('M');

LCD_Write_Com(0xcb);

LCD_Write_Data('H');

LCD_Write_Com(0xcc);

LCD_Write_Data('Z');

}

voidradio_write(void)

{

unsignedchari;

iic_start();

iic_write8bit(0xc0);//TEA5767写地址

if(!

iic_testack())

{

for(i=0;i<5;i++)

{

iic_write8bit(radio_write_data[i]);

iic_ack();

}

}

iic_stop();

}

//由频率计算PLL

voidget_pll(void)

{

unsignedcharhlsi;

unsignedinttwpll=0;

hlsi=radio_write_data[2]&0x10;//HLSI位

if(hlsi)

pll=(unsignedint)((float)((frequency+225)*4)/(float)32.768);//频率单位:

k

else

pll=(unsignedint)((float)((frequency-225)*4)/(float)32.768);//频率单位:

k

}

 

//由PLL计算频率

voidget_frequency(void)

{

unsignedcharhlsi;

unsignedintnpll=0;

npll=pll;

hlsi=radio_write_data[2]&0x10;

if(hlsi)

frequency=(unsignedlong)((float)(npll)*(float)8.192-225);//频率单位:

KHz

else

frequency=(unsignedlong)((float)(npll)*(float)8.192+225);//频率单位:

KHz

}

 

voidradio_read(void)

{

unsignedchari;

unsignedchartemp_l,temp_h;

pll=0;

iic_start();

iic_write8bit(0xc1);//TEA5767读地址

if(!

iic_testack())

{

for(i=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1