基于TEA5767的数字式收音机设计报告.docx

上传人:b****7 文档编号:10209047 上传时间:2023-02-09 格式:DOCX 页数:19 大小:22.48KB
下载 相关 举报
基于TEA5767的数字式收音机设计报告.docx_第1页
第1页 / 共19页
基于TEA5767的数字式收音机设计报告.docx_第2页
第2页 / 共19页
基于TEA5767的数字式收音机设计报告.docx_第3页
第3页 / 共19页
基于TEA5767的数字式收音机设计报告.docx_第4页
第4页 / 共19页
基于TEA5767的数字式收音机设计报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于TEA5767的数字式收音机设计报告.docx

《基于TEA5767的数字式收音机设计报告.docx》由会员分享,可在线阅读,更多相关《基于TEA5767的数字式收音机设计报告.docx(19页珍藏版)》请在冰豆网上搜索。

基于TEA5767的数字式收音机设计报告.docx

基于TEA5767的数字式收音机设计报告

 

河南大学物理与电子学院

课程设计报告

 

基于TEA5767的数字调频收音机

 

报告人:

王世威

专业:

通信工程

设计小组成员:

王世威、何康

前言3

一、主要器材介绍4

STC89C52单片机4

TEA5767收音模块儿4

1602LCD显示屏...........................................................................5

LM386音频功率放大器...............................................................6

二、系统原理及功能介绍7

数字FM收音机基本原理7

系统功能介绍7

三、元件清单.............................................................................................9

四、制作过程10

前期准备10

实物图10

焊接过程中遇到的问题和注意事项12

五、程序..................................................................................................13

六、结论23

前言

十九世纪无线电通讯技术的发明,使通信摆脱了依赖导线的传统方式,是通信技术上的一次飞跃,也是人类科技史上的一个重要成就。

作为无线电通信的的杰出成果,收音机的发明极大地改变了人们的生活方式,给人们的生活带来了无穷的乐趣。

随着科技的发展,技术不断地更新换代,收音机也沿着矿石收音机、电子管收音机、晶体管收音机、集成电路收音机的轨道不断进步着。

近年来,随着DSP技术的发展,采用DSP技术研发的收音机芯片的出现,“硬件无线电”由“软件无线电”代替,大大降低了收音机制造业的门槛。

2006年深圳凯隆电子有限公司与美国芯科实验室合作,开发出世界上第一台数字收音机。

数字技术收音机的问世,标志着传统模拟收音机将逐渐退出历史舞台。

收音机的数字时代已经到来。

数字调频收音机就是无线电模拟信号由天线感应后接收后,在同一块儿芯片里放大,然后转化为数字信号,再对数字信号进行处理,然后还原成模拟音频信号输出。

数字调频收音机体积小、重量轻、寿命长、频率稳定、操作简便等优点,使其在市场上越来越受欢迎。

本次项目设计,我们对数字调频收音机的原理在理论上进行了充分的了解,基于其基本理论,我们制作了一台数字调频收音机。

 

一、主要器材介绍

本系统主要由STC89C52单片机、1602LCD显示屏、LM386音频功率放大器、TEA5767收音模块儿、电阻电容等组成。

1.1STC89C52单片机

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:

8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。

另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,

振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35Mhz,6T/12T可选。

引脚如右图所示。

TEA5767收音模块儿

TEA5767是飞利浦公司生产的一款收音机芯片,很多手机,MP3、MP4里的收音机功能都是基于它实现的。

