基于TEA5767的数字式收音机设计报告.docx
- 文档编号:3752757
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:19
- 大小:22.48KB
基于TEA5767的数字式收音机设计报告.docx
《基于TEA5767的数字式收音机设计报告.docx》由会员分享,可在线阅读,更多相关《基于TEA5767的数字式收音机设计报告.docx(19页珍藏版)》请在冰点文库上搜索。
基于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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TEA5767 数字式 收音机 设计 报告