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

📄 menufunc.c

📁 主要用于液晶电视解码,内置51单片机,全部代码用C编写,编译环境为KEILC
💻 C
📖 第 1 页 / 共 3 页
字号:
            OsdFontColor=0x50;
        Osd_DrawStr(10+PositionOffset1, 2, "\x0EF");
}

/******************************PRESET********************************/
#if TV_ENABLE
    if(ReDrawSelect&_BIT4)
    {
        if(IsTVInUse())
        {
            OsdFontColor=0x02;
            if (ItemIndex==4)
                OsdFontColor|=0x50;
            Osd_DrawStr(12+PositionOffset1, 1, "\x0F0");

            OsdFontColor=0x01;
            if (ItemIndex==4)
                OsdFontColor|=0x50;
            Osd_DrawStr(13+PositionOffset1, 1, "\x0F1");

            OsdFontColor=0x03;
            if (ItemIndex==4)
                OsdFontColor=0x50;
            Osd_DrawStr(12+PositionOffset1, 2, "\x0F2");

            OsdFontColor=0x03;
            if (ItemIndex==4)
                OsdFontColor=0x50;
            Osd_DrawStr(13+PositionOffset1, 2, "\x0F3");
        }
    }
#endif
/******************************CLOCK********************************/
    if(ReDrawSelect&_BIT5)
    {
        OsdFontColor=0x02;
        if (ItemIndex==5)
            OsdFontColor|=0x50;
        Osd_DrawStr(12+PositionOffset1+PositionOffset, 1, "\x0F4");

        OsdFontColor=0x02;
        if (ItemIndex==5)
            OsdFontColor|=0x50;
        Osd_DrawStr(13+PositionOffset1+PositionOffset, 1, "\x0F5");

        OsdFontColor=0x03;
        if (ItemIndex==5)
            OsdFontColor=0x50;
        Osd_DrawStr(12+PositionOffset1+PositionOffset, 2, "\x0F6");

        OsdFontColor=0x03;
        if (ItemIndex==5)
            OsdFontColor=0x50;
        Osd_DrawStr(13+PositionOffset1+PositionOffset, 2, "\x0F7");
	}

	Set_DynamiccaptionFlag();
    g_ucCaptionPosition=8;
}


BOOL EnterPictureMenuExec(void)
{
    DrawTopIcon(0,0xFF);
    return TRUE;
}

BOOL EnterAudioMenuExec(void)
{
    DrawTopIcon(1,_BIT0|_BIT1);
    return TRUE;
}

BOOL EnterFunctionMenuExec(void)
{
    DrawTopIcon(2,_BIT1|_BIT2);
    return TRUE;
}

BOOL EnterSystemMenuExec(void)
{
    DrawTopIcon(3,_BIT2|_BIT3);

#if TV_ENABLE
    if(IsTVInUse())
    {
        Osd_SetTextColor(CP_WhiteColor, CP_GrayColor);
        Osd_DrawStr(11, 5, "\x081\x082");
        Osd_DrawStr(11, 6, "\x081\x080");
        Osd_DrawStr(14, 5, "-");
        Osd_DrawStr(14, 6, "-");
    }
#endif

  return TRUE;
}

void SaveUserPref(void)
{
	if (SaveSettingFlag)
	{
		SaveVideoSetting();

		#if VGA_ENABLE
		SavePCSetting();
		if (IsVGAInUse())
			SaveModeSetting();
		#endif

		Clr_SaveSettingFlag();
		printMsg("save setting");
	}
}


#if TV_ENABLE
WORD GetChannelNumber(void)
{
  return GetCurrentChannelNum();

}

