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

📄 audio.c

📁 我个人编写的车载dvd上的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*********************************************************
	Project:		TF60K
	File name:	Aud_main.c
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2005-2-18- 15:12:49
*********************************************************/
#include "public.h"

#define UP 		1
#define DOWN	-1

static const unsigned char VolTable[]=
{
	0x7F, // mute// 0
	0x5F, // -79dB
	0x5E, // -78dB
	0x5D, // -77dB
	0x5C, // -76dB
	0x5B, // -75dB
	0x5A, // -74dB
	0x59, // -73dB
	0x58, // -72dB
	0x57, // -71dB
	0x56, // -70dB// 10
	0x55, // -69dB
	0x54, // -68dB
	0x53, // -67dB
	0x52, // -66dB
	0x51, // -65dB
	0x50, // -64dB
	0x4F, // -63dB
	0x4E, // -62dB
	0x4D, // -61dB
	0x4C, // -60dB// 20
	0x4B, // -59dB
	0x4A, // -58dB
	0x49, // -57dB
	0x48, // -56dB
	0x47, // -55dB
	0x46, // -54dB
	0x45, // -53dB
	0x44, // -52dB
	0x43, // -51dB
	0x42, // -50dB// 30
	0x41, // -49dB
	0x40, // -48dB
	0x3F, // -47dB
	0x3E, // -46dB
	0x3D, // -45dB
	0x3C, // -44dB
	0x3B, // -43dB
	0x3A, // -42dB
	0x39, // -41dB
	0x38, // -40dB// 40
	0x37, // -39dB
	0x36, // -38dB
	0x35, // -37dB
	0x34, // -36dB
	0x33, // -35dB
	0x32, // -34dB
	0x31, // -33dB
	0x30, // -32dB
	0x2F, // -31dB
	0x2E, // -30dB// 50
	0x2D, // -29dB
	0x2C, // -28dB
	0x2B, // -27dB
	0x2A, // -26dB
	0x29, // -25dB
	0x28, // -24dB
	0x27, // -23dB
	0x26, // -22dB
	0x25, // -21dB
	0x24, // -20dB// 60
	0x23, // -19dB
	0x22, // -18dB
	0x21, // -17dB
	0x20, // -16dB
	0x1F, // -15dB
	0x1E, // -14dB
	0x1D, // -13dB
	0x1C, // -12dB
	0x1B, // -11dB
	0x1A, // -10dB// 70
	0x19, // -9dB
	0x18, // -8dB
	0x17, // -7dB
	0x16, // -6dB
	0x15, // -5dB
	0x14, // -4dB
	0x13, // -3dB
	0x12, // -2dB
	0x11, // -1dB
	0x00, // +0dB// 80
	0x01, // +1dB
	0x02, // +2dB
	0x03, // +3dB
	0x04, // +4dB
	0x05, // +5dB
	0x06, // +6dB
	0x07, // +7dB
	0x08, // +8dB
	0x09, // +9dB
	0x0A, // +10dB// 90
	0x0B, // +11dB
	0x0C, // +12dB
	0x0D, // +13dB
	0x0E, // +14dB
	0x0F // +15dB
};

static const unsigned char VolChangeTable[]=
{
	0,6,11,16,20,24,26,28,30,32,34,
	36,38,40,42,43,44,45,46,47,48,
	49,50,51,52,53,54,55,56,57,58,
	59,60,61,62,63,64,65,66,67,68,
	68,69,70,71,72,73,74
};
#define RADIO_INPUT_NUM   2
#define AUX_INPUT_NUM 1
#define DVD_INPUT_NUM 0
#define ALL_MUTE   6
static const unsigned char SourceTable[]=
{
	RADIO_INPUT_NUM,
       AUX_INPUT_NUM,
       DVD_INPUT_NUM,
       ALL_MUTE
};

static const unsigned char LoudTable[]=
{
	0x00, // +0dB
//	0x01, // +1dB
//	0x02, // +2dB
//	0x03, // +3dB
	/*0x04, // +4dB
	0x05, // +5dB*/
	0x06, // +6dB		//low
	/*0x07, // +7dB
	0x08, // +8dB
	0x09, // +9dB*/
	0x0A, // +10dB		//mid
	/*0x0B, // +11dB
	0x0C, // +12dB
	0x0D, // +13dB
	0x0E, // +14dB*/
	0x0F // +15dB		//high
};

static const unsigned char SubwTable[]=
{
	0x00, // +0dB
	0x01, // +1dB
	0x02, // +2dB
	0x03, // +3dB
	0x04, // +4dB
	0x05, // +5dB
	0x06, // +6dB
	0x07, // +7dB
	0x08, // +8dB
	0x09, // +9dB
//	0x0A, // +10dB
	0x0B, // +11dB
//	0x0C, // +12dB
	0x0D, // +13dB
//	0x0E, // +14dB
	0x0F, // +15dB

	0x7F // mute
};

static const unsigned char BasTreTable[]=
{
//0x0F, // -15dB
//0x0E, // -14dB
//0x0D, // -13dB
0x0C, // -12dB    
//0x0B, // -11dB
0x0A, // -10dB
//0x09, // -9dB
0x08, // -8dB
//0x07, // -7dB
0x06, // -6dB
//0x05, // -5dB
0x04, // -4dB
//0x03, // -3dB
0x02, // -2dB
//0x01, // -1dB
0x10, // +0dB
//0x11, // +1dB
0x12, // +2dB
//0x13, // +3dB
0x14, // +4dB
//0x15, // +5dB
0x16, // +6dB
//0x17, // +7dB
0x18, // +8dB
//0x19, // +9dB
0x1A, // +10dB
//0x1B, // +11dB
0x1C//,  +12dB
//0x1D, // +13dB
//0x1E, // +14dB
//0x1F, // +15dB
};

static const unsigned char BalFadTable[]=
{
	0x00, // +0dB
	0x13, // -3dB
	0x15, // -5dB
	0x18, // -8dB
	0x1A, // -10dB
	0x1D, // -13dB
	0x1F, // -15dB
	0x22, // -18dB
	0x24, // -20dB
	0x27, // -23dB
	0x29, // -25dB
	0x2C, // -28dB
	0x7F // mute	
};

static const unsigned char EQTable[]=
{
	// Bass, Treble
	10,10,	//Classic
	10,12, 	//Pop
	12,12,	//Rock
};

/*********************************************
	Function:		AudioInit
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-8-9- 16:31:15
*********************************************/

void AudioInit(void)
{
  
    unsigned char i;
	PD_AMUTE=1;
	PCR1_AMUTE=1;
	PCR2_AMUTE=1;
	Pin_AMUTE=0;

	/*Pin_SACLK=1;//push pull output
	PD_SACLK=1;
	PO_SACLK=1;*/
	
	
	AudioI2CBuf[0]=y00110000;
	AudioI2CBuf[1]=y11100000;
	AudioI2CBuf[2]=y00000111;
	AudioI2CBuf[3]=y00000000;
	AudioI2CBuf[4]=y10000000;
	AudioI2CBuf[5]=y00000000;
	AudioI2CBuf[6]=y00000000;
	AudioI2CBuf[7]=y00110000;
	AudioI2CBuf[8]=y01000000;
	AudioI2CBuf[9]=y11110111;
	AudioI2CBuf[10]=y00000000;
	AudioI2CBuf[11]=y00000000;
	AudioI2CBuf[12]=y00000000;
	AudioI2CBuf[13]=y00000000;
	AudioI2CBuf[14]=y10000000;
	AudioI2CBuf[15]=y10000000;
	AudioI2CBuf[16]=y00010111;
	AudioI2CBuf[17]=y00000000;
	
	AudioVol=22;
	AudioFVol=22;
	AudioRVol=22;
	AudioBas=6;
	AudioBasFre=0;
	AudioBasQ=0;
	AudioTre=6;
	AudioTreFre=0;
	AudioMid=6;
	AudioMidFre=0;
	AudioMidQ=0;
	AudioIXBass=0;
	AudioIXBass_Bk=1;
	AudioIXBassFre=0;
	AudioSubw=13;
	AudioSubw_Bk=0;
	AudioSubwFre=0;
	AudioSubwFre_Bk=1;
	AudioBal=12;
	AudioFad=12;
	TAVol=14;
	//AudioFSource=AUDIO_INPUT_RADIO;
	//AudioRSource=AUDIO_INPUT_RADIO;
	AudioFSource  = AUDIO_INPUT_MUTE;
	AudioRSource  = AUDIO_INPUT_MUTE;
	
	F_2ZONE=0;
	F_LOUD=0;
	F_SUBW=0;
	F_3DSOUND=0;
	F_MUTE=0;
	
	AudioCalc(AUDIO_ALL_VAL);
	AudioSend(AUDIO_AREA_ALL);
/************Init for 4052 OUTPUT Y3*****/
       PD_SW1 = 1;
       PCR1_SW1 = 1;
       PCR2_SW1  = 0;
       PIN_SW1 = 1;
       PD_SW2 = 1;
       PCR1_SW2 = 1;
       PCR2_SW2  = 0;
       PIN_SW2 = 1;

	AudioWorkMode=AUDIO_MODE_IDLE;
	AudioEQMode=EQ_MODE_OFF;
	
	
}

/*********************************************
	Function:		AudioMain
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-8-9- 16:31:21
*********************************************/
void AudioMain(void)
{
	//AudioSpectrumProc();
	AudioKey();
	//AudioDisp();
	AudioProc();
	SoftChangeLoop();
	//AudioRec();
	//VolDisplay(7);
}

void Proc_SW(mod)
{
            switch(mod)
            	{
            	     case WORKMODE_BT:
                           PIN_SW1  =  0;
                           PIN_SW2  = 0;
            	     	        break;
	            case WORKMODE_GPS:
	            	      PIN_SW1  = 1;
	            	      PIN_SW2 = 0;
	       	        break;
	            case WORKMODE_IPOD:
	            	      PIN_SW1  = 0;
	            	      PIN_SW2  = 0;
	       	        break;
            	}
}
void Proc_SW_off()
{
      PIN_SW1  = 1;
      PIN_SW2  = 1;
}
/*********************************************
	Function:		AudioProc
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-8-9- 16:31:28
*********************************************/
void AudioProc(void)
{

	if(AudioTimer==1)
	{
		AudioTimer=0;
		AudioWorkMode=AUDIO_MODE_IDLE;
		
		switch(System.FWorkMode.Current)
		{
			case WORKMODE_RADIO:
				//System.DispMode.Requst=DISPMODE_RADIO;
				//if(F_InTASwitch)
				if(F_InTASwitch||F_InEONTASwitch)
				{
					System.DispMode.Requst=DISPMODE_RDS;
					RDSDispMode=RDSDISP_TRAFFIC;
				}
				else if(RDS.F_PSExist)
				{
					System.DispMode.Requst=DISPMODE_RDS;
					RDSDispMode=RDSDISP_PS;
				}
				else
				{
					System.DispMode.Requst=DISPMODE_RADIO;
					RDSDispMode=RDSDISP_IDLE;
				}
				break;
			case WORKMODE_DVD:
				System.DispMode.Requst  = DISPMODE_DVD;
				 break;
			case WORKMODE_USB:
				System.DispMode.Requst  = DISPMODE_USB;
				break;
			case WORKMODE_SD:
				System.DispMode.Requst=DISPMODE_SD;
				break;
			case WORKMODE_GPS:
				System.DispMode.Requst=DISPMODE_GPS;
				break;
			case WORKMODE_IPOD:
				System.DispMode.Requst=DISPMODE_IPOD;
				break;
			case WORKMODE_BT:
				System.DispMode.Requst=DISPMODE_BT;
				break;
			case WORKMODE_STANDBY:
				System.DispMode.Requst=DISPMODE_STANDBY;
				break;
		      case WORKMODE_MENU:
		      	       System.DispMode.Requst = DISPMODE_MENU;
		      	       break;
			
		}
		
	}
	
	switch(System.FWorkMode.Next)
	{
	
		case WORKMODE_IDLE:
		case WORKMODE_STANDBY:
		case WORKMODE_MENU:	
		
			break;
		case WORKMODE_RADIO:
			AudioFSource=AUDIO_INPUT_RADIO;
			AudioCalc(AUDIO_SOURCE);
			AudioSend(AUDIO_AREA_FSOURCE);
			break;
	       case WORKMODE_DVD:
	       case WORKMODE_USB:
	       case WORKMODE_SD:	
	              AudioFSource = AUDIO_INPUT_DVD;
	              AudioCalc(AUDIO_SOURCE);
	              AudioSend(AUDIO_AREA_FSOURCE);
	               break;
	       case WORKMODE_BT:
	       case WORKMODE_GPS:
	       case WORKMODE_IPOD:
	       	  Proc_SW(System.FWorkMode.Next);
	       	 AudioFSource  = AUDIO_INPUT_AUX;
	       	 AudioCalc(AUDIO_SOURCE);
	       	 AudioSend(AUDIO_AREA_FSOURCE);
	       	 break;
		
		
	}

             //   AudioMute(SOFTOFF);
              //  AudioMute(HARDOFF);
}


