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

📄 audio_pro.c

📁 车载SCALER模块源程序
💻 C
字号:
#include"include.h"
//#include"iic.h"
/**********************************************************************
函数名:Set_Volume(unsigned char Add_Dec,unsigned char Vol_value)
函数说明:音量设置。
	Add_Dec:1为增加,0为减小。
	Vol_value:为输入音量值。
**********************************************************************/
void Set_Volume(unsigned char Add_Dec,unsigned char Vol_value)
{
	unsigned char i;
	i = Vol_value;

	if(Add_Dec)
	{
		++i;
		if(i > 40)i = 40;		
	}	
	else
	{
		--i;
		if(i > 40)i = 0;
	}
		
	Audio_Volume = i;
	if(i == 0)
       Write7318(TDA7318,0x3f);
	else{
		if(Audio_state == 0x48)
		{   
			if(speakflag == 1)					//导航发声音标志
				Write7318(TDA7318,(0x29 - i));	//0x30//0x34
			else Write7318(TDA7318,0x3f);
		}
		else Write7318(TDA7318,(0x37 - i));
	}
	
	Write24C16(0x0703,Audio_Volume);
	
	Sleep(100);
}

/**********************************************************************
函数名:SETVOLUME(unsigned char vol)
函数说明:音量设置,参数为音量值
**********************************************************************/

void SETVOLUME(unsigned char vol)
{
	unsigned char i;
	i = vol;
	if(i > 0x3f) i = 0x3f;
	if(i == 0) Write7318(TDA7318,0x3f);
	else{
		if(Audio_state == 0x48)
		{
			Write7318(TDA7318,(0x3f - i));	//0x30//0x34
		}
		else Write7318(TDA7318,(0x37 - i));
	}
    Audio_Volume = i;
	Write24C16(0x0703,Audio_Volume);
	Sleep(100);
}
/**********************************************************************
函数名:EQ_Ajustment(unsigned char Ajust_Obj,unsigned char EQ_Val)	
函数说明:EQ设置
**********************************************************************/
void EQ_Ajustment(unsigned char Ajust_Obj,unsigned char EQ_Val)	
{
	unsigned char AJUSTTYPE;
	unsigned char AJUSTVALUE;

	AJUSTTYPE = Ajust_Obj;
	AJUSTVALUE = EQ_Val;

	

	if((AJUSTTYPE < 6) && (AJUSTVALUE < 5))
	{
		Write24C16((Ajust_Obj + 0x0e04),EQ_Val);
	}
	switch(AJUSTTYPE)
	{
		case 1:	//低音
		{
			switch(EQ_Val)
			{
				case 0:Write7318(TDA7318,0x60);break;			
				case 1:Write7318(TDA7318,0x62);break;
				case 2:Write7318(TDA7318,0x63);break;
				case 3:Write7318(TDA7318,0x64);break;
				case 4:Write7318(TDA7318,0x66);break;
				default:break;
			}
			break;
		}
		case 2:	//中音	
		{
/*			switch(EQ_Val)
			{
				case 0:Audio_state = ((Audio_state & 0xe7) | 0x18);break;			
				case 1:Audio_state = ((Audio_state & 0xe7) | 0x10);break;
				case 2:Audio_state = ((Audio_state & 0xe7) | 0x08);break;
				case 3:Audio_state &= 0xe7;break;
				case 4:Audio_state &= 0xe7;break;
				default:break;
				Write7318(TDA7318,Audio_state);
			}
*/
			break;		
		}	
		case 3:	//高音
		{
			switch(EQ_Val)
			{
				case 0:Write7318(TDA7318,0x73);break;	
				case 1:Write7318(TDA7318,0x74);break;
				case 2:Write7318(TDA7318,0x75);break;
				case 3:Write7318(TDA7318,0x76);break;
				case 4:Write7318(TDA7318,0x77);break;
				default:break;
			}
			break;			
		}
		case 4:	//左右
		{
			switch(EQ_Val)
			{
				case 0:
				{
					Write7318(TDA7318,0x94);		
					Write7318(TDA7318,0xa4);	
					Write7318(TDA7318,0xd4);		
					Write7318(TDA7318,0xf4);
					break;	
				}
				case 1:
				{
					Write7318(TDA7318,0x8c);		
					Write7318(TDA7318,0xa4);	
					Write7318(TDA7318,0xcc);		
					Write7318(TDA7318,0xec);
					break;	
				}
				case 2:
				{
					Write7318(TDA7318,0x84);		
					Write7318(TDA7318,0xa4);	
					Write7318(TDA7318,0xc4);		
					Write7318(TDA7318,0xe4);
					break;	
				}
				case 3:
				{
					Write7318(TDA7318,0x84);		
					Write7318(TDA7318,0xac);	
					Write7318(TDA7318,0xc4);		
					Write7318(TDA7318,0xec);
					break;	
				}
				case 4:
				{
					Write7318(TDA7318,0x84);		
					Write7318(TDA7318,0xb4);	
					Write7318(TDA7318,0xc4);		
					Write7318(TDA7318,0xf4);
					break;	
				}

				default:break;
			}
			break;
		}
		case 5:	//前后	
		{
			switch(EQ_Val)
			{
				case 0:
				{
					Write7318(TDA7318,0x84);		
					Write7318(TDA7318,0xa4);	
					Write7318(TDA7318,0xd4);		
					Write7318(TDA7318,0xf4);
					break;	
				}
				case 1:
				{
					Write7318(TDA7318,0x84);		
					Write7318(TDA7318,0xa4);	
					Write7318(TDA7318,0xcc);		
					Write7318(TDA7318,0xec);
					break;	
				}
				case 2:
				{
					Write7318(TDA7318,0x84);		
					Write7318(TDA7318,0xa4);	
					Write7318(TDA7318,0xc4);		
					Write7318(TDA7318,0xe4);
					break;	
				}
				case 3:
				{
					Write7318(TDA7318,0x8c);		
					Write7318(TDA7318,0xac);	
					Write7318(TDA7318,0xc4);		
					Write7318(TDA7318,0xe4);
					break;	
				}
				case 4:
				{
					Write7318(TDA7318,0x94);		
					Write7318(TDA7318,0xb4);	
					Write7318(TDA7318,0xc4);		
					Write7318(TDA7318,0xe4);
					break;	
				}	
				default:break;
			}
			break;
		}
		default:break;	
	}
	
}

