基于TEA5767的数字式收音机设计报告Word下载.docx
- 文档编号:19696315
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:23
- 大小:1.27MB
基于TEA5767的数字式收音机设计报告Word下载.docx
《基于TEA5767的数字式收音机设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《基于TEA5767的数字式收音机设计报告Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
本系统主要由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可选。
引脚如右图所示。
1.2TEA5767收音模块儿
TEA5767是飞利浦公司生产的一款收音机芯片,很多手机,MP3、MP4里的收音机功能都是基于它实现的。
TEA5767内置了主频高达75MHZ的数字信号处理器,实现384KBPS/48KHZ的MD级高品质MP3音乐文件回放,加上拥有一般MP3播放器难以企及的高保真回放线路(信噪比高达95DB,THD总谐波失真率〈0.05%〉同时非常省电。
FM收音功能,这个功能主要是有FM收音模块来完成。
其中FM收音模块的核心就是下面的Philips(飞利浦)TEA5767。
这是一块性能比较良好的FM收音芯片,很多的MP3都是用这个型号来实现FM收音功能。
其引脚如下图所示。
TEA5767模块儿引脚图
1.31602液晶屏
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1.4LM386音频功率放大器
LM386是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最少,电压增益内置为20。
但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。
输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
二、系统原理及功能介绍
2.1数字FM收音机基本原理
FM型的收音机电路可用如下图所示的方框图来表示。
收音机通过调谐回路选出所需的电台,送到变频器与本振电路送出的本振信号进行混频,产生中频输出(我国规定的FM中频为10.7MHZ),中频信号将检波器检波后输出调制信号,调制信号经低放、功放放大电压和功率,推动喇叭发出声音。
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个
四、制作过程
3.1前期准备
项目设计之初,我们通过查阅各种资料,对数字调频收音机的原理的进行了充分了解,以便有一个理论上的认识和把握。
之后,通过对原理的了解和制作要求,进行了电烙铁、焊锡、导线、电路板、单片机、液晶屏、收音模块儿等器材的选购与借取,为硬件的制作奠定了基础。
软件方面,通过Keil软件用C语言编程,利用Proteus软件对部分电路进行仿真。
程序调试无误之后,用单片机开发板将程序烧进STC89C52单片机,控制本系统工作。
3.2实物图
经过认真考虑,拟定本系统的焊接主要分为最小系统、显示模块、TEA5767收音模块儿及周围电路、功放其周围电路、按键五个部分分步进行,既保证了焊接可以有条不紊的进行,又保证了焊接的准确性和完整性。
由于本项目的器件较多,电路错综复杂,故焊接颇为费力。
下附焊接完的几张实物图,以供参考。
正面:
背面:
工作状态:
左边两个旋钮分别用来调整音量和显示屏亮度。
可以正常工作
3.3制作过程中遇到的问题和注意事项
在焊接的过程中,遇到了一些问题,给顺利焊接造成了一定的困难。
主要问题有以下几个方面。
一是元件布局和布线的问题。
由于电子元件比较多,如何布局直接影响到电路的焊接。
刚开始我们只是按照原理图上画的进行布局,结果在背面进行焊接的时候给布线造成了很大的困难,不得不采用大量的飞线。
所以汲取这个教训,在以后的焊接中,之前都要进行认真地元件布局和布线,尽量减少飞线的使用,使整个板子显得更加漂亮,焊接更加容易,同时尽量减小对电路的影响。
二是个别元件的的焊前测试和其特性的掌握。
比较典型的就是按键和杜邦线,在焊接过程中,有时候出问题一直找不到原因,最后发现是按键坏了或者杜邦线有问题。
所以在使用之前应首先测试其良好与否。
还有就是稳压管的特性,由于没有反接,造成电路无法正常工作,这也是一个教训。
三是要注意特殊器件的焊接。
本设计主要是TEA5767收音模块儿的焊接。
由于该模块儿上面的焊接点太小,稍不注意就容易焊接坏,所以在焊接的时候需要格外小心,最好借助一个小基台。
五、程序
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineDELAY5US_nop_();
_nop_();
//**************TEA5767模块接线方法********************
sbitSDA=P2^6;
sbitSCL=P2^7;
//*************频率调节按键接线************************
sbitKey1=P3^2;
sbitKey2=P3^3;
//==============LCD1602接口连接方法=====================
/*-----------------------------------------------------
|DB0-----P0.0|DB4-----P0.4|RW-------P2.3|
|DB1-----P0.1|DB5-----P0.5|RS-------P2.4|
|DB2-----P0.2|DB6-----P0.6|E--------P2.2|
|DB3-----P0.3|DB7-----P0.7|
---------------------------------------------------*/
//================================================*/
#defineLCM_DataP0//LCD1602数据接口
#defineBusy0x80//用于检测LCM状态字中的Busy标识
sbitLCM_RW=P2^3;
//读写控制输入端,LCD1602的第五脚
sbitLCM_RS=P2^4;
//寄存器选择输入端,LCD1602的第四脚
sbitLCM_E=P2^2;
//使能信号输入端,LCD1602的第6脚
//*****************参数定义*****************************
unsignedlongintFM_FREQ;
//频率
unsignedshortintFM_PLL;
//PLL
ucharidatasbuf[5];
//数据发送缓冲区
ucharidatanumbyte;
ucharidatanumbyte_AMP;
ucharidataADDRESS_AMP;
ucharidataADDRESS_SEND;
//TEA5767发送地址
ucharidataADDRESS_RECEIVE;
//TEA5767接收地址
ucharidatarbuf[5];
//数据接收缓冲区
ucharidataampint[5];
ucharbdataPLL_HIGH;
ucharbdataPLL_LOW;
//设定用于搜索和预设的可编程频率合成器
ucharbdataI2C_byte1;
//发送的五字节TEA5767可位寻址的设置值
ucharbdataI2C_byte2;
ucharbdataI2C_byte3;
ucharbdataI2C_byte4;
ucharbdataI2C_byte5;
sbitMUTE=I2C_byte1^7;
//如果MUTE=1,则左右声道被静音;
MUTE=0,左右声道正常工作
sbitSM=I2C_byte1^6;
//SM=1,则处于搜索模式;
SM=0,不处于搜索模式
sbitSUD=I2C_byte3^7;
//SUD=1,增加频率搜索;
SUD=0,减小频率搜索
ucharbyte1;
ucharbyte2;
ucharbyte3;
ucharbyte4;
ucharbyte5;
ucharnum1,num2,num3,num4;
uchartab1[]={'
0'
'
1'
2'
3'
4'
5'
6'
7'
8'
9'
A'
B'
C'
D'
E'
F'
};
bitbdataNACK;
//错误标志位
//**********相关函数声明**************************************
voidinit(void);
//TEA5767初始化
voiddelay600ms(void);
//延迟600ms
voiddelay100ms(void);
//延迟100ms
voiddelay10ms();
voiddelay1ms(void);
//延迟1ms
voidsendnbyte(ucharidata*sla,ucharn);
//与sendbyte函数构成I2C 数据发送函数
voidI2C_start(void);
//I2C传输开始
voidsendbyte(ucharidata*ch);
voidcheckack(void);
//检查应答讯号
voidstop(void);
//I2C传输结束
voidAMP_sendnbyte(ucharidata*sla,ucharnumbyte_AMP);
voidkey_scan(void);
//键扫描
voidsearch_up(void);
//接收频率向上加
voidsearch_down(void);
//接收频率向下减
voidsetByte1Byte2(void);
//设置第一第二字节频率
voidLCMInit(void);
//LCD初始
voidDelayMs(uintMs);
//1MS基准延时程序
voidWriteDataLCM(ucharWDLCM);
//LCD模块写数据
voidWriteCommandLCM(ucharWCLCM,BuysC);
//LCD模块写指令
ucharReadStatusLCM(void);
//读LCD模块的忙标
voidDisplayOneChar(ucharX,ucharY,ucharASCII);
//在第X+1行的第Y+1位置显示一个字符
voidLCDshow(void);
//*****************主程序******************************
voidmain(void)
{
numbyte=5;
numbyte_AMP=5;
ADDRESS_SEND=0xC0;
//TEA5767写地址11000000
ADDRESS_RECEIVE=0XC1;
//TEA5767读地址11000001
ADDRESS_AMP=0X8E;
init();
//初始化TEA5767
LCMInit();
LCDshow();
while
(1)
{
key_scan();
//键扫描
}
}
//**************按键扫描程序**************************
voidkey_scan(void)
{
if(Key1==0)
{
delay10ms();
if(Key1==0)
{
while(Key1==0);
search_up();
//频率向上
delay600ms();
}
if(Key2==0)
if(Key2==0)
while(Key2==0);
search_down();
//频率向下
delay600ms();
//*********************LCD1602显示程序*********************
voidLCDshow(void)
num1=FM_FREQ/100000000;
num2=(FM_FREQ%100000000)/10000000;
num3=(FM_FREQ%10000000)/1000000;
num4=(FM_FREQ%1000000)/100000;
DisplayOneChar(0,4,'
);
//
DisplayOneChar(0,5,'
M'
DisplayOneChar(0,6,'
R'
DisplayOneChar(0,7,'
a'
DisplayOneChar(0,8,'
d'
DisplayOneChar(0,9,'
i'
DisplayOneChar(0,10,'
o'
DisplayOneChar(1,4,tab1[num1]);
DisplayOneChar(1,5,tab1[num2]);
DisplayOneChar(1,6,tab1[num3]);
DisplayOneChar(1,7,'
.'
DisplayOneChar(1,8,tab1[num4]);
DisplayOneChar(1,9,'
DisplayOneChar(1,10,'
H'
DisplayOneChar(1,11,'
Z'
/*======================================================================
LCM初始化
======================================================================*/
voidLCMInit(void)
LCM_Data=0;
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=1;
/*====================================================================
写指令函数:
E=高脉冲RS=0RW=0
voidWriteCommandLCM(ucharWCLCM,BuysC)//BuysC为0时忽略忙检测
if(BuysC)ReadStatusLCM();
//根据需要检测忙
LCM_Data=WCLCM;
LCM_RS=0;
正常读写操作之前必须检测LCD控制器状态:
E=1RS=0RW=1;
DB7:
0LCD控制器空闲,1LCD控制器忙。
读状态
ucharReadStatusLCM(void)
LCM_Data=0xFF;
LCM_RW=1;
while(LCM_Data&
Busy);
//检测忙信号
return(LCM_Data);
功能:
在1602指定位置显示一个字符:
第一行位置0~15,第二行16~31
说明:
第X行,第y列注意:
字符串不能长于16个字符
==
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TEA5767 数字式 收音机 设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)