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

📄 ampvfd.c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 C
字号:
/**************************************************************************************/
/***********************                    BBK CONFIDENTIAL                   ************************/
/***********************                                                                    ************************/
/***********************         Description : Digital Audio Process          ************************/
/***********************                                                                    ************************/
/*********************** Company: BBK AV ELECTRONICS CORP.,LTD ************************/
/***********************                                                                    ************************/
/***********************              Programmer : Terry Lee                  ******** ****************/
/**************************************************************************************/

#define AMPVFD_PAR
#pragma NOAREGS
#include "general.h"

#ifdef BBK_RD2_THEATRE
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vVfdTempMessage(BYTE bMsgIdx, BYTE bTimeOut) large
{
	#if 1//def VFD_TEMP_TEXT
	vVfdShowTempMsg(bMsgIdx, bTimeOut);
	vVfdSymbol(VFD_SYM_COLON_NONE);
	vVfdSymbol(VFD_SYM_PLAYINFO_NONE);  
	//vVfdSymbol(VFD_SYM_TUNER_FMAM_OFF); 
	#endif  
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vVfdShowVOL(BYTE bChannel, BYTE  bVOL) large
{
	if (bChannel == CH_MODE_NM_VOL)  //main vol
	{
		if (bVOL < 0)
		{
			bVOL = 0;
		}
		if (bVOL > BBK_MAX_MAIN_VOL)
		{
			bVOL = BBK_MAX_MAIN_VOL ; 
		}	
	}
	else if(bChannel ==CH_MODE_BASS ||bChannel ==CH_MODE_TREBLE)
	{
		if (bVOL < 0)
		{ 
			bVOL = 0; 
		}
		if (bVOL >BBK_MAX_TONE_VOL_LEVEL)
		{
			bVOL = BBK_MAX_TONE_VOL_LEVEL; 
		}
	}
	else if(bChannel ==CH_MODE_BASSBOOST)
	{
		if (bVOL < 0)
		{ 
			bVOL = 0; 
		}
		if (bVOL >3)
		{
			bVOL = 3; 
		}
	}
	else
	{
		if (bVOL < 0)
		{ 
			bVOL = 0; 
		}
		if (bVOL >BBK_MAX_CH_VOL_LEVEL)
		{
			bVOL = BBK_MAX_CH_VOL_LEVEL; 
		}
	}

	switch(bChannel)
	{
		case  CH_MODE_FL:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_FL,0);
	#endif
		break;
		
		case  CH_MODE_CT:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_CENT,0);
	#endif
		break;
		
		case  CH_MODE_FR:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_FR,0);
	#endif
		break;
		
		case  CH_MODE_SR:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_RS,0);
	#endif
		break;
		
		case  CH_MODE_SL:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_LS,0);
	#endif
		break;
		
		case  CH_MODE_SUBW:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_SUB,0);
	#endif
		break;
		
		case  CH_MODE_TREBLE:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_TREBLE,0);
	#endif
		break;
		
		case  CH_MODE_BASS:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_BASS,0);
	#endif
		break;
		
		case CH_MODE_BASSBOOST:
	#if 0//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_BASSBOOST,0);
	#endif
		break;
		
		default:
	#if 1//ndef  TEMP_CLOSE0426
			vVfdTempMessage(VFD_MESSAGE_VOLUM,0);
	#endif
		break;
		}		

	if (bChannel == CH_MODE_NM_VOL)
	{
		bVOL = bHEXToBCD( bVOL); 
		vVfdSegDisplay(VFD_SEG_SEC_HIGH,(bVOL & 0xF0) >> 4,FALSE);	
		vVfdSegDisplay(VFD_SEG_SEC_LOW ,(bVOL & 0x0F),FALSE);	
	}
	else if(bChannel ==CH_MODE_BASS ||bChannel ==CH_MODE_TREBLE)
	{
		if (bVOL > BBK_MAX_TONE_VOL_LEVEL/2)
		{
			#ifdef BBK_RD2_RDS
			vVfdSegDisplay(VFD_SEG_MIN_HIGH,SEG_CHAR_PLUSE,FALSE);
			#endif
			bVOL -=  BBK_MAX_TONE_VOL_LEVEL/2;
		}	
		else if (bVOL < BBK_MAX_TONE_VOL_LEVEL/2)
		{
			vVfdSegDisplay(VFD_SEG_MIN_LOW,SEG_CHAR__,FALSE);
			bVOL =  BBK_MAX_TONE_VOL_LEVEL/2 - bVOL;      	
		}
		else 
		{
			vVfdSegDisplay(VFD_SEG_MIN_LOW,SEG_CLEAN,FALSE); 
			bVOL = 0;
		}	
		vVfdSegDisplay(VFD_SEG_SEC_HIGH,bVOL/10,FALSE);
		vVfdSegDisplay(VFD_SEG_SEC_LOW,bVOL%10,FALSE);                 
	}
	else if (bChannel ==CH_MODE_BASSBOOST)
	{
		vVfdSegDisplay(VFD_SEG_SEC_LOW,bVOL,FALSE); 
	}
	else
	{
		if (bVOL > BBK_MAX_CH_VOL_LEVEL/2)
		{
			#ifdef BBK_RD2_RDS
			vVfdSegDisplay(VFD_SEG_MIN_HIGH,SEG_CHAR_PLUSE,FALSE);
			#endif
			bVOL -=  BBK_MAX_CH_VOL_LEVEL/2;
		}	
		else if (bVOL < BBK_MAX_CH_VOL_LEVEL/2)
		{
			vVfdSegDisplay(VFD_SEG_MIN_LOW,SEG_CHAR__,FALSE);
			bVOL =  BBK_MAX_CH_VOL_LEVEL/2 - bVOL;      	
		}
		else 
		{
			vVfdSegDisplay(VFD_SEG_MIN_LOW,SEG_CLEAN,FALSE); 
			bVOL = 0;
		}	
		vVfdSegDisplay(VFD_SEG_SEC_HIGH,bVOL/10,FALSE);
		vVfdSegDisplay(VFD_SEG_SEC_LOW,bVOL%10,FALSE);             
	}  

	if (fgIsInTuner())
	{
	#if 0//ndef  TEMP_CLOSE0426
		vVfdSymbol(VFD_SYM_TUNER);
		vVfdSymbol(VFD_SYM_LOCK_ON);
		  vVfdSymbol(VFD_SYM_COLON_NONE);
		  vVfdSymbol(VFD_SYM_PLAYINFO_NONE);  
		vVfdSymbol(VFD_SYM_TUNER_FMAM_OFF); 

	#endif	
	}   

	if (_bPWRMode < 4) _bVfdTimer = 110;
}