BOOL AdjustSoundMode(MenuItemActionType action)
{
    BYTE tempSoundModevalue;

    tempSoundModevalue=(g_TVChSetting.TvCurChannelMisc&SoundSysMask);
    g_TVChSetting.TvCurChannelMisc &=~SoundSysMask;
    if(action==MIA_IncValue)
 	    tempSoundModevalue+=1;
    else
	    tempSoundModevalue+=(TV_SOUND_NUMS-1);

    tempSoundModevalue %=TV_SOUND_NUMS;
    devSetSWF(tempSoundModevalue);
    g_TVChSetting.TvCurChannelMisc  |=tempSoundModevalue&SoundSysMask;
    chData.ucChannelMisc = g_TVChSetting.TvCurChannelMisc;
    //////////////////////////////////////
    	msWriteByte(BK0_00_REGBK, REG_BANK3_COMB);
    	msWriteByteMask(BK3_50, 0x07, 0x07);
    	msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
    //////////////////////////////////////
    DevTunerWrite(chData.wFreq);

    SaveTVChannelInfo(g_TVChSetting.ucCurChannelNO, TRUE);
    return TRUE;
}

WORD GetSkipValue(void)
{
    //return ((g_TVChSetting.TvCurChannelMisc&NotSkipThisNum)>>7);//%2;
    BYTE uctemp;
#if TV_SYSTEM==TV_NTSC
		if(g_TVChSetting.ucTVSource==NTSC_ATV)
			{
			uctemp=g_ucTVChannelSkipInfoBuff[g_TVChSetting.ucCurChannelNO/8];
			}
		else
			{
			uctemp=g_ucCATVChannelSkipInfoBuff[g_TVChSetting.ucCurChannelNO/8];
			}
#else
			uctemp=g_ucTVChannelSkipInfoBuff[g_TVChSetting.ucCurChannelNO/8];
#endif


	uctemp&=1<<(g_TVChSetting.ucCurChannelNO%8);
return uctemp?1:0;
}

BOOL AdjustSkip(MenuItemActionType action)
{
	BYTE tempSkipvalue;

 	tempSkipvalue=(BYTE)GetSkipValue();//%2;

	if(action==MIA_IncValue)
	 	tempSkipvalue+=1;
	else
		tempSkipvalue+=(2-1);

	  tempSkipvalue %=2;

  	SaveChannelSkipInfo(g_TVChSetting.ucCurChannelNO,(BIT)tempSkipvalue);;
  	return TRUE;
}

BOOL EnterPresetMenuExec(void)
{
    DrawChannelFreqGuage(chData.wFreq,CP_SeaBlueColor);
    DrawTopIcon(4,_BIT3|_BIT4);
    return TRUE;
}
#endif

BOOL EnterClockMenuExec(void)
{
#if TV_ENABLE
    if (IsTVInUse())
  	    DrawTopIcon(5,_BIT4|_BIT5);
    else
#endif
        DrawTopIcon(5,_BIT3|_BIT5);

  	Set_DynamiccaptionFlag();

    return TRUE;
}



BOOL AdjustSleepTime(MenuItemActionType action)
 {
 	if (action==MIA_IncValue)
	 	g_ucSleepTime+=1;
   	else
   		g_ucSleepTime+=(SleepTime_Nums-1);

   	g_ucSleepTime%=SleepTime_Nums;

	g_uwSleepTimeCounter=g_ucSleepTime*10;

	g_ucSecond=0;//restart second counter

    return TRUE;
 }

