⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tda7540.c

📁 美上美fea397 FM/AM车载收音模块(tda7540芯片)控制源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************************************/
/*函数原形:void Close_IFCounter(void)                                                          */
/*功	能:                                                                       */
/*参    数:                                                                    */
/*************************************************************************************************/
void Close_IFCounter(void)
{
	Write_TDATDA7540(0,0x56);
	Write_TDATDA7540(5,0x91);
}
/*************************************************************************************************/
/*函数原形:void Open_IFCounter_AM(void)                                                          */
/*功	能:                                                                       */
/*参    数:                                                                    */
/*************************************************************************************************/
void Open_IFCounter_AM(void)
{
	Write_TDATDA7540(7,0x01);
	Write_TDATDA7540(5,0xea);
}
/*************************************************************************************************/
/*函数原形:void Close_IFCounter_AM(void)                                                          */
/*功	能:                                                                       */
/*参    数:                                                                    */
/*************************************************************************************************/
void Close_IFCounter_AM(void)
{
	Write_TDATDA7540(7,0x00);
	Write_TDATDA7540(5,0xa2);
}
/*************************************************************************************************/
/*函数原形:bit Read_IFCounter(void)                                                             */
/*功	能:自动收台停台                                                                         */
/*参    数:1:停台,0:跳台                                                                     */
/*************************************************************************************************/
U8 Read_IFCounter(void)
{
	U16 i;
	U16 err_data = 0;
	U16 sen;
//	SSTOP = 1;
/*
	for(i=0;i<1000;i++)
	{
		if(!SSTOP)
		{
			Close_IFCounter();
			return 0;	
		}
	}
	Close_IFCounter();
	return 1;
	*/
	for(i=0;i<1000;i++)
	{
		Delay_us(200);
		if(SSTOP == 0)err_data++;
	}
//	if(car_CurrentMode == 3)
		sen = 1;
//	else
//		sen = 10;
	if(err_data>sen)
	{
		Close_IFCounter();
		return 0;	
	}
	else
	{
		Close_IFCounter();
		return 1;	
	}
}

/*************************************************************************************************/
/*函数原形:bit Read_IFCounter_AM(void)                                                          */
/*功	能:自动收台停台                                                                         */
/*参    数:1:停台,0:跳台                                                                     */
/*************************************************************************************************/
U8 Read_IFCounter_AM(void)
{
	U16 i;
	U16 err_data = 0;
//	SSTOP = 1;
/*
	for(i=0;i<1000;i++)
	{
		if(!SSTOP)
		{
			Close_IFCounter();
			return 0;	
		}
	}
	Close_IFCounter();
	return 1;
	*/
	for(i=0;i<1000;i++)
	{
		Delay_us(200);
		if(!SSTOP)err_data++;
	}
	if(err_data>SENSITVE)
	{
		Close_IFCounter_AM();
		return 0;	
	}
	else
	{
		Close_IFCounter_AM();
		return 1;	
	}
}
/*************************************************************************************************/
/*函数原形:void AutoScan_FM(void)                                                               */
/*功	能:自动搜台                                                                             */
/*参    数:                                                                                     */
/*************************************************************************************************/

//U16 Auto_Step_Val[] = {0,0,0,0,0,0,0,0,0,0,
 //                            0,0,0,0,0,0,0,0,0,0};