TEA5767内置了主频高达75MHZ的数字信号处理器,实现384KBPS/48KHZ的MD级高品质MP3音乐文件回放,加上拥有一般MP3播放器难以企及的高保真回放线路(信噪比高达95DB,THD总谐波失真率〈%〉同时非常省电。

FM收音功能,这个功能主要是有FM收音模块来完成。

其中FM收音模块的核心就是下面的Philips(飞利浦)TEA5767。

这是一块性能比较良好的FM收音芯片,很多的MP3都是用这个型号来实现FM收音功能。

其引脚如下图所示。

 

TEA5767模块儿引脚图

1602液晶屏

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

LM386音频功率放大器

LM386是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。

LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。

为使外围元件最少,电压增益内置为20。

但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。

输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。

 

二、系统原理及功能介绍

数字FM收音机基本原理

FM型的收音机电路可用如下图所示的方框图来表示。

收音机通过调谐回路选出所需的电台,送到变频器与本振电路送出的本振信号进行混频,产生中频输出(我国规定的FM中频为),中频信号将检波器检波后输出调制信号,调制信号经低放、功放放大电压和功率,推动喇叭发出声音。

 

2..2系统功能介绍

本项目设计的目的,就是设计制作出一个数字调频收音机。

所以,本系统所实现的主要功能就是收音功能。

通过单片机外接三个按键,分别控制复位,向上手动搜台,向下手动搜台。

同时,所搜到的频道的频率由1602LCD显示。

天线接到信号后,由tea5767芯片进行处理,在单片机的控制下,再通过LM386功放芯片,最终通过喇叭播出广播。

电路原理图如下:

三、元件清单

USB线*1根

旋钮*2个

1062LCD*1个

10uF电解电容1个,

100uF电解电容3个,

22pF电容2个,104pF电容3个

9*15万用板1张

STC89C52单片机*1个

12MHz晶振1个

TEA5767收音模块儿1个

10K电阻2个,

4k电阻1个,

1k电阻2个

LM386功放*1个

天线1根

单片机基座1个

按键*3,杜邦线若干

排针16个

喇叭1个

 

四、制作过程

前期准备

项目设计之初,我们通过查阅各种资料,对数字调频收音机的原理的进行了充分了解,以便有一个理论上的认识和把握。

之后,通过对原理的了解和制作要求,进行了电烙铁、焊锡、导线、电路板、单片机、液晶屏、收音模块儿等器材的选购与借取,为硬件的制作奠定了基础。

软件方面,通过Keil软件用C语言编程,利用Proteus软件对部分电路进行仿真。

程序调试无误之后,用单片机开发板将程序烧进STC89C52单片机,控制本系统工作。

实物图

经过认真考虑,拟定本系统的焊接主要分为最小系统、显示模块、TEA5767收音模块儿及周围电路、功放其周围电路、按键五个部分分步进行,既保证了焊接可以有条不紊的进行,又保证了焊接的准确性和完整性。

由于本项目的器件较多,电路错综复杂,故焊接颇为费力。

下附焊接完的几张实物图,以供参考。

正面:

背面:

工作状态:

左边两个旋钮分别用来调整音量和显示屏亮度。

可以正常工作

制作过程中遇到的问题和注意事项

在焊接的过程中,遇到了一些问题,给顺利焊接造成了一定的困难。

主要问题有以下几个方面。

一是元件布局和布线的问题。

由于电子元件比较多,如何布局直接影响到电路的焊接。

刚开始我们只是按照原理图上画的进行布局,结果在背面进行焊接的时候给布线造成了很大的困难,不得不采用大量的飞线。

所以汲取这个教训,在以后的焊接中,之前都要进行认真地元件布局和布线,尽量减少飞线的使用,使整个板子显得更加漂亮,焊接更加容易,同时尽量减小对电路的影响。

二是个别元件的的焊前测试和其特性的掌握。

比较典型的就是按键和杜邦线,在焊接过程中,有时候出问题一直找不到原因,最后发现是按键坏了或者杜邦线有问题。

所以在使用之前应首先测试其良好与否。

还有就是稳压管的特性,由于没有反接,造成电路无法正常工作,这也是一个教训。

三是要注意特殊器件的焊接。

本设计主要是TEA5767收音模块儿的焊接。

由于该模块儿上面的焊接点太小,稍不注意就容易焊接坏,所以在焊接的时候需要格外小心,最好借助一个小基台。

五、程序

#include<>

#include<>

#defineucharunsignedchar

#defineuintunsignedint

#defineDELAY5US_nop_();_nop_();_nop_();_nop_();_nop_();

;

DisplayOneChar(1,8,tab1[num4]);

DisplayOneChar(1,9,'M');//

DisplayOneChar(1,10,'H');//

DisplayOneChar(1,11,'Z');//

}