WORD GetSleepTimeValue(void)
{
    return g_uwSleepTimeCounter;
}

 BOOL AdjustTime(MenuItemActionType action)
{
	 if(EnableTimeFlag)
	 {
	  	if (action==MIA_IncValue)
	        g_ucTimeMinute+=1;
	   	else
	   	{
	   		if(g_ucTimeHour==23)
	   		{
	   			Set_ReDrawCurrentOSDFlag();
	   		 	Clr_EnableTimeFlag();
		        g_ucTimeMinute=0;
			 	g_ucTimeHour=0;
	   		}
		else
		      g_ucTimeHour+=1;
	   	}
	   	g_ucTimeHour%=24;
	   	g_ucTimeMinute%=60;

		g_ucSecond=0;
	 }
	 else
	 {
	 	Set_ReDrawCurrentOSDFlag();
	 	Set_EnableTimeFlag();
	 }

	return TRUE;
}

 BOOL AdjustONTime(MenuItemActionType action)
{
	 if(EnableONTimeFlag)
	 {
	  	if (action==MIA_IncValue)
	        g_ucONTimeMinute+=1;
	   	else
	   	{
	   		if(g_ucONTimeHour==23)
	   		{
	   		    Clr_EnableONTimeFlag();
		        g_ucONTimeMinute=0;
			    g_ucONTimeHour=0;
	   		}
			else
		      g_ucONTimeHour+=1;
	   	}
	   	g_ucONTimeHour%=25;
	   	g_ucONTimeMinute%=60;
	 }
	 else
	 	Set_EnableONTimeFlag();

	 if(((g_ucTimeHour==g_ucONTimeHour)&&(g_ucTimeMinute==g_ucONTimeMinute)))
	 	Set_PowerONTimeEnableFlag();
	 else
	 	Clr_PowerONTimeEnableFlag();

	return TRUE;
}

 BOOL AdjustOFFTime(MenuItemActionType action)
{
	 if(EnableOFFTimeFlag)
	 {
	  	if (action==MIA_IncValue)
	        g_ucOFFTimeMinute+=1;
	   	else
	   	{
	   	if(g_ucOFFTimeHour==23)
	   		{
	   		 Clr_EnableOFFTimeFlag();
		        g_ucOFFTimeMinute=0;
			 g_ucOFFTimeHour=0;
	   		}
		else
		      g_ucOFFTimeHour+=1;
	   	}
	   	g_ucOFFTimeHour%=25;
	   	g_ucOFFTimeMinute%=60;
	 }
	 else
	 	Set_EnableOFFTimeFlag();

	 if(((g_ucTimeHour==g_ucOFFTimeHour)&&(g_ucTimeMinute==g_ucOFFTimeMinute)))
	 	Set_PowerOFFTimeEnableFlag();
	 else
	 	Clr_PowerOFFTimeEnableFlag();

	return TRUE;
}

void PanelReversal(BYTE Position)
{
BYTE ucBank;
ucBank=msReadByte(BK0_00_REGBK);
	msWriteByte(BK0_00_REGBK,REG_BANK1_ADC_ACE_MCU);

 	if (Position)
    {
 		msWriteByte(BK1_D1_PTC_MODE2, SET_PTC_MODE2_INV);
    }
 	else
    {
 		msWriteByte(BK1_D1_PTC_MODE2, SET_PTC_MODE2_NOR);
    }
 	msWriteByte(BK0_00_REGBK,ucBank);
}


BOOL AdjustDOWN(MenuItemActionType action)
{
	action=action;
    g_VideoSetting.DOWN++;
   	g_VideoSetting.DOWN%=2;
	PanelReversal(g_VideoSetting.DOWN);
    return TRUE;
}



BOOL AdjustScaling(MenuItemActionType action)
{
	action=action;
    g_VideoSetting.Scaling+=1;
   	g_VideoSetting.Scaling%=Scaling_NUMS;
	msSetScaler();

    return TRUE;
}

//-----------------------------------------------------------------------

BYTE usrNonLinearCalculate(NonLinearCurveType NoLinear,BYTE AdjustValue)
{
    //dual direction
    BYTE rValue,ucXVStart,ucXVEnd,ucXStar,ucXEnd,ucStartPoint;
    WORD wDistance;
    BYTE temData = AdjustValue;
    if (AdjustValue < NON_LINEAR_POINT_X1)
    {
          ucXVStart = NoLinear.X0;
          ucXVEnd   = NoLinear.X1;
          ucXStar   = NON_LINEAR_POINT_X0;
          ucXEnd    = NON_LINEAR_POINT_X1;
    }
    else if (AdjustValue < NON_LINEAR_POINT_X2)
    {
          ucXVStart = NoLinear.X1;
          ucXVEnd   = NoLinear.X2;
          ucXStar   = NON_LINEAR_POINT_X1;
          ucXEnd    = NON_LINEAR_POINT_X2;
    }
    else if (AdjustValue < NON_LINEAR_POINT_X3)
    {
          ucXVStart = NoLinear.X2;
          ucXVEnd   = NoLinear.X3;
          ucXStar   = NON_LINEAR_POINT_X2;
          ucXEnd    = NON_LINEAR_POINT_X3;
    }
    else
    {
          ucXVStart = NoLinear.X3;
          ucXVEnd   = NoLinear.X4;
          ucXStar   = NON_LINEAR_POINT_X3;
          ucXEnd    = NON_LINEAR_POINT_X4;
    }

    if (ucXVEnd > ucXVStart)
    {
	        wDistance = ucXVEnd - ucXVStart;
	        ucStartPoint = ucXVStart;
            temData  = AdjustValue - ucXStar;
    }
    else
    {
	        wDistance = ucXVStart - ucXVEnd;
	        ucStartPoint = ucXVEnd;
            temData  = ucXEnd - AdjustValue;
    }
    rValue = ((WORD)wDistance*temData/(ucXEnd - ucXStar)) + ucStartPoint;

    return rValue;
}

