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

📄 audio.c

📁 lc72130.收音机软件 #include "saa6588.c" #include "ba1924.c"
💻 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 + -