/*======================================================================

LCM初始化

======================================================================*/

voidLCMInit(void)

{

LCM_Data=0;

WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号

DelayMs(5);

WriteCommandLCM(0x38,0);

DelayMs(5);

WriteCommandLCM(0x38,0);

DelayMs(5);

WriteCommandLCM(0x38,1);//显示模式设置,开始要求每次检测忙信号

WriteCommandLCM(0x08,1);//关闭显示

WriteCommandLCM(0x01,1);//显示清屏

WriteCommandLCM(0x06,1);//显示光标移动设置

WriteCommandLCM(0x0C,1);//显示开及光标设置

DelayMs(100);

}

//==============================LCD1602显示子程序================================================

//写数据函数:

E=高脉冲RS=1RW=0

//======================================================================*/

voidWriteDataLCM(ucharWDLCM)

{

ReadStatusLCM();//检测忙

LCM_Data=WDLCM;

LCM_RS=1;

LCM_RW=0;

LCM_E=0;//若晶振速度太高可以在这后加小的延时

LCM_E=0;//延时

LCM_E=1;

}

/*====================================================================

写指令函数:

E=高脉冲RS=0RW=0

======================================================================*/

voidWriteCommandLCM(ucharWCLCM,BuysC)//BuysC为0时忽略忙检测

{

if(BuysC)ReadStatusLCM();//根据需要检测忙

LCM_Data=WCLCM;

LCM_RS=0;

LCM_RW=0;

LCM_E=0;

LCM_E=0;

LCM_E=1;

}

/*====================================================================

正常读写操作之前必须检测LCD控制器状态:

E=1RS=0RW=1;

DB7:

0LCD控制器空闲,1LCD控制器忙。

读状态

======================================================================*/

ucharReadStatusLCM(void)

{

LCM_Data=0xFF;

LCM_RS=0;

LCM_RW=1;

LCM_E=0;

LCM_E=0;

LCM_E=1;

while(LCM_Data&Busy);//检测忙信号

return(LCM_Data);

}

/*======================================================================

功能:

在1602指定位置显示一个字符:

第一行位置0~15,第二行16~31

说明:

第X行,第y列注意:

字符串不能长于16个字符

======================================================================*/

voidDisplayOneChar(ucharX,ucharY,ucharASCII)

{

X&=0x1;

Y&=0xF;//限制Y不能大于15,X不能大于1

if(X)Y|=0x40;//当要显示第二行时地址码+0x40;

Y|=0x80;//算出指令码

WriteCommandLCM(Y,0);//这里不检测忙信号,发送地址码

WriteDataLCM(ASCII);

}

/*====================================================================

设定延时时间:

x*1ms

====================================================================*/

voidDelayMs(uintMs)