/*
void AutoScan_FM(void)
{   U8 i;
    U8 Auto_Step_Index = 0;
	U16 Fre;
 //   Fre = FM_MIN;                     //自动搜台测试
    Fre = 875;                     //自动搜台测试
    while (Fre < 1080)				//从低频向高频搜所有台并记录(fm)
    {
        Fre++;
		Select_Fm(Fre);
		//fb_printtemp(Fre,100);
		Open_IFCounter();
		Delay_us(30000);
		if(Read_IFCounter())
		{
			//Auto_Step_Val[Auto_Step_Index++]=Fre;
			Fre = Fre;
			//fb_printtemp(Fre,200);
		for(i=0;i<100;i++)
			Delay_us(30000);
		for(i=0;i<100;i++)
			Delay_us(30000);
		}
    }
}
*/
/*************************************************************************************************/
/*函数原形:void AutoScan_AM(void)                                                               */
/*功	能:自动搜台                                                                             */
/*参    数:                                                                                     */
/*************************************************************************************************/
//U16 Auto_Step_Val1[] = {0,0,0,0,0,0,0,0};
/*
void AutoScan_AM(void)
{U8 i;
	U8 Auto_Step_Index = 0;
	U16 Fre;
    Fre = 522;                     //自动搜台测试
    while (Fre < 1620)				//从低频向高频搜所有台并记录(am)
    {
        Fre=Fre+9;
		Select_Am(Fre);
		Open_IFCounter_AM();
		//fb_printtemp(Fre,300);
		Delay_us(500);
		if(Read_IFCounter_AM())
		{
			//Auto_Step_Val1[Auto_Step_Index++]=Fre;
			Fre = Fre;
			//fb_printtemp(Fre,400);
		for(i=0;i<100;i++)
			Delay_us(30000);
		for(i=0;i<100;i++)
			Delay_us(30000);
		}
    }    
}
*/
/*************************************************************************************************/
/*函数原形:U16 AutoScan_Step_FM(U8 UpDowm,U16 Fre)                                              */
/*功	能:半自动搜台                                                                           */
/*参    数:UpDowm 0:向下,1:向上  Fre:初始频率                                                   */
/*************************************************************************************************/
U16 AutoScan_Step_FM(U8 UpDowm,U16 *Fre)
{
	if(UpDowm)
	{
    			*Fre = *Fre + 1;
			if(*Fre < 875)
				*Fre = 875;
			if(*Fre >= 1080)
				*Fre = 875;
			Select_Fm(*Fre);
			Open_IFCounter();
			Delay_us(40000);
			if(Read_IFCounter())
			     return(*Fre);
	}
	return 0;
}

/*************************************************************************************************/
/*函数原形:void AutoScan_Step_AM(U8 UpDowm)                                                     */
/*功	能:半自动搜台                                                                           */
/*参    数:UpDowm 0:向下   1:向上                                                               */
/*************************************************************************************************/
U16 AutoScan_Step_AM(U8 UpDowm,U16 *Fre)
{U8 i;
	if(UpDowm)
	{
    			*Fre = *Fre + 9;
			if(*Fre < 522)
				*Fre = 522;
			if(*Fre >= 1620)
				*Fre = 1620;
			Select_Am(*Fre);
			Open_IFCounter_AM();
		for(i=0;i<100;i++)
			Delay_us(900);
			if(Read_IFCounter_AM())return(*Fre);
	}
	return(0);	
}

/*************************************************************************************************/
/*函数原形:U16 Step_FM(U8 UpDowm,U16 Fre)                                              */
/*功	能:单步搜台                                                                           */
/*参    数:UpDowm 0:向下,1:向上  Fre:初始频率                                                   */
/*************************************************************************************************/
U16 Step_FM(U8 UpDowm,U16 Fre)
{
	if(UpDowm)
	{
		Fre++;
		if(Fre>1080)Fre=875;
		if(Fre<875)Fre=1080;
		Select_Fm(Fre);
	}
	else
	{
		Fre--;
		if(Fre>1080)Fre=875;
		if(Fre<875)Fre=1080;
		Select_Fm(Fre);
	}
	return(Fre);	
}

/*************************************************************************************************/
/*函数原形:U16 Step_AM(U8 UpDowm,U16 Fre)                                              */
/*功	能:单步搜台                                                                           */
/*参    数:UpDowm 0:向下,1:向上  Fre:初始频率                                                   */
/*************************************************************************************************/
U16 Step_AM(U8 UpDowm,U16 Fre)
{
	if(UpDowm)
	{
		Fre=Fre+9;
		if(Fre>1620)Fre=522;
		if(Fre<522)Fre=1620;
		Select_Am(Fre);
	}
	else
	{
		Fre=Fre-9;
		if(Fre>1620)Fre=522;
		if(Fre<522)Fre=1620;
		Select_Am(Fre);
	}
	return(Fre);	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -