📄 aud_main.c
字号:
/***************************************************************************
Project : TDA7540 Jig board
Compiler : ST7 HiCross C (HiWARE)
Module : Aud_main.c
Version : V 1.0
Created : Jan.24th,2005
Author : Jerry HE / ST-ShenZhen
Description
- audio main routine
Modified
-
***************************************************************************/
/* EXTERNAL DECLARATIONS *****************************************************/
/* List of all the variables defined in another module and used in this one. */
/* MODEL => #include [file_name].h */
#include "system.h"
//#pragma INTO_ROM
static const unsigned char AudioMessage[] =
{
'V','O','L','U','M','E',' ',' ', // 0
'B','A','S','S',' ',' ',' ',' ', // 1
'T','R','E','B','L','E',' ',' ', // 2
'M','I','D','D','L','E',' ',' ', // 3
'L','O','U','D',' ',' ',' ',' ', // 4
'S','U','B','W','O','O','F',' ', // 5
'B','A','L','A','N','C','E',' ', // 6
'F','A','D','E','R',' ',' ',' ', // 7
'M','U','T','E',' ',' ',' ',' ', // 7
};
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Aud_Init
Input :
Output :
Description
- Initial audio processor
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Aud_Init()
{
#if TDA7419_IC
Aud_Inp = y00110001; //Auto zero on; Input gain = 6db; Source= 001 'SE1'
Aud_Loud_19 = y10000000; //Loudness soft step = off; High boost = on;
//Centre freq = flat; Attenuation = 0db;
Aud_MuteClock_19 = y00000111; //clock = fast mode; soft step time = 0.16ms
// softmute time = 0.96ms; I2c control; softmute off
Aud_Volume_19 = 0x00; // Volume not intial here but after calculation
Aud_SpeakerLF_19 = 0x00; // Left front speaker att 0 db
Aud_SpeakerLR_19 = 0x00; // Left rear speaker att 0 db
Aud_SpeakerRF_19 = 0x00; // Right front speaker att 0 db
Aud_SpeakerRR_19 = 0x00; // Right rear speaker att 0 db
Aud_Mixing_19 = 0x00; // Mixing at 0db
Aud_Subwoofer_19 = 0x00; // Subwoofer at 0 db
Aud_Treble_19 = y00000000; //external Vref 4V; treble freq 10KHz; treble at 0db
Aud_Middle_19 = y00000000; //Middle softstep on; Middle Q factor 0.5; middle at 0db
Aud_Bass_19 = y00000000; // Bass soft step on; Bass Q factor 1.0; bass at 0db
Aud_SecondInp_19 = y00110000; // rear speaker main source; input gain 6db; Source = 000
Aud_SubMidBass_19 = y01000000; // smoothing filter on; bass dc mode off bass freq 60Hz
// Middle freq 500Hz; Subwoofer cut freq flat
Aud_MixAndGain_19 = y11110111; // Gain effect for DSO filter 0db; subwoofer on
// Mixing off; Mixing to left front/right front off
Aud_Spectrum_19 = y00010111; // DC coupling without DSO; clock source internal; reset off
// Spectrum analyzer on Spectrum analyzer in gain; auto reset;
//spec Q factor 1.75
Aud_Testing_19 = y00000000; // test mode off
#endif
AudioVol=23;
NowVol=BackUpVol=57;
AudioSource = AUDIO_SOURCE_FM;
AudioWorkMode = AUDIO_VOL_MODE;
BassVol = 6;
TrebleVol = 6;
MiddleVol = 6;
BalanceVol=12;
FaderVol =12;
SubwooferVol = 0;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Aud_Main
Input :
Output :
Description
- Main routine of the audio processor process
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_Main()
{
Disp_AudioMsg();
Audio_Key();
Audio_Proc();
SoftChange();
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_PowerOn
Input :
Output :
Description
- Audio processor register all refresh when power on
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_PowerOn()
{
AudioDataConvertSend(AUDIO_ALL);
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_Key
Input :
Output :
Description
- Audio key process
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_Key()
{
if(SystemPwrMode == POWEROFF) return;
switch(KeyCode)
{
case Key_VOLUP:
AudioMenu(UP);
if(DisplayMode.Current != DispMode_AUDIO)
{
DisplaySaveMode = DisplayMode.Current;
DisplayMode.Next = DispMode_AUDIO;
}
AudioDispTimer = 50; //5sec display
F_AudioDispReq=1;
break;
case Key_VOLDN:
AudioMenu(DN);
if(DisplayMode.Current != DispMode_AUDIO)
{
DisplaySaveMode = DisplayMode.Current;
DisplayMode.Next = DispMode_AUDIO;
}
AudioDispTimer = 30; //5sec display
F_AudioDispReq=1;
break;
case Key_DISP:
//DisplayVersion();
if(DisplayMode.Current != DispMode_AUDIO)
{
DisplaySaveMode = DisplayMode.Current;
DisplayMode.Next = DispMode_AUDIO;
}
AudioWorkMode = AUDIO_VERSION_MODE;
AudioDispTimer = 30; //5sec display
F_AudioDispReq=1;
break;
case Key_AUDSEL:
switch(AudioWorkMode)
{
case AUDIO_VOL_MODE:
AudioWorkMode = AUDIO_BASS_MODE;
break;
case AUDIO_BASS_MODE:
AudioWorkMode = AUDIO_TREBLE_MODE;
break;
case AUDIO_TREBLE_MODE:
AudioWorkMode = AUDIO_SUBWOOFER_MODE;
break;
case AUDIO_SUBWOOFER_MODE:
AudioWorkMode = AUDIO_BALANCE_MODE;
break;
case AUDIO_BALANCE_MODE:
AudioWorkMode = AUDIO_FADER_MODE;
break;
case AUDIO_FADER_MODE:
AudioWorkMode = AUDIO_VOL_MODE;
break;
}
if(DisplayMode.Current != DispMode_AUDIO)
{
DisplaySaveMode = DisplayMode.Current;
DisplayMode.Next = DispMode_AUDIO;
}
AudioDispTimer = 30; //5sec display
F_AudioDispReq=1;
break;
case Key_MUTE:
if(F_Mute ==1)
{
AudioUnMute(SOFT_MUTE);
F_EXITAUDIOMODE = 1;
}
else
{
if(DisplayMode.Current != DispMode_AUDIO)
{
DisplaySaveMode = DisplayMode.Current;
DisplayMode.Next = DispMode_AUDIO;
}
AudioMute(SOFT_MUTE,T960US);
}
break;
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioMenu
Input : direction (up or down)
Output :
Description
- Audio Menu process (Volume, Bass, Treble, Subwoofer, Balance, Fader)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioMenu(unsigned char direction)
{
switch(AudioWorkMode)
{
case AUDIO_VOL_MODE:
AudioVol=MaxMinChangeProtect(AudioVol,direction,46,0,1);
AudioDataConvertSend(AUDIO_VOL);
break;
case AUDIO_BASS_MODE:
BassVol=MaxMinChangeProtect(BassVol,direction,12,0,1);
AudioDataConvertSend(AUDIO_BASS);
break;
case AUDIO_TREBLE_MODE:
TrebleVol = MaxMinChangeProtect(TrebleVol,direction,12,0,1);
AudioDataConvertSend(AUDIO_TREBLE);
break;
case AUDIO_MIDDLE_MODE:
MiddleVol = MaxMinChangeProtect(MiddleVol,direction,12,0,1);
AudioDataConvertSend(AUDIO_MIDDLE);
break;
case AUDIO_BALANCE_MODE:
BalanceVol = MaxMinChangeProtect(BalanceVol,direction,24,0,1);
AudioDataConvertSend(AUDIO_BALANCE);
break;
case AUDIO_FADER_MODE:
FaderVol = MaxMinChangeProtect(FaderVol, direction, 24,0,1);
AudioDataConvertSend(AUDIO_FADER);
break;
case AUDIO_SUBWOOFER_MODE:
SubwooferVol = MaxMinChangeProtect(SubwooferVol, direction, 13,0,1);
AudioDataConvertSend(AUDIO_SUBWOOFER);
break;
case AUDIO_LOUD_MODE:
LoudVol = MaxMinChangeProtect(LoudVol, direction, 3, 0, 1);
AudioDataConvertSend(AUDIO_LOUD);
break;
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Disp_AudioMsg
Input :
Output :
Description
- Audio Message display routine
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Disp_AudioMsg()
{
unsigned char temp;
if((AudioDispTimer == 1)||(F_EXITAUDIOMODE ==1))
{
AudioDispTimer=0;
AudioWorkMode = AUDIO_VOL_MODE;
DisplayMode.Request = DisplaySaveMode;
F_EXITAUDIOMODE =0;
}
if(F_Mute)
{
if(F_HALFSECOND)
{
DisplayClear(SECONDLINE);
FetchMessage(AudioMessage,8,0);
LCDDisplay(BYBYTES_REFRESH,SECONDLINE,0,15);
}
else
{
DisplayClear(SECONDLINE);
}
}
if(F_AudioDispReq==0) return;
F_AudioDispReq = 0;
if(DisplayMode.Current == DispMode_AUDIO)
{
DisplayClear(SECONDLINE);
switch(AudioWorkMode)
{
case AUDIO_VOL_MODE:
FetchMessage(AudioMessage,0,0);
DispBuff[26] = (AudioVol /10) + 48;
DispBuff[27] = (AudioVol%10) + 48;
break;
case AUDIO_BASS_MODE:
FetchMessage(AudioMessage,1,0);
if(BassVol > 6)
{
DispBuff[26] = '+';
DispBuff[27] = (BassVol-6) +48;
}
else
{
if(BassVol == 6)
{
DispBuff[26] = ' ';
DispBuff[27] = '0';
}
else
{
DispBuff[26] = '-';
DispBuff[27] = (6-BassVol) +48;
}
}
break;
case AUDIO_TREBLE_MODE:
FetchMessage(AudioMessage,2,0);
if(TrebleVol > 6)
{
DispBuff[26] = '+';
DispBuff[27] = (TrebleVol-6) +48;
}
else
{
if(TrebleVol == 6)
{
DispBuff[26] = ' ';
DispBuff[27] = '0';
}
else
{
DispBuff[26] = '-';
DispBuff[27] = (6-TrebleVol) +48;
}
}
break;
case AUDIO_MIDDLE_MODE:
FetchMessage(AudioMessage,3,0);
if(MiddleVol > 6)
{
DispBuff[26] = '+';
DispBuff[27] = (MiddleVol-6) +48;
}
else
{
if(MiddleVol == 6)
{
DispBuff[26] = ' ';
DispBuff[27] = '0';
}
else
{
DispBuff[26] = '-';
DispBuff[27] = (6-MiddleVol) +48;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -