📄 ampvfd.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 + -