logo资料库

基于51单片机的TEA5767收音机的设计与实现.doc

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
基于TEA5767模块的数字FM收音机设计
一.绪 论
1.1课题背景
1.2课题概述
二.设计要求与思路
2.1收音机的设计要求:
可对无线接收机的频率进行控制。通过键盘可以设置接收频率,接收频率在88-108MHz内自选20M的带
2.2系统设计整体思路
三、主要电路模块的实现方案比较及选择
4.1微控制器模块
4.2FM模块
4.2.1 FM模块介绍
4.3 工作原理:
由于TEA5767收音机模块,必须要由单片机通过控制总线向芯片内的寄存器写入控制字才能正常工作
我们通过往单片机写入相关程序,然后通过I2C总线,实现单片机与TEA5767模块之间的双向转。利用不
4.3.1.串行总线工作模式:
串行总线在传送数据过程中共有三种类型信号,它们分别是:开始信号,结束信号和应答信号。
开始信号:CLOCK为高电平时,DATA由高电平向低电平跳变,开始传送数据;
结束信号:CLOCK为高电平时,DATA由低电平向高电平跳变,结束传送数据;
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据
4.3.2 串行总线基本操作:
⑴串行规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器
参见下图:
⑵控制字节:
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符接着三位为片选位,前7位结合起来表示
如下图所示:
⑶写入模式:
写入多个字节时,收到每个字节后发出一应答信号(一个时钟长度低电平脉冲)。控制器收到应答信号
⑷读取模式
读取模式时,当IC接受到控制器发送的地址和读操作后产生一低电平脉冲应答信号后,被读IC发送第1字节数
4.3.3数据传送:
数据序列:address,byte1,byte2,byte3,byte4,byte5
address中Bit0(LSB)=0表示对CS3667的写操作,Bit7为每字节的最高位(MSB)
每位数据在CLOCK下跳沿产生,一直稳定到CLOCK上升沿后,任何一个字节后发出的停止条件可以缩短传
1)还未被写入的字节将保持原值。
2)如果第一个数据字节没有被写完,则已写位被写入值覆盖,但不执行新的锁台信息。
4.3.4、三线总线工作模式:
三线总线通过控制 W/R,CLOCK,DATA 三信号线进行操作。最大工作时钟频率为400kHz。
⑴数据传送
数据序列:byte1,byte2,byte3,byte4,byte5
写入信号:CLOCK为低电平时,W/R由低电平向高电平跳变,开始写入数据。
读取信号:CLOCK为低电平时,W/R由高电平向低电平跳变,结束读取数据当CLOCK为低电平时,W/
当CLOCK为低电平时,W/R由高电平向低电平跳变,结束读取数据。伴随着下跳沿,BYTE1的最高位已
如果做连续的写入或者读取操作,PIN W/R至少要被触发一个时钟周期。
五.系统软件设计
六.硬件电路测试与检测
6.1 硬件装配
(4)天线安装尽量靠近芯片引脚,一定要加上匹配电容
6.2 系统测试
七.结束语
八.参考文献
[1]刘瑞新。单片机原理及应用教程[M].北京:机械工业出版社,2003.7.[2]康华光。电子技
[4]谭浩强。C 程序设计[M]. 北京:清华大学出版社,2005.7.[5]李朝青。单片机原理及
[6]阮维国,黄建宇。电子技术实验[M].北京:兵器工业出版社,2006.12.
九.致 谢
10.1电路原理图:
10.2电路PCB图:
10.3电路实物图:
10.4元器件清单:
序号
名称
型号
数量
序号
名称
型号
数量
1
排针
200
2
电解电容
100UF/16V
1
3
电容
104
5
4
电容
30PF
2
5
电容
10UF
5
6
电容
10UF
5
7
电容
0.1UF
1
8
电阻
10K
9
9
电阻
620R
1
10
电阻
4.7K
8
11
电阻
220R
1
12
电阻
1K
1
13
晶振
12M
1
14
按键
两脚按键
7
15
按键
六脚按键
7
16
芯片
STC89C52RC
1
17
模块
TEA5767
1
18
芯片
TDA2822
2
19
发光二极管
1
20
蜂鸣器
PHONELACK2
1
21
插座
1
22
显示屏
LCD1602
1
#include
#include
#include "TEA5767.h"
#include "I2C.h"
#include "Lcd1602.h"
///////////端口定义////////////////////////
sbit Key1=P2^0;
sbit Key2=P2^1;
sbit Key3=P2^2;
sbit Key4=P2^3;
sbit Key5=P2^4;
sbit Key6=P2^5;
///////////////////////////////////////////
///////////////////////////////////////////
#define max_freq 108000 //108Mhz 898
#define min_freq 87500 //87.5Mhz
#define max_pll 0x339b //108MHz时的pl
#define min_pll 0x299d //87.5MHz时的p
#define Add_Freq 1
#define Dec_Freq 0
#define REFERENCE_FREQ 32.768 //TEA5767晶振
unsigned char radio_write_data[5]={0x2A,0x9E,0xC0,
unsigned char rdata[5]={0x2A,0x9E,0xC0,0x17,0x00};
unsigned char radio_read_data[5];
unsigned int Pll_Data; //定义频率
unsigned long Frequency_Data=89600;// 设置初始频率为8
unsigned char index=1;//天线感应信号的能力,
///////////////////////////////////////
//////延迟程序,@12.000MHz,50ms////////
void Delay()
{
unsigned char i, j;
i = 98;
j = 67;
do
{
while (--j);
} while (--i);
}
////////////////////////////////////////
/////////////////频率显示地址///////////
void LCDshow(void)
{
unsigned char str[8];
unsigned char num1,num2,num3,num4,num5;
num1=(Frequency_Data/100000)%10;
num2=(Frequency_Data/10000)%10;
num3=(Frequency_Data/1000)%10;
num4=(Frequency_Data/100)%10;
num5=(Frequency_Data/10)%10;
str[0]=num1+'0';
str[1]=num2+'0';
str[2]=num3+'0';
str[3]='.';
str[4]=num4+'0';
str[5]=num5+'0';
str[6]='\0';
LcdShowStr(0,1,str);
}
///////////////////////////////////////////
////////读TEA5767状态,并转换成PLL值//////
void Radio_Read(void)
{
unsigned char temp_l,temp_h;
Pll_Data = 0;
ATIICxx_PRead(&radio_read_data[0],5);
temp_l = radio_read_data[1]; //PLL值
temp_h = radio_read_data[0]; //PLL值
temp_h &= 0x3f;
Pll_Data = temp_h*256+temp_l;
Get_Frequency();
}
////////////////////////////////////////
//由PLL计算频率
void Get_Frequency(void)
{
unsigned char hlsi;
unsigned int npll = 0;
npll = Pll_Data;
hlsi = radio_read_data[2]&0x10;
if (hlsi)
Frequency_Data = (unsignedlong)((float)(np
else
Frequency_Data = (unsignedlong)((float)(np
//由频率计算PLL
void Get_Pll(void)
{
unsigned char hlsi;
hlsi = radio_read_data[2]&0x10;
if (hlsi)
Pll_Data = (unsigned int)((float)((Frequen
else
Pll_Data = (unsigned int)((float)((Frequen
}
///////自动搜台,mode=1,频率增加搜台; mode="0:频率减小搜台".///////
void Auto_Search(unsigned char mode)
{
LcdShowStr(10,0,"Auto "); //当搜索时,显示Auto
if(mode) //mode=1,自动向上搜索
{
switch(index) //电平转换
{
case 0:
radio_write_data[2] = 0xA0;//低电平 低本振立体声非静音
break;
case 1:
radio_write_data[2] = 0xC0;//中低电平 低本振立体声非静音
break;
case 2:
radio_write_data[2] = 0xE0;//高电平 低本振立体声非静音
break;
}
if(Pll_Data > max_pll) //当频率处于最高时,
{
Pll_Data = min_pll; //自动转为最低频率
}
}
else//向下搜索
{
switch(index)
{
case 0:
radio_write_data[2]=0x20; //低电平
break;
case 1:
radio_write_data[2]=0x40; //中低电平
break;
case 2:
radio_write_data[2]=0x60; //高电平
break;
}
if(Pll_Data < min_pll)
{
Pll_Data = max_pll;
}
}
//////////调用I2C总线的写模式////////
ATIICxx_PWrite(&radio_write_data[0],5);
Delay();//延时
Radio_Read();
LCDshow();
while(!(radio_read_data[0]&0x80))//RF电台就绪标志 若R
{
Delay();//延时
Radio_Read();
if((radio_read_data[0]&0x40)==0x40)//搜索到头
{
if(mode)
{
//ATIICxx_PWrite(&rdata[0],5);//初始化TEA5767(89.
}
else
{
//ATIICxx_PWrite(&radio_write_data[0],5
}
}
LCDshow();
}
LcdShowStr(10,0,"Normal");
}
/////////////微调程序///////////////////////
void Search10(unsigned char mode)
{
LcdShowStr(10,0,"hand ");
Delay();//延时
if(mode)
{
Frequency_Data += 10;
if(Frequency_Data > max_freq)
Frequency_Data = min_freq;
radio_write_data[2] = 0xA0;//低电平 低本振立体声非静音
}
else//向下搜索
{
Frequency_Data -= 10;
if(Frequency_Data < min_freq)
Frequency_Data = max_freq;
radio_write_data[2]=0x20; //低电平 ,向下搜索模式
}
Get_Pll();
radio_write_data[0] = Pll_Data/256;
radio_write_data[1] = Pll_Data%256;
radio_write_data[3] = 0x17;//去噪
radio_write_data[4]=0x00;
ATIICxx_PWrite(&radio_write_data[0],5);
LCDshow();
LcdShowStr(10,0,"Normal");
}
////////////////////////////////////////
/////////抖动延迟程序///////////////////
void delay15ms(void) //误差 0us
{
unsigned char i, j;
i = 30;
j = 43;
do
{
while (--j);
} while (--i);
}
/////////////////////////////////////////
//////////////按键功能///////////////////
void Key()
{
unsigned char str[3];
if(Key1==0)
{
delay15ms();
while(Key1==0);//自动频道+
Auto_Search(Add_Freq);
}
else if(Key2==0)//自动频道-
{
delay15ms();
while(Key2==0);
Auto_Search(Dec_Freq);
}
else if(Key3==0) //手动微加0.01
{
delay15ms();
if(Key3==0)
{
Search10(Add_Freq);
}
}
else if(Key4==0) //手动微减0.01
{
delay15ms();
if(Key4==0)
{
Search10(Dec_Freq);
}
}
else if(Key5==0)//
{
delay15ms();
while(!Key5);
if(index<2)
{
index++;
}
else
{
index=0;
}
str[0]=index+'0';
str[1]='\0';
LcdShowStr(15,1,str);
}
}
/////////////////////////////////////
//////////////屏幕初始化/////////////
void InitLCD()
{
unsigned char str[3];
str[0]=index+'0';
str[1]='\0';
LcdInit();
LcdShowStr(0,0,"FM radio");
LcdShowStr(7,1,"MHZ");
LcdShowStr(10,0,"Normal");
LcdShowStr(15,1,str);
}
//////////////////////////////////////
void main(void)
{
InitLCD();//屏幕设置
ATIICxx_PWrite(&radio_write_data[0],5);//初始化TEA57
Delay();
Radio_Read(); //把输入TEA5767的地址转换为频率
LCDshow(); //在屏幕上显示出来
while(1) //按键的不同操作
{
Key();
}
}
12.2 I2C总线程序:
#include
#include
#include "I2C.h"
/*************************************************
/* IIC读写程序芯片型号*/
/*************************************************
sbit I2C_SCK=P0^0; /*实时时钟时钟线引脚 */
sbit I2C_SDA=P0^1; /*实时时钟数据线引脚 */
/*************************************************
#define ATIIcxxDriverAddressW 0xC0
#define ATIIcxxDriverAddressR 0xC1
#define _Nop() _nop_(),_nop_(),_nop_(),_nop_(),_n
/*************************************************
struct bytedata_2
{
unsigned char ByteH;
unsigned char ByteL;
};
union int2byte
{
unsigned int IntData;
struct bytedata_2 ByteData;
};
/*************************************************
//启动I2C总线,退出时SCL为低
void I2C_Start(void)
{
I2C_SDA=1; /*发送起始条件的数据信号*/
_Nop();
I2C_SCK=1;
_Nop(); /*起始条件建立时间大于4.7us,延时*/
_Nop();
_Nop();
_Nop();
_Nop();
I2C_SDA=0; /*发送起始信号*/
_Nop(); /* 起始条件锁定时间大于4μs*/
_Nop();
_Nop();
_Nop();
_Nop();
I2C_SCK=0; /*钳住I2C总线,准备发送或接收数据 */
}
//*停止I2C总线
void I2C_Stop(void)
{
I2C_SCK=0;
I2C_SDA=0; /*发送结束条件的数据信号*/
_Nop(); /*发送结束条件的时钟信号*/
I2C_SCK=1; /*结束条件建立时间大于4μs*/
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
I2C_SDA=1; /*发送I2C总线结束信号*/
}
//MCU等待应答位(返回0表示应答)
bit I2C_WaitAck(void)
{
unsigned char ucErrTime = 200; //因故障接收方无ACK,超时值
I2C_SCK=0;
I2C_SDA=1;
_Nop();
I2C_SCK=1;
while(I2C_SDA)
{
ucErrTime--;
if (ucErrTime == 0)
{
I2C_Stop();
return 0;
}
}
I2C_SCK=0;
return 1;
}
//MCU应答信号
void I2C_Ack(void)
{
I2C_SCK=0;
I2C_SDA=0;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
I2C_SCK=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
I2C_SCK=0;
}
//MCU发送非应答信号
void I2C_Noack(void)
{
I2C_SCK=0;
I2C_SDA=1;
_Nop();
_Nop();
I2C_SCK=1;
_Nop();
_Nop();
I2C_SCK=0;
}
void I2C_Send_Byte(unsigned char sendbyte)
{
unsigned char i = 8;
while( i-- )
{
I2C_SCK = 0;
_Nop(); //_Nop();
if ( sendbyte &0x80 ) I2C_SDA =1;
else I2C_SDA =0;
_Nop(); //_Nop();
I2C_SCK = 1;
_Nop(); //_Nop();
sendbyte <<= 1;
}
I2C_WaitAck();
}
static unsigned char I2C_Receive_Byte(void)
{
unsigned char i = 8, data_buffer;
I2C_SDA = 1;
while ( i--)
{
I2C_SCK =0;
_Nop();_Nop();
I2C_SCK =1;
_Nop();_Nop();
data_buffer <<= 1;
if ( I2C_SDA ) data_buffer++;
}
return (data_buffer);
}
void ATIICxx_PWrite(unsigned char *McuAddress,unsi
{
I2C_Start();
I2C_Send_Byte( ATIIcxxDriverAddressW );
while(count--)//写入数据
{
I2C_Send_Byte( *(unsigned char*)McuAddress );
((unsigned char*)McuAddress)++;
}
I2C_Stop();
}
void ATIICxx_PRead(unsigned char *McuAddress,unsig
{
I2C_Start();//发送起始信号
I2C_Send_Byte( ATIIcxxDriverAddressR );//发送器件地址
while(count--)
{
*McuAddress = I2C_Receive_Byte();
I2C_Ack();
McuAddress++;
}
I2C_Noack();//应答位
I2C_Stop();//发送停止信号
}
12.3 Lcd1602程序:
#include
#define LCD1602_DB P1
sbit LCD1602_RS = P2^7;
sbit LCD1602_RW = P2^6;
sbit LCD1602_E = P3^4;
void LcdWaitReady() //等待液晶准备好
{
unsigned char sta;
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do
{
LCD1602_E = 1;
sta = LCD1602_DB; //读取状态字
LCD1602_E = 0;
} while (sta & 0x80); //bit7 等于1 表示液晶正忙,重复检测直到其等于0
}
void LcdWriteCmd(unsigned char cmd) //写入命令函数
{
LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdWriteDat(unsigned char dat) //写入数据函数
{
LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdShowStr(unsigned char x, unsigned char y,
{
unsigned char addr;
//由输入的显示坐标计算显示RAM 的地址
if (y == 0)
addr = 0x00 + x; //第一行字符地址从0x00 起始
else
addr = 0x40 + x; //第二行字符地址从0x40 起始
//由起始显示RAM 地址连续写入字符串
LcdWriteCmd(addr | 0x80); //写入起始地址
while (*str != '\0') //连续写入字符串数据,直到检测到结束符
{
LcdWriteDat(*str);
str++;
}
}
void LcdInit() //液晶初始化函数
{
LcdWriteCmd(0x38); //16*2 显示,5*7 点阵,8 位数据接口
LcdWriteCmd(0x0C); //显示器开,光标关闭
LcdWriteCmd(0x06); //文字不动,地址自动+1
LcdWriteCmd(0x01); //清屏
基于 TEA5767 模块的数字 FM 收音机设计 摘 要 本设计是一个数字调频收音机(FM),就是接受频率调制的无线电信号,经 过解调还原成原信号的电子设备,利用单片机控制有 FM 功能的专用芯片,设计一 个基于 TEA5767 模块的数字 FM 收音机。本设计采用模块化设计,整个系统由控 制模块,FM 音频模块和功放模块组成。本设计核心采用的是 TEA5767 芯片,它 是由 PHILIPS 公司推出的针对低电压应用的单芯片数字调谐 FM 立体声收音机 芯片。TEA5767 芯片内集成了完整的 IF 频率选择和鉴频系统,就可实现 FM 收音 机的全部功能。采用的是 Lcd1602 液晶显示屏,实现单片机的频率值与模块内部 的寄存器(PLL 值)之间的相互转换,从而带动功放的工作。功能:自动收台, 手动收台,液晶显示。 采用主要模块有: (1) STC89C52 单片机模块。 (2) Lcd1602 显示模块。 (3) TEA5767 收音机模块。 关键词:STC89C52 Lcd1602 TEA5767 模块 1
基于 TEA5767 模块的数字 FM 收音机设计 目录 摘 要...........................................................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 2
基于 TEA5767 模块的数字 FM 收音机设计 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 3
基于 TEA5767 模块的数字 FM 收音机设计 基于 TEA5767 模块的数字 FM 收音机设计 一.绪 论 1.1 课题背景 随着科学技术的不断发展,新颖的调频收音机的不断出现,技术不断的提高, 设计出来的收音机外型精致和小巧。从分离元件到集成电路,这标志着收音机的 内部电路简单。用一个集成块就能完成所有的工作。从早期的调幅收音机到现在 的调频收音机,我们可以想象收音机的不断的改进和不断创新,使收音机的发展 空间愈来愈大。现在,出现了新一代高科技产品——数字调频收音机,功能强大, 性能优良,设计精巧耐用。 1.2 课题概述 收音机的接收原理就是把从天线接收到的高频信号经检波(解调)还原成音 频信号,送到耳机变成音波。由于广播事业发展,天空中有了很多不同频率的无 线电波。如果把这许多电波全都接收下来,音频信号就会象处于闹市之中一样, 许多声音混杂在一起,结果什么也听不清了。为了设法选择所需要的节目,在接 收天线后,有一个选择性电路,它的作用是把所需的信号(电台)挑选出来,并 把不要的信号“滤掉”,以免产生干扰,这就是我们收听广播时,所使用的“选 台”按钮。 选择性电路的输出是选出某个电台的高频调幅信号,利用它直接推动耳机 (电声器)是不行的,还必须把它恢复成原来的音频信号,这种还原电路称为解 调,把解调的音频信号送到耳机,就可以收到广播。 二.设计要求与思路 2.1 收音机的设计要求: 可对无线接收机的频率进行控制。通过键盘可以设置接收频率,接收频率在 88-108MHz 内自选 20M 的带宽。 2.2 系统设计整体思路 (1)硬件部分:整体由 52 单片机控制,组成由液晶显示屏、功放模块、TEA5767 收音机模块、按键。如下图所示: 4
基于 TEA5767 模块的数字 FM 收音机设计 图为:系统方案设计框图 三、主要电路模块的实现方案比较及选择 AM:改变载波的振幅称振幅调制。AM 是指对信号进行幅度调制。一般做法 就是先在原信号上叠加一个直流信号以保证信号 f(t)+A>0,然后乘上一个高频 的余弦信号,即得到 g(t)=[f(t)+A]coswt。在频域上的效果就是将原信号的频 谱移动到 w 处,以适合信道传输的最佳频率范围。g(t)的包络线即 f(t)+A,用一 个简单的包络检测电路就可以接收并还原信号了。 FM:改变载波的频率称频率调制。音频信号的改变往往是周期性的。与“FM 无线电波”相同,“FM 合成理论”同样也有着发音体(载体)和调制体两个 元素。发音体或称载波体,是实际发出声音的频率振荡器;调制体或称调制 器. 本次方案选用的是 FM 调制。理由有以下几点: 1) 在同样的频率、功率等条件下,用调频方式传输信号比调幅方式要远得多。 因为调幅方式的载频电平要高出噪声电平三四十分贝才能得到良好的图像 指标,而调频方式只要高出噪声电平几分贝即可。 2) 调频比调幅抗干扰能力强:外来的各种干扰、加工业和天电干扰等,对已调 波的影响主要表现为产生寄生调幅,形成噪声。调频制可以用限幅的方法, 消除干扰所引起的寄生调幅。而调幅制中已调幅信号的幅度是变化的,因而 不能采用限幅,也就很难消除外来的干扰。 3) 另外,信号的信噪比愈大,抗干扰能力就愈强。而解调后获得的信号的信噪 比与调制系数有关,调制系数越大,信噪比越大。由于调频系数远大于调幅 系数,因此,调频波信噪比高,调频广播中干扰噪声小。 4) 调频波比调幅波频带宽。 5
基于 TEA5767 模块的数字 FM 收音机设计 3.1 控制模块方案选择: 方案:控制核心选择 STC89C52 单片机,该单片机有一个 8 位的微处理器, 与通用的微处理器基本相同,STC89C52 是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。优势为结构简单,价 格不高,易于购买。缺点为缺少 AD 转换功能,运行速度较慢。 由于方案的单片机使用较为广泛,功能较为了解。故采用此方案作为控制模 块。 3.2 液晶显示模块方案选择: 方案:用 Lcd1602 显示屏,该显示屏具有 2 行 16 个字符。Lcd1602 具有体 积小、重量轻、功耗低、寿命长、无辐射、无污染等优点,低压、微功耗极低的 工作电压,只要 2V-3V 即可工作,而工作电流仅几个微安即每个显示字符只有几 个微安。优势为结构简单,价格不高,易于购买。实际中应用到的机会比较大。 通过自己所掌握的知识与能力,由于对 Lcd1602 的使用比较了解。故采用此 次模块。 3.3 无线芯片方案选择: TEA5767 芯片,通过 I2C 接口与单片机进行通信。单片机按键对 TEA5767 进 行初始化输入接收频段的频率,TEA5767 内部对信号滤波、放大、解调处理,输 出 信 号 经 过 功 放 进 行 放 大 , 插 上 耳 麦 即 可 收 听 到 电 台 节 目 , 接 收 频 率 为 87M~108MHz。 方案(1)采用无线芯片 TEA5767,自己设计外围电路。 方案(2)采用相关厂家生产的 TEA5767 模块来实现。 很显然,第一种方案需要自己设计电路、画 PCB 和焊接,而 TEA5767 采用的 是 FVQFN40(耐热的薄型四脚扁平封装)封装,在短时间内和有限的条件下实现 硬件功能的难度相当大。所以本设计采用第二种选择方案——使用现成的模块。 6
基于 TEA5767 模块的数字 FM 收音机设计 四、系统电路图 4.1 微控制器模块 单片机是控制单元的核心,起着控制收音机所有运行状态的作用。单片机控 制模块使用的是 STC89C52,使用该芯片很容易实现对其他模块的控制。通过对 单片机 STC89C52 写入程序,可以方便的用软件来控制整个过程。 STC89C52 单片机,支持 USB 口或者是串口两种下载程序方式,不用另买烧 写器,编程器等产品,可以方便的烧写程序到单片机里;单片机内部有 P0、P1、 P2、P3 个八位双向 I/O 口,外设与这些端口可以直接相接,无需另外的接口芯 片。P0-P3 既可以按字节输入或输出,也可以按进位进行输入输出,共 32 条口 线,其控制十分灵活方便。 单片机特点: (1) 集成度高,体积小,可靠性高 (2) 控制功能强 (3) 低电压,低功耗 (4) 性价比高 P1 口负责控制 LCD 液晶显示。通过软件模拟 SPI 总线控制显示内容。 图 4.1 单片机最小系统 P2.6 接 TEA5767 模块的 DAT 线。 P2.7 接 TEA5767 模块的 CLK 线。 RET 接复位端的 RST 7
基于 TEA5767 模块的数字 FM 收音机设计 P3.0 接下载线的 RXD P3.1 接下载线的 TXD P3 口负责扫描按键。 P3.2 接按键 1。 P3.3 接按键 2。 P3.4 接按键 3。 P3.5 接按键 4。 P3.6 接按键 5。 P3.7 接按键 6。 4.2FM 模块 图 4.2 FM 模块原理图 DAT 线接微控制器模块 P2.6 引脚。 CLK 线接微控制器模块 P2.7 引脚。 DAT 和 CLK 线组成 IIC 总线与微控制器通信。 OUTL 输出左声道。 OUTR 输出右声道。 4.2.1 FM 模块介绍 在方案设计时就已经确定 FM 部分采用按照 datasheet 推荐的应用设计电路 图生产的模块。本设计 FM 模块采用 B20C 封装的完整版收音机模块,外接引脚只 有 10 个,开发者只需要关注引脚而不需要关注模块的内部结构,开发方便简单, 使用过程简单。 8
分享到:
收藏