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

📄 osdtv003.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 3 页
字号:
    {
    case VK_MENU:        MAutoSearchAdjMenu();       break;
    case VK_LEFT:        MAutoSearchAdjLR(1);        break;
    case VK_RIGHT:       MAutoSearchAdjLR(0);        break;
    case VK_ENTER:       MAutoSearchAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MAutoSearchAdjMenu()
{
    ucOsdState = MENU_AUTO_SEARCH;
    SelectState();
}
//----------------------------------------------------------------------------------------------------
void MAutoSearchAdjLR(unsigned char LR)
{
    // : Insert Adjust Code & Redraw
    LR = 0;
}
//----------------------------------------------------------------------------------------------------
void MAutoSearchAdjEnter()
{
    // : Not Process
}
//----------------------------------------------------------------------------------------------------
void CShowAutoSearchSlider(BYTE ucCurrentValue)
{
    OSDSlider(4, 5, 16, ucCurrentValue, 100, 0x10);
}
//----------------------------------------------------------------------------------------------------
void CShowAutoSerachTotal(BYTE ucSearchTotal)
{
    Gotoxy(12,6,BYTE_DISPLAY);
    PrintfDec(ucSearchTotal);
}
//----------------------------------------------------------------------------------------------------
bit CStopAutoSearch(void)
{
#if(KEY_TYPE == KEY_ADC)
    if (_MENU_KEY_MASK == CKeyScan())
    {
        CTimerDelayXms(100);
        if (_MENU_KEY_MASK == CKeyScan())
            return 1; // Stop auto search
    }
#endif
    return 0; // Continue auto search
}
//----------------------------------------------------------------------------------------------------

//--------- Manual Search PROC ----------------------------------
void MManualSearchAdjProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MManualSearchAdjMenu();       break;
    case VK_LEFT:        MManualSearchAdjLR(1);        break;
    case VK_RIGHT:       MManualSearchAdjLR(0);        break;
    case VK_ENTER:       MManualSearchAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MManualSearchAdjMenu()
{
    ucOsdState = MENU_MANUAL_SEARCH;
    SelectState();
    
    // : Insert Send Save To EEPROM Msg
}
//----------------------------------------------------------------------------------------------------
void MManualSearchAdjLR(unsigned char LR)
{
    // For test eric 0512
    CManualSearch((bit)LR,stVDCColor.CurrentChannel);
    CTimerDelayXms(200);
}
//----------------------------------------------------------------------------------------------------
void MManualSearchAdjEnter()
{
    // : Not Process
}
//----------------------------------------------------------------------------------------------------



//--------- Tuning PROC ----------------------------------
void MTuningAdjProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MTuningAdjMenu();       break;
    case VK_LEFT:        MTuningAdjLR(1);        break;
    case VK_RIGHT:       MTuningAdjLR(0);        break;
    case VK_ENTER:       MTuningAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MTuningAdjMenu()
{
    ucOsdState = MENU_TUNING;
    SelectState();
    CLR_KEYREPEATENABLE();
    // : Insert Send Save To EEPROM Msg
}
//----------------------------------------------------------------------------------------------------
void MTuningAdjLR(unsigned char LR)
{
    SET_KEYREPEATENABLE();
    // : Insert Adjust Code & Redraw
    CTuningCurrentChannel((bit)LR,stVDCColor.CurrentChannel);
}
//----------------------------------------------------------------------------------------------------
void MTuningAdjEnter()
{
    // : Not Process
}

//----------------------------------------------------------------------------------------------------
#if(_AUTO_POWER_DOWN)
void CShowTimer(void)
{
    BYTE ucCurrentMin = ucAutoPowerDownTime - 1;
    BYTE ucCurrentSec = 59 - (BYTE)(ucMinuteCount/1000);
    
    if (!bTimerOnScreen)
    {
        COsdFxDisableOsd();
        SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
        SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
        SetRowCmds(ROW_COUNT,COL_WIDTH);
        COsdFxCodeWrite(ucCloseAllWindow);
        OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
        OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
        OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
        OSDPosition(30,30,38,1,0x01);
        COsdFxEnableOsd();
        bTimerOnScreen = 1;
    }
    
    Gotoxy(3,0,BYTE_DISPLAY);         
    CShowFiveNumber(ucAutoPowerDownTime - 1, 2);
    OutputChar(0x3a);  // Show ":"
    CShowFiveNumber(59 - (BYTE)(ucMinuteCount/1000), 2);
    
    
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
#endif

//--------- Channel PROC ----------------------------------
void MChannelAdjProc()
{             
    switch(ucKeyMessage)
    {
    case VK_MENU:        MChannelAdjMenu();       break;
    case VK_LEFT:        MChannelAdjLR(1);        break;
    case VK_RIGHT:       MChannelAdjLR(0);        break;
    case VK_ENTER:       MChannelAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MChannelAdjMenu()
{
    ucOsdState = MENU_CHANNEL;
    SelectState();
    
    // : Insert Send Save To EEPROM Msg
}
//----------------------------------------------------------------------------------------------------
void MChannelAdjLR(unsigned char LR)
{
    stVDCColor.CurrentChannel = ValueInRangeChange(0,CloadMaxChannelNumber(),stVDCColor.CurrentChannel,LR,1);
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    
    Gotoxy(12,5,BYTE_DISPLAY);
    PrintfDec(stVDCColor.CurrentChannel);
    
    // Save current channel
    CEepromSaveVedioColor();    
}
//----------------------------------------------------------------------------------------------------
void MChannelAdjEnter()
{
    // : Not Process
}
//----------------------------------------------------------------------------------------------------



//--------- Swap PROC ----------------------------------
void MSwapAdjProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MSwapAdjMenu();       break;
    case VK_LEFT:        MSwapAdjLR(1);        break;
    case VK_RIGHT:       MSwapAdjLR(0);        break;
    case VK_ENTER:       MSwapAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MSwapAdjMenu()
{
    WORD ucSwapFreq        = CLoadChannelFreq(stVDCColor.CurrentChannel);
    BYTE ucSwapColorSystem = CLoadChannelColorType(stVDCColor.CurrentChannel);
    BYTE ucSwapSoundSystem = CLoadChannelSoundType(stVDCColor.CurrentChannel);
    
    CSaveChannelFreq(CLoadChannelFreq(ucPrevChannel), stVDCColor.CurrentChannel);
    CSaveChannelColorType(CLoadChannelColorType(ucPrevChannel), stVDCColor.CurrentChannel);
    CSaveChannelSoundType(CLoadChannelSoundType(ucPrevChannel), stVDCColor.CurrentChannel);
    
    CSaveChannelFreq(ucSwapFreq, ucPrevChannel);
    CSaveChannelColorType(ucSwapColorSystem, ucPrevChannel);
    CSaveChannelSoundType(ucSwapSoundSystem, ucPrevChannel);  
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    
    ucOsdState = MENU_SWAP;
    SelectState();
}
//----------------------------------------------------------------------------------------------------
void MSwapAdjLR(unsigned char LR)
{
    stVDCColor.CurrentChannel = ValueInRangeChange(0,CloadMaxChannelNumber(),stVDCColor.CurrentChannel,LR,1);
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    
    
    Gotoxy(12,5,BYTE_DISPLAY);
    PrintfDec(stVDCColor.CurrentChannel);
}
//----------------------------------------------------------------------------------------------------
void MSwapAdjEnter()
{
}
//----------------------------------------------------------------------------------------------------



//--------- Skip PROC ----------------------------------
void MSkipAdjProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MSkipAdjMenu();       break;
    case VK_LEFT:        MSkipAdjLR(1);        break;
    case VK_RIGHT:       MSkipAdjLR(0);        break;
    case VK_ENTER:       MSkipAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MSkipAdjMenu()
{
    ucOsdState = MENU_SKIP;
    SelectState();
}
//----------------------------------------------------------------------------------------------------
void MSkipAdjLR(unsigned char LR)
{
    LR = CLoadChannelSkip(stVDCColor.CurrentChannel);
    
    LR = 1 - LR;
    
    // Save current channel skip state
    CSaveChannelSkip((bit)LR, stVDCColor.CurrentChannel);
    
    OSDClear(5,1,10,10,0x00,BYTE_DISPLAY);
    CenterTextout((BYTE *)sSkipFunc[LR][GET_LANGUAGE],13,5);
    LR = 0;
}
//----------------------------------------------------------------------------------------------------
void MSkipAdjEnter()
{
    // : Not Process
}
//----------------------------------------------------------------------------------------------------



//--------- Blue PROC ----------------------------------
void MBlueAdjProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MBlueAdjMenu();       break;
    case VK_LEFT:        MBlueAdjLR(1);        break;
    case VK_RIGHT:       MBlueAdjLR(0);        break;
    case VK_ENTER:       MBlueAdjEnter();      break;
    }
}
//----------------------------------------------------------------------------------------------------
void MBlueAdjMenu()
{
    ucOsdState = MENU_BLUE;
    SelectState();
    
    // : Insert Send Save To EEPROM Msg
}
//----------------------------------------------------------------------------------------------------
void MBlueAdjLR(unsigned char LR)
{   
    LR = _GET_BLUE_BACKGROUND();
    
    LR = 1 - LR;
    
    _SET_BLUE_BACKGROUND(LR);
    CEepromSaveSystemData(); // Save Adjust result
    OSDClear(5,1,13,3,0x00,BYTE_DISPLAY);
    CenterTextout((BYTE *)sOn_Off[LR][GET_LANGUAGE],13,5);
}
//----------------------------------------------------------------------------------------------------
void MBlueAdjEnter()
{
    // : Not Process
}
//----------------------------------------------------------------------------------------------------



//--------- AutoPowerDown PROC ----------------------------------
void MAutoPowerDownAdjProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MAutoPowerDownAdjMenu();       break;
    case VK_LEFT:        MAutoPowerDownAdjLR(1);        break;
    case VK_RIGHT:       MAutoPowerDownAdjLR(0);        break;
    case VK_ENTER:       MAutoPowerDownAdjEnter();     break;
    }
}
//----------------------------------------------------------------------------------------------------
void MAutoPowerDownAdjMenu()
{
    ucOsdState = MENU_AUTO_POWER_DOWN;
    SelectState();
}
//----------------------------------------------------------------------------------------------------
void MAutoPowerDownAdjLR(unsigned char LR)
{
#if(_AUTO_POWER_DOWN)
    BYTE ucTemp = _GET_POWER_DOWN_TIME();
    
    ucTemp = ValueInRangeChange(0,4,ucTemp,LR,1);
    
    _SET_POWER_DOWN_TIME(ucTemp);
    CEepromSaveSystemData(); // Save Adjust result
    
    ucAutoPowerDownTime = ucTemp * 15;
    if (0 == ucAutoPowerDownTime) // Auto power down time off
    {
        ucAutoPowerDownTime = 0xff;
    }
    
    ucMinuteCount       = 0;  // Reset count
    
    OSDClear(5,1,12,3,0x00,BYTE_DISPLAY);
    Gotoxy(12,5,BYTE_DISPLAY);
    PrintfDec(ucTemp * 15);    
#else
    LR = 0;
#endif
}
//----------------------------------------------------------------------------------------------------
void MAutoPowerDownAdjEnter()
{
    // : Not Process
}
//----------------------------------------------------------------------------------------------------