/**********************************************************************
函数名:SteroMonoChange(unsigned char StMo)
函数说明:立体声和单声道设置,1为立体声,0为单声道
**********************************************************************/
void SteroMonoStereo(unsigned char StMo)
{
/*	if(StMo) Audio_state |= 0x04;
	else Audio_state = Audio_state & 0xfb;

	Write7318(TDA7318,Audio_state);
*/
	if(StMo) 
	  {
	    Write7318(TDA7318,0x58);
        Write7318(TDA7318,0x59);
		Write7318(TDA7318,0x5a);
		Write7318(TDA7318,0x5b);
	   }
	else 
	   {
	      Write7318(TDA7318,0x5c);
          Write7318(TDA7318,0x5d);
		  Write7318(TDA7318,0x5e);
		  Write7318(TDA7318,0x5f);                                              // WriteIIC_SW(TDA7540,25,0x5a);
	   }
}
void AudioInit(void)
{
    SteroMonoStereo(1);
    SETVOLUME(29);
	NoMute7318();
}
void Mute7318(void)
{
     Write7318(TDA7318,0x9f);
     Write7318(TDA7318,0xbf);
	 Write7318(TDA7318,0xdf);
     Write7318(TDA7318,0xff);

}
void NoMute7318(void)
{
     Write7318(TDA7318,0x80);
     Write7318(TDA7318,0xa0);
	 Write7318(TDA7318,0xc0);
     Write7318(TDA7318,0xe0);
}

⌨️ 快捷键说明

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