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

📄 aud_main.c

📁 TDA7540 收音机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************
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 + -