#ifdef BBK_RD2_TUNER
#ifdef BBK_RD2_RDS
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
#define VFD_CHAR_NUMBER 7


code BYTE bVfdCharList[]={
SEG_CHAR_A,
SEG_CHAR_B,
SEG_CHAR_C,
SEG_CHAR_d, //D
SEG_CHAR_E,
SEG_CHAR_F,
SEG_CHAR_G,
SEG_CHAR_H,
SEG_CHAR_I,
SEG_CHAR_J,
SEG_CHAR_K,
SEG_CHAR_L,
SEG_CHAR_M,
SEG_CHAR_N,
SEG_CHAR_O,
SEG_CHAR_P,
SEG_CHAR_q,
SEG_CHAR_R,
SEG_CHAR_S,
SEG_CHAR_T,
SEG_CHAR_U,
SEG_CHAR_V,
SEG_CHAR_W,
SEG_CHAR_X,
SEG_CHAR_Y,
SEG_CHAR_Z
};

code BYTE pbVfdListPosition[]={
VFD_SEG_SEC_LOW,
VFD_SEG_SEC_HIGH,
VFD_SEG_MIN_LOW,
VFD_SEG_MIN_HIGH,
VFD_SEG_HR,
VFD_SEG_CHAP_LOW,
VFD_SEG_CHAP_HIGH
};

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void VfdTunerSetChar(BYTE bSeg, BYTE bCode) large
{
  	BYTE *pbChar;
	
	vVfdSegDisplay(bSeg, bCode, FALSE); 
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
BYTE bGetCharIndex(BYTE bValue)large
{
	if((bValue>=0x30)&&(bValue<=0x39))//it the digital number
	{
		return(bValue-0x30);
	}
	else if((bValue>=0x41)&&(bValue<=0x5a))//"A"--"Z"
	{
		return (bVfdCharList[bValue-0x41]);
	}
	else if ((bValue>=0x61)&&(bValue<=0x7a))//"a"--"z"
	{
		return (bVfdCharList[bValue-0x61]);
	}
	else
	{
		return(SEG_CLEAN);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void VfdShowRDSInfor(BYTE bStep, BYTE *pbRdsData)large
{
	BYTE i = 0;
	BYTE bTemp;	

	/*clear the vfd*/
	vVfdClearAll();
	vVfdSymbol(VFD_SYM_COLON_NONE);
	vVfdSymbol(VFD_SYM_TUNER_FMAM_OFF);
	vVfdSymbol(VFD_SYM_MEM_OFF);
	vVfdSymbol(VFD_SYM_A_CODE_STEROE_OFF);
	vVfdSymbol(VFD_SYM_A_CODE_RDS);

	bTemp = VFD_CHAR_NUMBER * (bStep / VFD_CHAR_NUMBER);

	for(i = 0; i < ((bStep%VFD_CHAR_NUMBER)+1); i++)
	{
		if((bTemp+i)>=64)
		{
			VfdTunerSetChar(pbVfdListPosition[(bStep%VFD_CHAR_NUMBER)-i],10);			
		}
		else
		{
			#ifdef RDS_USE_SM
			VfdTunerSetChar(pbVfdListPosition[(bStep%VFD_CHAR_NUMBER)-i],bGetCharIndex(bSharedInfo(SI_RDS_DISPLAYDATA_ST_ADDR+bTemp+i)));
			#else
			VfdTunerSetChar(pbVfdListPosition[(bStep%VFD_CHAR_NUMBER)-i],bGetCharIndex(pbRdsData[bTemp+i]));
			#endif
		}
	}

	if((bStep/VFD_CHAR_NUMBER) != 0)
	{
		bTemp = (bStep/VFD_CHAR_NUMBER-1)*VFD_CHAR_NUMBER+((bStep%VFD_CHAR_NUMBER)+1);
		for(i=0; i<(VFD_CHAR_NUMBER-((bStep%VFD_CHAR_NUMBER)+1)); i++)
		{     
			if((bTemp+i)>=64)
			{
				VfdTunerSetChar(pbVfdListPosition[VFD_CHAR_NUMBER-1-i],10);
			}
			else
			{
				#ifdef RDS_USE_SM
				VfdTunerSetChar(pbVfdListPosition[VFD_CHAR_NUMBER-1-i],bGetCharIndex(bSharedInfo(SI_RDS_DISPLAYDATA_ST_ADDR+bTemp+i)));
				#else
				VfdTunerSetChar(pbVfdListPosition[VFD_CHAR_NUMBER-1-i],bGetCharIndex(pbRdsData[bTemp+i]));
				#endif
			}
		}
	}
}

#endif

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void  vVfdShowFreq(WORD Freq, BYTE Band) large
{   
	if(TUNER_BAND_FM == Band)
	{
	#ifdef  TEMP_CLOSE0426
		vVfdSymbol(VFD_SYM_TUNER_FM_ON);
	#endif
	}
	else
	{
	#ifdef  TEMP_CLOSE0426
		vVfdSymbol(VFD_SYM_TUNER_AM_ON);
	#endif
	}     

	vVfdSegDisplay(VFD_SEG_CHAP_HIGH, SEG_CLEAN,FALSE);
	vVfdSegDisplay(VFD_SEG_CHAP_LOW, SEG_CLEAN,FALSE);

	if((Freq / 10000) == 0)
	{
		vVfdSegDisplay(VFD_SEG_CHAP_LOW, SEG_CLEAN,FALSE);//if msb is 0, no display
	}
	else
	{
		vVfdSegDisplay(VFD_SEG_CHAP_LOW, (BYTE)(Freq/10000),FALSE);
	} 

	Freq = Freq % 10000;
	if((Freq / 1000) == 0)
	{
		if(TUNER_BAND_FM == Band)
		{
			vVfdSegDisplay(VFD_SEG_MIN_HIGH, 0,FALSE);
		}
		else
		{
			vVfdSegDisplay(VFD_SEG_MIN_HIGH, SEG_CLEAN,FALSE);
		}
	}
	else
	{
		vVfdSegDisplay(VFD_SEG_MIN_HIGH, (BYTE)(Freq/1000),FALSE);
	}  

	Freq = Freq % 1000;
	vVfdSegDisplay(VFD_SEG_MIN_LOW, (BYTE)(Freq/100),FALSE);
	Freq = Freq % 100;
	vVfdSegDisplay(VFD_SEG_SEC_HIGH, (BYTE)(Freq/10),FALSE);
	Freq = Freq % 10;
	vVfdSegDisplay(VFD_SEG_SEC_LOW, (BYTE)Freq,FALSE);
	#ifdef  TEMP_CLOSE0426
	vVfdSymbol(VFD_SYM_TUNER);
	vVfdSymbol(VFD_SYM_LOCK_ON);
	#endif
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void  vVfdShowChannel(BYTE bChannel, BYTE Band) large
{   
	if(TUNER_BAND_FM == Band)
	{
	#ifdef  TEMP_CLOSE0426
	vVfdSymbol(VFD_SYM_TUNER_FMAM_OFF);
	#endif
	}
	else
	{
	#ifdef  TEMP_CLOSE0426
	vVfdSymbol(VFD_SYM_TUNER_AM_ON);
	#endif
	}

	vVfdSegDisplay(VFD_SEG_CHAP_HIGH, SEG_CLEAN,FALSE);
	vVfdSegDisplay(VFD_SEG_CHAP_LOW, SEG_CLEAN,FALSE);
	vVfdSegDisplay(VFD_SEG_HR, SEG_CLEAN,FALSE);
	vVfdSegDisplay(VFD_SEG_MIN_HIGH, (bChannel / 10),FALSE);
	vVfdSegDisplay(VFD_SEG_MIN_LOW, (bChannel % 10),FALSE);
	vVfdSegDisplay(VFD_SEG_SEC_HIGH, SEG_CLEAN,FALSE);
	vVfdSegDisplay(VFD_SEG_SEC_LOW, SEG_CLEAN,FALSE);
	#ifdef  TEMP_CLOSE0426
	vVfdSymbol(VFD_SYM_TUNER);
	vVfdSymbol(VFD_SYM_LOCK_ON);
	#endif
}


/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
#ifdef TIME_SLEEP_FUCTION
void vAmpVfdShowSleepTime() large 
{
	BYTE bByte = 0;
	
	bByte = _wSleepCounter/SLEEP_TIME_ADJUST_LEVEL;
	switch (_bSetSleepState) 
	{
		case SLEEP_ON:
		case SLEEP_15M:
		case SLEEP_30M:	
		case SLEEP_45M:	
		case SLEEP_60M:
		case SLEEP_75M:
		case SLEEP_90M:
		case SLEEP_ON_DISPLAY:
			vVfdTempMessage(VFD_MESSAGE_SLEEP,0);
			if(bByte >90) bByte = 90;
			if(bByte < 0) bByte = 0;
			vVfdSegDisplay(VFD_SEG_SEC_HIGH,bByte/10 ,FALSE);
			bByte = bByte%10;
			vVfdSegDisplay(VFD_SEG_SEC_LOW,bByte ,FALSE); 
		break;

		case SLEEP_OFF:
			vVfdTempMessage(VFD_MESSAGE_OFF,0);
		break;
		}
	if (_bPWRMode < 4) _bVfdTimer = 110;
}
#endif
#ifndef  WARING16DELETE
void vReceiverRoutine(void) large
{ 
  while(TRUE)
  {
	  switch(_bSysState)
	  {
 #ifndef TRUE_PDN_TP6317
	  	case PD_STATE:
	  	{	
	#ifdef SCART_NEW_SELECTION
			  vTvScartAspect(1);//switch to TV mode
	#endif
			
	#if defined(DVR938)||defined(DK1110)
        if(_fgLedOnOff)	
        {
				  vVfdClearAll();
        }
				else
  #endif        			
  	    {
	        //vVfdMessage(VFD_MESSAGE_STANDBY);  
  	    }

				while (_bIRKey != IR_POWER)
	#if defined(DVR938)
				{
				  if(_fgLedOnOff)
					{
					  if(_wPauseTimer<50) 
					  {
						  vVfdLed(1, TRUE);
					  }
					  else if(_wPauseTimer<150) 
					  {
						  vVfdLed(3, FALSE);
					  }
					  else 
					  {
						  _wPauseTimer=0;
					  }
					}
			  	else 
			  	{
					  vVfdLed(3, FALSE);
			  	}
				}
	#else
				{
		      ;			//wait power key
				}
	#endif
	
      	vVfdClearAll();       //clear vfd first

        _bSysState = DVD_STATE;  //set sys state   
				_bIRKey = IR_NONE;           				
        vUIStop();
        return;      						
	  }
#else

	  case PD_STATE:
	  {	
  		LO_TAS5508_MUTE;
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
			vEERomDelay();
  		vPowerOffProcess();
  		break;
	  }
#endif

	  case DVD_STATE:
#ifdef DVD_DECODE
	  case SPDIF1_STATE:
	  case SPDIF2_STATE:	
#endif
	  {
			vUIStop();  	
			//HI_DAPReset;			//dvd 时打开CS5340
	  		return;	
	  }

	  case TUNER_STATE:
	  case AUXIN_STATE:
		default:
			return;
	  }	  		
  }
}
#endif
#endif

#endif

⌨️ 快捷键说明

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