TEA5767完整收音机程序Word下载.docx
- 文档编号:4325643
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:17
- 大小:16.58KB
TEA5767完整收音机程序Word下载.docx
《TEA5767完整收音机程序Word下载.docx》由会员分享,可在线阅读,更多相关《TEA5767完整收音机程序Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
voidI2C_Send_Byte(unsignedcharsendbyte);
unsignedcharI2C_Receive_Byte(void);
voidI2C_Start(void);
voidI2C_Stop(void);
voidI2C_Ack(void);
voidI2C_Noack(void);
/*********************************************************************/
/*IIC读写程序芯片型号*/
sbitI2C_SCK=P3^0;
/*实时时钟时钟线引脚*/
sbitI2C_SDA=P3^1;
/*实时时钟数据线引脚*/
sbitk1=P1^7;
sbitk2=P1^6;
sbitk3=P1^5;
sbitk4=P1^4;
/************************************************************************/
sbitge=P2^3;
sbitshi=P2^2;
sbitbai=P2^1;
sbitqan=P2^0;
unsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共阳
//0,1,23456789
unsignedcharradio_write_data[5]={0x2d,0x56,0x20,0x11,0x00};
//初始化写入TEA5767的数据(FM89.8Mhz)
unsignedcharradio_read_data[5];
unsignedintPll_Data;
unsignedlongFrequency_Data;
voidInitialization(void)
{
TMOD=0x11;
TH0=0x5d;
TL0=0x3d;
TR0=0;
//25ms
TH1=0x5d;
TL1=0x3d;
TR1=0;
T2CON=0x30;
RCAP2H=0xFE;
TH2=RCAP2H;
RCAP2L=0xFB;
TL2=RCAP2L;
TR2=0;
//2400bps
PCON=0x00;
SCON=0xD0;
IP=0x14;
EX0=1;
IT0=1;
ET0=1;
EX1=1;
IT1=1;
ES=0;
EA=0;
}
//读TEA5767状态,并转换成频率
voidRadio_Read(void)
unsignedchartemp_l,temp_h;
Pll_Data=0;
ATIICxx_PRead(&
radio_read_data[0],5);
temp_l=radio_read_data[1];
temp_h=radio_read_data[0];
temp_h&
=0x3f;
Pll_Data=temp_h*256+temp_l;
Get_Frequency();
//由PLL计算频率
voidGet_Frequency(void)
unsignedcharhlsi;
unsignedintnpll=0;
npll=Pll_Data;
hlsi=radio_read_data[2]&
0x10;
if(hlsi)
Frequency_Data=(unsignedlong)((float)(npll)*(float)REFERENCE_FREQ*(float)0.25-225);
//频率单位:
KHz
else
Frequency_Data=(unsignedlong)((float)(npll)*(float)REFERENCE_FREQ*(float)0.25+225);
//由频率计算PLL
voidGet_Pll(void)
Pll_Data=(unsignedint)((float)((Frequency_Data+225)*4)/(float)REFERENCE_FREQ);
k
Pll_Data=(unsignedint)((float)((Frequency_Data-225)*4)/(float)REFERENCE_FREQ);
//手动设置频率,mode=1,+0.1MHz;
mode="
0:
-0"
.1MHz,不用考虑TEA5767用于搜台的相关位:
SM,SUD
voidSearch(unsignedcharmode)
Radio_Read();
if(mode)
Frequency_Data+=100;
if(Frequency_Data>
max_freq)
Frequency_Data=min_freq;
Frequency_Data-=100;
if(Frequency_Data<
min_freq)
Frequency_Data=max_freq;
Get_Pll();
radio_write_data[0]=Pll_Data/256;
radio_write_data[1]=Pll_Data%256;
radio_write_data[2]=0x41;
radio_write_data[3]=0x11;
radio_write_data[4]=0x40;
ATIICxx_PWrite(&
radio_write_data[0],5);
//自动搜台,mode=1,频率增加搜台;
频率减小搜台"
.
voidAuto_Search(unsignedcharmode)
radio_write_data[2]=0xb1;
if(Pll_Data>
max_pll)
Pll_Data=min_pll;
if(Pll_Data<
min_pll)
Pll_Data=max_pll;
radio_write_data[0]=Pll_Data/256+0x40;
while(!
(radio_read_data[0]&
0x80))//RF电台就绪标志
}
voidmain(void)
//0x2d,0x56,0x20,0x11,0x00
unsignedlongtemp;
Initialization();
radio_write_data[0]=0x2A;
radio_write_data[1]=0xB6;
radio_write_data[2]=0x41;
radio_write_data[3]=0x11;
radio_write_data[4]=0x40;
//初始化TEA5767(89.8Mhz)
Frequency_Data=89800;
while
(1)
{temp=Frequency_Data;
Led_Display(Frequency_Data);
if(k1==0)
{DelayD
(2);
while(k1==0);
//等待键松开
Search(Add_Freq);
if(k2==0)
while(k2==0);
Search(Dec_Freq);
if(k3==0)
while(k3==0);
Auto_Search(Add_Freq);
if(k4==0)
while(k4==0);
//等待键松开
Auto_Search(Dec_Freq);
structbytedata_2
unsignedcharByteH;
unsignedcharByteL;
};
unionint2byte
unsignedintIntData;
structbytedata_2ByteData;
//启动I2C总线,退出时SCL为低
voidI2C_Start(void)
{
I2C_SDA=1;
/*发送起始条件的数据信号*/
_Nop();
I2C_SCK=1;
/*起始条件建立时间大于4.7us,延时*/
I2C_SDA=0;
/*发送起始信号*/
/*起始条件锁定时间大于4μs*/
I2C_SCK=0;
/*钳住I2C总线,准备发送或接收数据*/
//*停止I2C总线
voidI2C_Stop(void)
/*发送结束条件的数据信号*/
/*发送结束条件的时钟信号*/
/*结束条件建立时间大于4μs*/
/*发送I2C总线结束信号*/
//MCU等待应答位(返回0表示应答)
bitI2C_WaitAck(void)
unsignedcharucErrTime=200;
//因故障接收方无ACK,超时值。
while(I2C_SDA)
ucErrTime--;
if(ucErrTime==0)
I2C_Stop();
return0;
return1;
//MCU应答信号
voidI2C_Ack(void)
//MCU发送非应答信号
voidI2C_Noack(void)
voidI2C_Send_Byte(unsignedcharsendbyte)
unsignedchari=8;
while(i--)
I2C_SCK=0;
//_Nop();
if(sendbyte&
0x80)I2C_SDA=1;
elseI2C_SDA=0;
I2C_SCK=1;
sendbyte<
<
=1;
I2C_WaitAck();
staticunsignedcharI2C_Receive_Byte(void)
unsignedchari=8,data_buffer;
I2C_SDA=1;
while(i--)
I2C_SCK=0;
I2C_SCK=1;
data_buffer<
if(I2C_SDA)data_buffer++;
return(data_buffer);
voidATIICxx_PWrite(unsignedchar*McuAddress,unsignedcharcount)
I2C_Start();
I2C_Send_Byte(ATIIcxxDriverAddressW);
while(count--)
I2C_Send_Byte(*(unsignedchar*)McuAddress);
((unsignedchar*)McuAddress)++;
voidATIICxx_PRead(unsignedchar*McuAddress,unsignedcharcount)
I2C_Start();
I2C_Send_Byte(ATIIcxxDriverAddressR);
while(count--)
{
*McuAddress=I2C_Receive_Byte();
I2C_Ack();
McuAddress++;
}
I2C_Noack();
I2C_Stop();
voidDelayD(unsignedcharTime)
unsignedchari;
while(--Time!
=0)
for(i=0;
i<
125;
i++);
//i从0加到125,CPU大概就耗时1毫秒。
voidLed_Display(unsignedlongi)//显示函数
LED=tab[i/100000];
qan=0;
bai=1;
shi=1;
ge=1;
DelayD(3);
LED=tab[(i%100000)/10000];
qan=1;
bai=0;
LED=tab[((i%100000)%10000)/1000]&
0x7f;
shi=0;
LED=tab[(((i%100000)%10000)%1000)/100];
ge=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TEA5767 完整 收音机 程序