{

uinti,TempCyc;

for(i=0;i

{

TempCyc=250;

while(TempCyc--);

}

}

//******************************************

voidinit(void)

{

ucharidatasbuf[5]={0XF0,0X2C,0XD0,0X10,0X40};//FM模块预设值

ucharidatarbuf[5]={0X00,0X00,0X00,0X00,0X00};

ucharidataampint[5]={0X27,0X40,0X42,0X46,0XC3};

FM_PLL=0X302C;

FM_FREQ=0;//开机预设频率 

PLL_HIGH=0;

PLL_LOW=0;

delay100ms();

delay100ms();

P1=0XFF;

P2=0XFF;

I2C_byte1=0XF0;//FM模块预设值

I2C_byte2=0X2C;

I2C_byte3=0XD0;

I2C_byte4=0X10;

I2C_byte5=0X40;

byte1=0X27;

byte2=0X40;

byte3=0X42;

byte4=0X46;

byte5=0XC3;

sendnbyte(&ADDRESS_SEND,numbyte);

delay100ms();

AMP_sendnbyte(&ADDRESS_AMP,numbyte_AMP);

}

//************************************************

//送n字节数据子程序

voidsendnbyte(ucharidata*sla,ucharn)

{

ucharidata*p;

sbuf[0]=I2C_byte1;

sbuf[1]=I2C_byte2;

sbuf[2]=I2C_byte3;

sbuf[3]=I2C_byte4;

I2C_start();//发送启动信号

sendbyte(sla);//发送从器件地址字节

checkack();//检查应答位

if(F0==1)

{

NACK=1;

return;//若非应答表明器件错误置错误标志位NACK

}

p=&sbuf[0];

while(n--)

{

sendbyte(p);

checkack();//检查应答位

if(F0==1)

{

NACK=1;

return;//若非应答表明器件错误置错误标志位NACK

}

p++;

}

stop();//全部发完则停止

}

//***********************************************

////延迟100ms

voiddelay100ms()

{

uchari;

for(i=100;i>0;i--){delay1ms();}

}

//**********************************************

//延迟1ms

voiddelay1ms(void)

{

uchari;

for(i=1000;i>0;i--){;}

}

//*************************************************

//在SCL为高时,SDA由高变低即为I2C传输开始

voidI2C_start(void)

{

SDA=1;

SCL=1;

DELAY5US;

SDA=0;

DELAY5US;

SCL=0;

}

//****************************************************

//发送一个字节数据子函数

voidsendbyte(ucharidata*ch)

{

ucharidatan=8;

ucharidatatemp;

temp=*ch;

while(n--)

{

if((temp&0x80)==0x80)//若要发送的数据最高位为1则发送位1

{

SDA=1;//传送位1

SCL=1;

DELAY5US;

SCL=0;

SDA=0;

}

else

{

SDA=0;//否则传送位0

SCL=1;

DELAY5US;

SCL=0;

}

temp=temp<<1;//数据左移一位

}

}

//发送n字节数据子程序

voidAMP_sendnbyte(ucharidata*sla,ucharn)

{

ucharidata*p;

ampint[0]=byte1;

ampint[1]=byte2;

ampint[2]=byte3;

ampint[3]=byte4;

ampint[4]=byte5;

I2C_start();//发送启动信号

sendbyte(sla);//发送从器件地址字节

checkack();//检查应答位

if(F0==1)

{

NACK=1;

return;//若非应答表明器件错误置错误标志位NACK

}

p=&int[0];

while(n--)

{

sendbyte(p);

checkack();//检查应答位

if(F0==1)

{

NACK=1;

return;//若非应答表明器件错误置错误标志位NACK

}

p++;

}

stop();//全部发完则停止

}

//****************************************

//向上搜索

voidsearch_up(void)

{

MUTE=1;//静音

SUD=1;//搜索标志位设为向上

if(FM_FREQ>0){FM_FREQ=;}//判断频率是否到顶

FM_FREQ=FM_FREQ+100000;//频率加100K

FM_PLL=(unsignedshort)((4000*(FM_FREQ/1000+225))/32768);//计算PLL值

setByte1Byte2();//设置I2C第一第二字节PLL值

}

//*******************************

//向下搜索

voidsearch_down(void)

{

MUTE=1;//静音

SUD=0;//搜索标志位设为向下

if(FM_FREQ<){FM_FREQ=0;}//判断频率是否到底

FM_FREQ=FM_FREQ-100000;//频率减100K

FM_PLL=(unsignedshort)((4000*(FM_FREQ/1000+225))/32768);//计算PLL值

setByte1Byte2();//设置I2C第一第二字节PLL值

}

voiddelay10ms()//延迟10ms

{

uchari,j;

for(i=900;i>0;i--)

{for(j=100;j>0;j--){;}}

}

//***************************************************

voiddelay600ms()

{

uchari;

for(

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

当前位置:首页 > 高等教育 > 农学

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

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