void msNLCCurveInit(void)
{
	g_NLCVideoContrast.X0    = INIT_VIDEO_CONTRAST_X0;
	g_NLCVideoContrast.X1    = INIT_VIDEO_CONTRAST_X1;
	g_NLCVideoContrast.X2    = INIT_VIDEO_CONTRAST_X2;
	g_NLCVideoContrast.X3    = INIT_VIDEO_CONTRAST_X3;
	g_NLCVideoContrast.X4    = INIT_VIDEO_CONTRAST_X4;

	g_NLCVideoBrightness.X0    = INIT_VIDEO_BRIGHTNESS_X0;
	g_NLCVideoBrightness.X1    = INIT_VIDEO_BRIGHTNESS_X1;
	g_NLCVideoBrightness.X2    = INIT_VIDEO_BRIGHTNESS_X2;
	g_NLCVideoBrightness.X3    = INIT_VIDEO_BRIGHTNESS_X3;
	g_NLCVideoBrightness.X4    = INIT_VIDEO_BRIGHTNESS_X4;

	g_NLCVideoSaturation.X0    = INIT_VIDEO_SATURATION_X0;
	g_NLCVideoSaturation.X1    = INIT_VIDEO_SATURATION_X1;
	g_NLCVideoSaturation.X2    = INIT_VIDEO_SATURATION_X2;
	g_NLCVideoSaturation.X3    = INIT_VIDEO_SATURATION_X3;
	g_NLCVideoSaturation.X4    = INIT_VIDEO_SATURATION_X4;

	g_NLCAudioVolume.X0         = INIT_AudioVolume_X0;
	g_NLCAudioVolume.X1         = INIT_AudioVolume_X1;
	g_NLCAudioVolume.X2         = INIT_AudioVolume_X2;
	g_NLCAudioVolume.X3         = INIT_AudioVolume_X3;
	g_NLCAudioVolume.X4         = INIT_AudioVolume_X4;
}

#if CCFL_FUNCTION
void msSetCCFLBrightness(void)
{
	msWriteByte(BK0_00_REGBK, REG_BANK4_LVDS_CCFL);
	msWriteByte(BK4_6B, 0x80);

#if CCFL_BURST_MODE
	msWriteByte(BK4_91, 0x00);
	msWriteByte(BK4_90, 0xAE);//tony for SZ demo 0xAE);
#else
	msWriteByte(BK4_82, 0xAA);
#endif

	msWriteByte(BK4_6B, 0x00);
	msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
}
#endif


#if VGA_ENABLE

BOOL EnablePowerDownCounter(void)
{
	g_ucPowerDownCounter=0;//  3  , no sync blue BK0_5E_PATTERN always on  zwtan 20050528
  	return TRUE;
}

#define MaxHStart	g_ModeSetting.AutoHStart+50
#define MinHStart	       g_ModeSetting.AutoHStart-50
BOOL AdjustHPosition(MenuItemActionType action)
{
    WORD tempValue;

    tempValue=DecIncValue(action, g_ModeSetting.HStart, MinHStart, MaxHStart, 1);
    if (tempValue==g_ModeSetting.HStart)
        return FALSE;
    g_ModeSetting.HStart=tempValue;
    msAdjustHPosition(g_ModeSetting.HStart);

    return TRUE;
}

WORD GetHPositionValue(void)
{
	return 100-GetScale100Value(g_ModeSetting.HStart, MinHStart, MaxHStart);//, 0);
}

⌨️ 快捷键说明

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