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

📄 aud_main.c

📁 TDA7540 收音机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
				break;
			case AUDIO_SUBWOOFER_MODE:
				FetchMessage(AudioMessage,5,0);
				DispBuff[26] = (SubwooferVol /10) + 48;
				DispBuff[27] = (SubwooferVol%10) + 48;
				break;
			case AUDIO_BALANCE_MODE:
				FetchMessage(AudioMessage,6,0);
				if(BalanceVol>12)
				{
				   DispBuff[25] = 'L';
                               DispBuff[26] = ((BalanceVol -12) /10) +48;
				   DispBuff[27] =((BalanceVol -12) %10) +48;
        			}
				else
				{
					if(BalanceVol == 12)
					{
						DispBuff[25] = ' ';
						DispBuff[26] = ' ';
						DispBuff[27] = '0';
					}
					else
					{
						DispBuff[25] = 'R';
                                          DispBuff[26] = ((12-BalanceVol) /10) +48;
				              DispBuff[27] =((12-BalanceVol) %10) +48;
        				}
				}
				break;
			case AUDIO_FADER_MODE:
				FetchMessage(AudioMessage,7,0);
				if(FaderVol>12)
				{
				   DispBuff[25] = 'L';
                               DispBuff[26] = ((FaderVol -12) /10) +48;
				   DispBuff[27] =((FaderVol -12) %10) +48;
        			}
				else
				{
					if(FaderVol == 12)
					{
						DispBuff[25] = ' ';
						DispBuff[26] = ' ';
						DispBuff[27] = '0';
					}
					else
					{
						DispBuff[25] = 'R';
                                          DispBuff[26] = ((12-FaderVol) /10) +48;
				              DispBuff[27] =((12-FaderVol) %10) +48;
        				}
				}
				break;	
			case AUDIO_VERSION_MODE:
				DisplayVersion();
				break;
		}
		
		LCDDisplay(BYBYTES_REFRESH,SECONDLINE,0,15);
		
	}

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_Proc
Input   :  
Output  : 
Description 
        - Special audio Procedure 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void Audio_Proc()
{
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : SoftChange
Input   :  
Output  : 
Description 
        - Softstep function 1dB-step change for Volume, Bass, Treble 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void SoftChange()
{

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioMute
Input   :  Type of mute::hard/soft; Soft mute time
Output  : 
Description 
        - Softstep function 1dB-step change for Volume, Bass, Treble 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioMute(unsigned char type, unsigned char time)
{
    switch(type)
    {
    	case HARD_MUTE:
		break;
	case SOFT_MUTE:
		Aud_MuteClock_19 &= 0xF2;
		Aud_MuteClock_19 |= time;
		WriteAudioRegister(AUDIO_AREA_MUTE);
		break;
    }
    F_Mute = 1;

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioUnMute
Input   :  Type of mute::hard/soft; 
Output  : 
Description 
        - Softstep function 1dB-step change for Volume, Bass, Treble 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioUnMute(unsigned char type)
{
    switch(type)
    {
    	case HARD_MUTE:
		break;
	case SOFT_MUTE:
		Aud_MuteClock_19 |= 0x01;
		WriteAudioRegister(AUDIO_AREA_MUTE);
		break;
    }	 
    F_Mute = 0;
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioDataConvertSend
Input   :  adjust items 
Output  : 
Description 
        - Transfer the value to the real register settings
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioDataConvertSend(unsigned char type)
{
	switch(type)
	{
		case AUDIO_VOL:
			 NowVol = VolChangeTable[AudioVol];
			 BackUpVol = NowVol;                                  // for mode select back up
			 Aud_Volume_19 &= 0x80;
			 Aud_Volume_19 |=VolTable[NowVol];
			 WriteAudioRegister(AUDIO_AREA_VOL);
			 break;
		case AUDIO_BASS:
			 Aud_Bass_19 &= 0xE0;
			 Aud_Bass_19 |= BasMidTreTable[BassVol];
			 WriteAudioRegister(AUDIO_AREA_BASS);
			 break;
		case AUDIO_TREBLE:
			 Aud_Treble_19 &= 0xE0;
			 Aud_Treble_19 |= BasMidTreTable[TrebleVol];
			 WriteAudioRegister(AUDIO_AREA_TRE);
			 break;
		case AUDIO_MIDDLE:
             Aud_Middle_19 &= 0xE0;
			 Aud_Middle_19 |= BasMidTreTable[MiddleVol];
			 WriteAudioRegister(AUDIO_AREA_MID);
			 break;		 
		case AUDIO_BALANCE:
			 CalcBalance();
			 WriteAudioRegister(AUDIO_AREA_SPEAKER);
			 break;
		case AUDIO_FADER:
			 CalcFader();
			 WriteAudioRegister(AUDIO_AREA_SPEAKER);
			 break;
		case AUDIO_SUBWOOFER:
			 Aud_Subwoofer_19 &= 0x80;
			 Aud_Subwoofer_19 |= SubwTable[SubwooferVol];
			 WriteAudioRegister(AUDIO_AREA_SUBW);
			 break;
		case AUDIO_LOUD:	 
			 break;
		case AUDIO_SOURCE:
			 Aud_Inp &= 0xF8;
			 Aud_Inp |= SourceTable[AudioSource];
			 WriteAudioRegister(AUDIO_AREA_FSOURCE);
			 break;
		case AUDIO_ALL:
			 NowVol = VolChangeTable[AudioVol];
			 BackUpVol = NowVol;
    		 Aud_Volume_19 = (Aud_Volume_19&0x80)|VolTable[NowVol];
			 Aud_Inp = (Aud_Inp&0xF8)|SourceTable[AudioSource];
			 Aud_Bass_19 = (Aud_Bass_19&0xE0)|BasMidTreTable[BassVol];
			 Aud_Treble_19 = (Aud_Treble_19&0xE0)|BasMidTreTable[TrebleVol];
             Aud_Middle_19 = (Aud_Middle_19&0xE0)| BasMidTreTable[MiddleVol];
			 Aud_Subwoofer_19 = (Aud_Subwoofer_19&0x80)|SubwTable[SubwooferVol];
			 CalcBalance();
			 CalcFader();
			 WriteAudioRegister(AUDIO_AREA_ALL);
			 break;
	}
}


/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : CalcBalance
Input   :  
Output  : 
Description 
        - calculate the balance level
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void CalcBalance(void)
{
      unsigned char lf, lr, rf, rr;
      if(BalanceVol > 12)
      {
          rr = BalanceVol - 12;
	   rf = BalanceVol - 12;
	   lr = 0;
	   lf = 0;
      }
      else
      {
          lr = 12- BalanceVol;
	   lf = 12- BalanceVol;
	   rr = 0;
	   rf = 0;
      }
      
      Aud_SpeakerLF_19 = BalFadTable[lf];
      Aud_SpeakerLR_19 = BalFadTable[lr];
      Aud_SpeakerRF_19 = BalFadTable[rf];
      Aud_SpeakerRR_19 = BalFadTable[rr];
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : CalcFader
Input   :  
Output  : 
Description 
        - calculate the fader
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void CalcFader(void)
{
      unsigned char lf, lr, rf, rr;
      if(FaderVol> 12)
      {
          lr = FaderVol - 12;
	   rr = FaderVol - 12;
	   lf = 0;
	   rf = 0;
      }
      else
      {
          lf = 12- FaderVol;
	   rf = 12- FaderVol;
	   lr = 0;
	   rr = 0;
      }
      
      Aud_SpeakerLF_19 = BalFadTable[lf];
      Aud_SpeakerLR_19 = BalFadTable[lr];
      Aud_SpeakerRF_19 = BalFadTable[rf];
      Aud_SpeakerRR_19 = BalFadTable[rr];

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : WriteAudioRegister
Input   :  
Output  : 
Description 
        - write the audio register by IIC bus
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void WriteAudioRegister(unsigned char start, unsigned char end)
{
	unsigned char i;
  	I2Cm_Start();
       I2Cm_TxData(TDA7419_ADR);
  	if(start==end)
		I2Cm_TxData(start);
	else
		I2Cm_TxData(start+AUDIO_AUTO_INC);

	for (i=start;i<=end; i++)
		I2Cm_TxData(I2c_AudBuff[i]);
	I2Cm_Stop();
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_10msTimer
Input   :  
Output  : 
Description 
        - audio delay time by IIC bus (10ms)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_10msTimer()
{
     if(AudioMuteTimer!=0) AudioMuteTimer--;
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_100msTimer
Input   :  
Output  : 
Description 
        - audio delay time by IIC bus (100ms)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_100msTimer()
{
    if(AudioDispTimer!=0)  AudioDispTimer--;
    if(HalfSecondTimer == 0)
    {
    	HalfSecondTimer = 5;
	if(F_HALFSECOND ==1) F_HALFSECOND =0;
	else F_HALFSECOND = 1;
    }
    else HalfSecondTimer --;
    
}

/*********************************************
	Function:		MaxMinChangeProtect
	Description:	Change the value of variable
	Write/Modify:	Perry.Liang
	Time:		2004-8-9- 16:32:10
*********************************************/
unsigned char MaxMinChangeProtect(unsigned char Num,signed char ChangeVal,unsigned char MaxVal,unsigned char MinVal,unsigned char ProtectState)
{
	signed char TestVal;  
	TestVal=Num+ChangeVal;
	if(TestVal>=(signed char)MinVal && TestVal<=(signed char)MaxVal)
		Num+=ChangeVal;
	else if (TestVal<(signed char)MinVal )
	{
		if(ProtectState==0)
			Num=MaxVal;
		else
			Num=MinVal;
	}
	else
	{
		if(ProtectState==0)
			Num=MinVal;
		else
			Num=MaxVal;
	}

	return(Num);
		
}


/*** (c) 2005  STMicroelectronics ****************** END OF FILE ***/

⌨️ 快捷键说明

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