📄 audio.c
字号:
/*********************************************************
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 + -