//-------------------------------------------------------------------------
//
// ucOption:   0x01: Only show ucTvNumber          _SHOW_CH_TV_NUMBER
//             0x02: Show tv type                  _SHOW_CH_TV_TYPE
//             0x04: Show sound type               _SHOW_CH_SOUND_TYPE
//
//-------------------------------------------------------------------------
void CShowTVNumber(const BYTE ucTvNumber, const BYTE ucOption)
{
    unsigned char y;
    
    COsdFxDisableOsd();
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
    OSDPosition(30,30,28,1,0x01);
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    
#if(_AUTO_POWER_DOWN)
    bTimerOnScreen = 0;
    ucOsdState     = MENU_SHOW_CHANNEL_SATAE;
#endif
    
    y = 0;
    if(ucOption & _SHOW_CH_TV_NUMBER)
    {
        Gotoxy(5,y,BYTE_DISPLAY);         
        PrintfDec(ucTvNumber);
        y++;
    }
    if(ucOption & _SHOW_CH_TV_TYPE)
    {
        RightAlignTextOut((unsigned char code *)sTVType[ucTVType],8,y);
        y++;
    }
  /*  if(ucOption & _SHOW_CH_SOUND_TYPE)
    {
        RightAlignTextOut((unsigned char code *)sTVSoundType[CLoadChannelSoundType(stVDCColor.CurrentChannel)], 8, y);
        y++;
    }*/
}
//-------------------------------------------------------------------------



#endif  //#if(_VIDEO_TV_SUPPORT)
#endif  //#if(OSD_TYPE == OSD003)

⌨️ 快捷键说明

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