/*********************************************
	Function:		AudioDisp
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-8-9- 16:31:32
*********************************************/
#if 0 // add it by jzq 2009-1-1
void AudioDisp(void)
{
unsigned char str[8]= "       ";
        
      
	if(System.DispMode.Current!=DISPMODE_AUDIO)return;

	if(!F_AudioDispReq)return;
	F_AudioDispReq=0;
      
	//F_DISP_P=0;
	/*if(F_HalfSecondOut)
	{
		ShowVolBar();
		if(F_SpecOK)
		{
			F_SpecOK=0;
			ShowSpectrum();
		}
	}*/

	/*if(AudioEQMode==EQ_MODE_OFF)
		{
			F_DISP_DSP=0;
			F_DISP_CLASSIC=0;
			F_DISP_POP=0;
			F_DISP_ROCK=0;
		}*/
	
	switch(AudioWorkMode)
	{
		case AUDIO_MODE_IDLE:
		case AUDIO_MODE_VOL:
#ifdef SINO_MOS
                   str[0] = 'V';
                   str[1] = 'O';
                   str[2] = 'L';
                   str[3] =' ';
                   str[4] = '0' + AudioVol /10;
                   str[5] = '0' + AudioVol%10;
                   str[6] = ' ';
                   str[7] = ' ';
                   
                 	    

#else
			Display(DISP_CLEAR2);
			DispBuff[2][6]='V';
			DispBuff[2][7]='O';
			DispBuff[2][8]='L';
			DispBuff[2][9]=' ';
			DispBuff[2][10]=' ';
			DispBuff[2][11]=' ';
			DispBuff[2][12]='0'+AudioVol/10;
			DispBuff[2][13]='0'+AudioVol%10;
			Display(DISP_REFRESH2);
#endif			
			break;
		case AUDIO_MODE_BASS:
#ifndef SINO_MOS			
			Display(DISP_CLEAR2);
			DispBuff[2][6]='B';
			DispBuff[2][7]='A';
			DispBuff[2][8]='S';
			DispBuff[2][9]='S';
			DispBuff[2][10]=' ';
			DispBuff[2][11]=' ';
			DispBuff[2][12]=' ';
			DispBuff[2][13]='0';
			if(AudioBas>6)
			{
				DispBuff[2][12]='+';
				DispBuff[2][13]='0'+AudioBas-6;
			}
			else if(AudioBas<6)
			{
				DispBuff[2][12]='-';
				DispBuff[2][13]='0'+6-AudioBas;
			}
			Display(DISP_REFRESH2);
#else
                   str[0] = 'B';
                   str[1] = 'A';
                   str[2] = 'S';
                   str[3] = ' ';
                   str[4] = ' ';
                   if(AudioBas > 6){
                   	     str[5] =  'R';
                   	     str[7] = '0' + AudioBas -6;
                   	}else {
                   	     str[5] = 'L';
                   	     str[7] = '0' + 6 -AudioBas;
                   		}
                   	str[6] =' ';
                   

#endif
			break;
		case AUDIO_MODE_MID:
#ifdef SINO_MOS
                 str[0] = 'M';
                 str[1] = 'I';
                 str[2] = 'D';
                 str[3] = ' ';
                 str[4] = ' ';

⌨️ 快捷键说明

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