TEA5767的简单收音机设计
TEA5767HN 基本资料:
高灵敏、低噪声高频放大器,
收音频率:87.6MHz~108MHz,(支持频率范围在76MHz~87.5MHz 之间的校园收音频道),
LC 调谐振荡器使成本更低,RF AGC 电路
内置调频中频选择 ,I2C 总线控制
内置FM 立体声解调器 ,PLL 合成调谐解码器
两个可编程端口 ,软静音,SNC(立体声噪声消除)
自适应立体声解码,自动搜索功能
等待模式,需要一个32.768KHz 晶体
40 脚LQFP 封装
CPU:STC89C54RD+
晶震:40M
#include
#include
#include
sbit SDA_5767=P1^0;
sbit SCL_5767=P1^1;
sbit BUS_MODE=P1^2;
sbit BUS_ENABLE=P1^3;
#define max_freq 108000
#define min_freq 87500
#define max_pll 0x339b
#define min_pll 0x299d
#define KEY
#define WADDR
#define RADDR
unsigned char write_data[5]={0x2b,0x05,0x61,0x11,0x40};
//write_data[0] 第二位为1为搜索模式 后6为表示收音机频率的高6位
//write_data[1] 表示收音机频率的低8位
//write_data[2] 最高位表示搜索模式是向上还是向下 后两位表示搜索的灵敏度 第四位立体声和单声道选择位后四为左右声道设置
//write_data[3] 第三位表示日本频率和国际频率选择位 第四位 震荡频率选择位(与第五字节最高位共同决定)第七为数字降噪功能选择
//write_data[4] 最高位决定内部震荡频率
unsigned char read_data[5];
unsigned long frequencry=0;
unsigned int pll;
void delay(void) //延时函数
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void start_5767(void)//起始
{
BUS_ENABLE=1;
SDA_5767=1;
SCL_5767=1;
delay();
SDA_5767=0;
delay();
SCL_5767=0;
}
void stop_5767(void)//停止
{
SDA_5767=0;
SCL_5767=1;
delay();
SDA_5767=1;
delay();
SCL_5767=0;
BUS_ENABLE=0;
}
void Check_Ack(void) //检查应答信号
{
SDA_5767=1;
SCL_5767=1;
F0=0;
delay();
if(SDA_5767) //如果数据为高 置位非应答标志FO
F0=1;
SCL_5767=0;
}
void Ack(void) //发响应信号
{
SDA_5767=0;
delay();
SCL_5767=1;
delay();
SCL_5767=0;
}
void no_Ack(void) //发非响应信号
{
SDA_5767=1;
SCL_5767=0;
delay();
SCL_5767=1; //迫使数据传输结束
delay();
}
void send_byte(unsigned char temp) //发送一字节数据
{
unsigned char i=8;
while(i--)
{
}
SCL_5767=0;
delay();
SDA_5767=1; //释放SDA数据线
}
unsigned char read_byte(void) //读一字节数据
{
unsigned char i=8;
unsigned char temp;
while(i--)
{
}
SCL_5767=0;
delay();
SDA_5767=1; //释放SDA数据线
return (temp);
}
void write_radio()
{
unsigned char i;
start_5767();
send_byte(WADDR);
Check_Ack();
if(F0)
{
}
Ack();
for(i=0;i<5;i++)
{
send_byte(write_data[i]);
Check_Ack();
if(F0)
{
}
Ack();
}
stop_5767();
}
void
{
unsigned char i;
start_5767();
send_byte(RADDR);
Check_Ack();
if(F0)
{
}
Ack();
for(i=0;i<5;i++)
{
read_data[i]=read_byte();
Check_Ack();
if(F0)
{
}
Ack();
}
stop_5767();
}
unsigned int get_radio()
{
}
void get_frequencry() //将数据转换为标准频率
{
}
void get_pll() //将频率转换数据
{
}
TEA5767收音机设 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)