📄 audio.c
字号:
/*\\file: audio.c
Date. 2005.12.14 Ipman Robbin
Desp. PT2313 audio process
Last update: 2006.08.09
Common:
*/
#define __DECL_AUDIO__
#include "system.h"
BYTE currentAudioChannel; //记录当前使用的音频通道
__eeprom__ char strEqOff[] = "NORMAL";
__eeprom__ char strRock[] = "ROCK";
__eeprom__ char strClassic[] = "CLASSIC";
__eeprom__ char strPop[] = "POP";
__eeprom__ char strJAZZ[] = "JAZZ";
char * eqName[] = {
strEqOff,
strRock,
strJAZZ,
strClassic,
strPop,
};
void init_audio(void)
{
BYTE i;
for(i=SEL_BAS;i<=SEL_FAD;i++)
eqParam[i][0] = EQ_MID;
init_i2csw();
delay_ms(50);
}
void audio_sel_channel(char channel)
{
currentAudioChannel = channel;
if(audioParam&LOUD)
audio_set_channel(channel,LOUDNESS,0);
else
audio_set_channel(channel,UN_LOUDNESS,0);
audio_set_volume(eqParam[SEL_VOL][0]);
audio_init_eq();
}
void audio_set_eq(BYTE eq)
{
if(eq)
{
#if defined(LCD_393)
eqParam[SEL_BAS][0] = pgm_read_byte(eqTable+(eq-1)*3);
eqParam[SEL_TRE][0] = pgm_read_byte(eqTable+(eq-1)*3+1);
#else //392 EQ 通过字符串显示
eqParam[SEL_BAS][0] = pgm_read_byte(eqTable+(eq-1)*2);
eqParam[SEL_TRE][0] = pgm_read_byte(eqTable+(eq-1)*2+1);
#endif
}else{
eqParam[SEL_BAS][0] = EQ_MID;
eqParam[SEL_TRE][0] = EQ_MID;
}
audio_init_eq();
}
/************************************setMute*********************************************/
//静音函数,音量衰减==31为静音
void audio_set_mute(char value)
{
//BYTE i;
if (value)
{
cbi(PORT_MUTE,MUTE);//静音
//audio_set_eq_mute();
//i=eqParam[SEL_VOL][0];
//while(i--)
{
//audio_set_volume(i);
//_delay_ms(4);
}
audio_set_volume(0);
audio_set_eq_mute();
//cbi(PORT_MUTE,MUTE);//静音
}else{
sbi(PORT_MUTE,MUTE);
audio_set_volume(eqParam[SEL_VOL][0]);
audio_init_eq();
audioParam &= ~MUTE_ON;
}
}
void disp_eq_icon(BYTE eq)
{
#if defined(DISP_EQ_LOGO)
BYTE i;
for(i=1;i<=EQ_POP;i++)
disp_set_bit(dispBuff,pgm_read_byte(eqTable+(i-1)*3+2),OFF);
if(eq)
{
disp_set_bit(dispBuff,pgm_read_byte(eqTable+(eq-1)*3+2),ON);
#ifdef LCD_BIT_EQ
// disp_set_bit(dispBuff,LCD_BIT_EQ,ON);
#endif
}else{
#ifdef LCD_BIT_EQ
// disp_set_bit(dispBuff,LCD_BIT_EQ,OFF);
#endif
}
#endif
}
void disp_audio_eq(BYTE eq)
{
disp_eq_icon(eq);
memset(tmpDispBuff,0,sizeof(tmpDispBuff));
//strcpy_E(dispStrBuff,*(eqName+eq));
//disp_string(tmpDispBuff,dispStrBuff,1,7);
disp_string_E(tmpDispBuff,*(eqName+eq),1,7);
dvdFlagTimeout=FLAG_SHOW_TIMEOUT;
}
void audio_next_eq(void)
{
currentEq++;
if(currentEq>EQ_POP)
currentEq = EQ_NULL;
audio_set_eq(currentEq);
disp_audio_eq(currentEq);
}
void audio_prev_eq(void)
{
currentEq--;
if(currentEq==0xFF)
currentEq = EQ_POP;
audio_set_eq(currentEq);
disp_audio_eq(currentEq);
}
void audio_change(BYTE flag,BYTE value)
{
//BYTE unit=1;
if(flag==SEL_VOL)
{
//if(keyKeepLoops>20)
// unit=3;
if(value) //如果送入非0则为++
{
eqParam[flag][0]+=1;
if(eqParam[flag][0]>VOL_MAX)
eqParam[flag][0] = VOL_MAX;
}else{ //否则为--
eqParam[flag][0]-=1;
if(eqParam[flag][0]>VOL_MAX)
eqParam[flag][0]=0;
}
}else{
if(value) //如果送入非0则为++
eqParam[flag][0]++;
else //否则为--
eqParam[flag][0]--;
}
if(eqParam[flag][0]==0xFF) //if == -1
eqParam[flag][0] = 0; //=0
if(eqParam[flag][0]>eqParam[flag][1]) // if >MAX
eqParam[flag][0] = eqParam[flag][1]; //=MAX
if((flag==SEL_VOL))
audio_set_volume(eqParam[SEL_VOL][0]);
else
audio_init_eq();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -