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

📄 osdtv501.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 2 页
字号:
         case VK_UP:        MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
//FENIXEND
     }
}
//---------------------------------------------------------------------------
void MSkipMenu()
{
     ucOsdState = _M_SKIP;
     CLR_SLIDER();
}
//---------------------------------------------------------------------------
void MSkipLR(unsigned char LR)
{
    OSDLine(15,10,15,0x00,BYTE_DISPLAY);
    LR = CLoadChannelSkip(stVDCColor.CurrentChannel);
    

    LR = 1 - LR;
    
    // Save current channel skip state
    CSaveChannelSkip(LR, stVDCColor.CurrentChannel);

    CDrawSkip();
}
//---------------------------------------------------------------------------
void CDrawSkip(void)
{
     Gotoxy(5,15,BYTE_DISPLAY);
     OutputChar(0x3b);
     Gotoxy(27,15,BYTE_DISPLAY);
     OutputChar(0x3c);
     CenterTextout((BYTE code *)sOnOff[CLoadChannelSkip(stVDCColor.CurrentChannel)][GET_LANGUAGE],16,15);
}
//---------------------------------------------------------------------------




void MAFCProc()
{
	 CDrawAfc();
     switch(ucKeyMessage)
     {
         case VK_MENU:        MAFCMenu();       break;
         case VK_LEFT:        MAFCLR(1);        break;
         case VK_RIGHT:       MAFCLR(0);        break;
//FENIXADD
         case VK_UP:        MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
//FENIXEND
     }
}
//---------------------------------------------------------------------------
void MAFCMenu()		//gg
{
     ucOsdState = _M_AFC;
     CLR_SLIDER();
}
//---------------------------------------------------------------------------
void MAFCLR(unsigned char LR)
{
    OSDLine(15,10,15,0x00,BYTE_DISPLAY);
    LR = CLoadChannelAFC(stVDCColor.CurrentChannel);
    

    LR = 1 - LR;
    
    CSaveChannelAFC(LR, stVDCColor.CurrentChannel);

    CDrawAfc();
}
//---------------------------------------------------------------------------
void CDrawAfc(void)
{
     Gotoxy(5,15,BYTE_DISPLAY);
     OutputChar(0x3b);
     Gotoxy(27,15,BYTE_DISPLAY);
     OutputChar(0x3c);
     CenterTextout((BYTE code *)sOnOff[CLoadChannelAFC(stVDCColor.CurrentChannel)][GET_LANGUAGE],16,15);

}
//---------------------------------------------------------------------------
void MFineTuneProc()
{

	 SLIDER(_FINETUNE_GUAGE);		//FENIX ADD FINE TUNE

     switch(ucKeyMessage)
     {
         case VK_MENU:        break;//MFineTuneMenu();       break;
         case VK_LEFT:        MFineTuneLR(1);        break;
         case VK_RIGHT:       MFineTuneLR(0);        break;
//FENIXADD
         case VK_UP:       	 MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
//FENIXEND
     }
}
//---------------------------------------------------------------------------
void MFineTuneLR(unsigned char LR)
{
    AdjustFineTune(LR);
}
//---------------------------------------------------------------------------
void AdjustFineTune(unsigned char LR)
{
	 CTimerDelayXms(80);
	 CTimerDelayXms(80);
	 LR = 1 - LR;
	 if((_FINE_TUNE_RANGE_MAX / _TUNER_FREQ_STEP) > _ABS(FineTuneBaseFreq,CLoadChannelFreq(stVDCColor.CurrentChannel)))	
     CTuningCurrentChannel((bit)LR,stVDCColor.CurrentChannel);

//WHEN FineTuneBaseFreq == CLoadChannelFreq(stVDCColor.CurrentChannel)
	 if((_FINE_TUNE_RANGE_MAX / _TUNER_FREQ_STEP) == _ABS(FineTuneBaseFreq,CLoadChannelFreq(stVDCColor.CurrentChannel)))
	 {
		 if(FineTuneBaseFreq > CLoadChannelFreq(stVDCColor.CurrentChannel))
		 {
			if(LR)
			{
				CTuningCurrentChannel((bit)LR,stVDCColor.CurrentChannel);
			}
			else
			{
				LR = LR;	//DO NOTHING
			}
		 }
		 else
		 {
			if(LR)
			{
				LR = LR;	//DO NOTHING
			}
			else
			{
				CTuningCurrentChannel((bit)LR,stVDCColor.CurrentChannel);
			}
		 }
			
	 }

}
//---------------------------------------------------------------------------
void MTVSystemProc()
{
	 CDrawSystem(ucTVType);
     switch(ucKeyMessage)
     {
         case VK_MENU:        break;//MTVSystemMenu();       break;
         case VK_LEFT:        MTVSystemLR(1);        break;
         case VK_RIGHT:       MTVSystemLR(0);        break;
         case VK_UP:         MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
     }
}
//---------------------------------------------------------------------------
bit bSearchedTVType(BYTE ucTvType)
{
    switch(ucTvType) 
    {
    case _TV_NTSC_M    :    // 60Hz Sound 4.5M  NTSC M
        #if(_TV_NTSC_M_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_NTSC_4_BG :    // 60Hz Sound 5.5M  NTSC 4/BG 
        #if(_TV_NTSC_4_BG_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_NTSC_4_DK :    // 60Hz Sound 6.5M  NTSC 4/DK 
        #if(_TV_NTSC_4_DK_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_NTSC_4_I  :    // 60Hz Sound 6.0M  NTSC 4/I
        #if(_TV_NTSC_4_I_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_PAL_M     :    // 60Hz Sound 4.5M  PAL M  
        #if(_TV_PAL_M_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_PAL_BG    :    // 50Hz Sound 5.5M  PAL B/G
        #if(_TV_PAL_BG_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_PAL_I     :    // 50Hz Sound 6.0M  PAL I
        #if(_TV_PAL_I_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_PAL_DK    :    // 50Hz Sound 6.5M  PAL D/K
        #if(_TV_PAL_DK_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_PAL_N     :    // 50Hz Sound 4.5M  PAL N 
        #if(_TV_PAL_N_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_SECAM_BG  :    // 50Hz Sound 5.5M  SECAM B/G
        #if(_TV_SECAM_BG_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_SECAM_DK  :    // 50Hz Sound 6.5M  SECAM D/K
        #if(_TV_SECAM_DK_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_SECAM_L   :    // 50Hz Sound 6.5M  SECAM L  
        #if(_TV_SECAM_L_SUPPORT)
        return 1;
        #endif
        break;

    case _TV_SECAM_LL  :    // 50Hz Sound 6.5M  Secam L' 
        #if(_TV_SECAM_LL_SUPPORT)
        return 1;
        #endif
        break;
    } // end switch 

    return 0;
}
//---------------------------------------------------------------------------
BYTE MatchUCSoundType(BYTE ucTVType)
{
	BYTE ucSoundType;

	switch(ucTVType)
    {
    case _TV_PAL_M     :    // 60Hz Sound 4.5M  PAL M         // Not support
    case _TV_NTSC_M    :    // 60Hz Sound 4.5M  NTSC M
    case _TV_PAL_N     :    // 50Hz Sound 4.5M  PAL N         // Not support
        ucSoundType = 0x00;
        break;

    case _TV_NTSC_4_BG :    // 60Hz Sound 5.5M  NTSC 4/BG     // Not support
    case _TV_PAL_BG    :    // 50Hz Sound 5.5M  PAL B/G
    case _TV_SECAM_BG  :    // 50Hz Sound 5.5M  SECAM B/G     // Not support
        ucSoundType = 0x01;
        break;

    default:                // Normal sound
    case _TV_NTSC_4_I  :    // 60Hz Sound 6.0M  NTSC 4/I      // Not support
    case _TV_PAL_I     :    // 50Hz Sound 6.0M  PAL I
        ucSoundType = 0x02;
        break;

    case _TV_NTSC_4_DK :    // 60Hz Sound 6.5M  NTSC 4/DK     // Not support
    case _TV_PAL_DK    :    // 50Hz Sound 6.5M  PAL D/K
    case _TV_SECAM_DK  :    // 50Hz Sound 6.5M  SECAM D/K     // Not support


    case _TV_SECAM_L   :    // 50Hz Sound 6.5M  SECAM L       // Not support
    case _TV_SECAM_LL  :    // 50Hz Sound 6.5M  Secam L'      // Not support        
		ucSoundType = 0x03;
        break;
    } 
	
	return ucSoundType;
}
//---------------------------------------------------------------------------
void MTVSystemLR(unsigned char LR)
{
	BYTE ucSoundType = 0;
//    for(pData[15] = _TV_SYSTEM_SELECT_START; pData[15] < (_TV_SYSTEM_SELECT_END + 1); pData[15]++)
    for(pData[15] = 0; pData[15] < (_MAX_TV_TYPE + 1); pData[15]++)
    {
        ucTVType = ValueInRangeChange(0, _MAX_TV_TYPE, ucTVType, LR, 1);

        if (bSearchedTVType(ucTVType))
            break;
    }
    
	ucSoundType = MatchUCSoundType(ucTVType);

    OSDLine(15,10,15,0x00,BYTE_DISPLAY);
    
	CDrawSystem(ucTVType);

    CSaveChannelColorType(stVDCColor.CurrentChannel, ucTVType);

	CSaveChannelSoundType(stVDCColor.CurrentChannel, ucSoundType);

    rp_CI2CWrite9886(ucTVType); // set 9886

}
//------------------------
void CDrawSystem(BYTE ucTVType)
{
     Gotoxy(5,15,BYTE_DISPLAY);
     OutputChar(0x3b);
     Gotoxy(27,15,BYTE_DISPLAY);
     OutputChar(0x3c);
     CenterTextout((BYTE *)sTVType[ucTVType],16,15);
}
//---------------------------------------------------------------
void tvChannelSwapProc()
{
    switch(ucKeyMessage)
    {
        case VK_MENU:     _SET_INPUTCH_STATE(_GET_ONE_NUM);
						  tvChannelSwap();       break;

         case VK_UP:     	  ucOsdState = _MENU_NONE;
							  MChannelLR(0);	   break;

         case VK_DOWN:        ucOsdState = _MENU_NONE;
							  MChannelLR(1);       break; 
#if(IR_ENABLE)

		 case _IR_NUM0_KEY_MESSAGE:  
		 case _IR_NUM1_KEY_MESSAGE: 
		 case _IR_NUM2_KEY_MESSAGE: 
		 case _IR_NUM3_KEY_MESSAGE: 
		 case _IR_NUM4_KEY_MESSAGE:
		 case _IR_NUM5_KEY_MESSAGE:
		 case _IR_NUM6_KEY_MESSAGE:
		 case _IR_NUM7_KEY_MESSAGE:
		 case _IR_NUM8_KEY_MESSAGE:
		 case _IR_NUM9_KEY_MESSAGE:
				 irGetMultiNumber();  
				 tvChannelSwap();                break;
	}
	//fenix do swap;
#endif
}
//fenix add afc function-------------------------------------------------------
void TVAfcAdjust()
{
//################### fenix add afc		
	BYTE afcOnOff	  = 0;		
    BYTE rData        = 0;		
	BYTE offsetFreq   = 0;
	BYTE bSearchAction = 0;	



	afcOnOff = CLoadChannelAFC(stVDCColor.CurrentChannel);		

	if(afcOnOff)
	{			
		rData = rp_CRead9886();

		switch ((rData >> 1) & 0x0f)
		{															
			case 0:		afcOnOff = 0;						break;
			case 1:		afcOnOff = 0;						break;
			case 2:		offsetFreq = 1;
						bSearchAction = 1 - bSearchAction;	break;

			case 3:		offsetFreq = 2;
						bSearchAction = 1 - bSearchAction;	break;

			case 4:		offsetFreq = 2;
						bSearchAction = 1 - bSearchAction;	break;

			case 5:		offsetFreq = 3;
						bSearchAction = 1 - bSearchAction;	break;

			case 6:		offsetFreq = 3;
						bSearchAction = 1 - bSearchAction;	break;

			case 7:		offsetFreq = 4;
						bSearchAction = 1 - bSearchAction;	break;

			case 8:		offsetFreq = 4;						break;
			case 9:		offsetFreq = 3;						break;
			case 10:	offsetFreq = 3;						break;
			case 11:	offsetFreq = 2;						break;
			case 12:	offsetFreq = 2;						break;
			case 13:	offsetFreq = 1;						break;
			case 14:	offsetFreq = 1;						break;
			case 15:	afcOnOff = 0;						break;
			default:	afcOnOff = 0;						break;
		}
	}
	else
		offsetFreq = 0;
//################
//    ucTVType = CLoadChannelColorType(ucCurrentChannel); // set tv system
//    rp_CI2CWrite9886(ucTVType); // set tv system
//############################################# fenix add afc
if(afcOnOff)
{
//----------------- VIF 38.9----------------------
#if(_TV_VIF_FREQ == _VIF_38DOT9)//gg
	do
	{	
    	CTuningCurrentChannel(bSearchAction,stVDCColor.CurrentChannel);		
	}while(offsetFreq --);
//------------------ VIF 38 ------------------------

#elif(_TV_VIF_FREQ == _VIF_38)	
	do
	{	
    	CTuningCurrentChannel(bSearchAction,stVDCColor.CurrentChannel);		
	}while(offsetFreq --);

#endif
}

}
//###################### fenix add manual adjust ###################
void MTVManualAdjustProc()
{
	CDrawManualAdjust();
	switch(ucKeyMessage)
     {
         case VK_MENU:        break;//MTVSystemMenu();       break;
         case VK_LEFT:        MTVManualAdjustLR(1);        break;
         case VK_RIGHT:       MTVManualAdjustLR(0);        break;
         case VK_UP:         MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
     }

}
//---------------
void MTVManualAdjustLR(unsigned char LR)
{
	 CTuningCurrentChannel(LR,stVDCColor.CurrentChannel);//CTVChannelManualAdjust(0); 
//	 printMsg("TV MANUL ADJUST+");//FENIX TV MANUL ADJUST-
	 Gotoxy(24,15,BYTE_DISPLAY);
	 if(LR)
	 {
     	OutputChar('-');
	 }
	 else
	 {
		OutputChar(0x2c);
	 }
}
//--------------------------
void CDrawManualAdjust()
{
	 Gotoxy(5,15,BYTE_DISPLAY);
     OutputChar(0x3b);
     Gotoxy(27,15,BYTE_DISPLAY);
     OutputChar(0x3c);
     CenterTextout((BYTE *)sManualAdjust[GET_LANGUAGE],16,15);
}
//-----------------------------------------------------------------------------
#endif //#if(_VIDEO_TV_SUPPORT)
#endif //#if(OSD_TYPE == OSD501)

⌨️ 快捷键说明

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