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

📄 lcd_osd_ktc.c

📁 keil c51平台,此代码可用于学习TFT LCD 之TCON,SCALER,OSD,(本人自己修改)
💻 C
📖 第 1 页 / 共 5 页
字号:
                        fac_bright   = 1 < fac_bright ? fac_bright - 2 : 0;
                }
                stGUD0.BRIGHT = fac_bright;
                Set_Bright_Contrast();
                Save_GUD0();
                Save_GUD4();
                OSD_Slider(6, 4, 17, fac_bright, 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
                break;            
            case PAGE8_ITEM_Contrast :
                if (NOTIFY_RIGHT_KEY == action)
                {
                    if (100 <= fac_contrast)     break;

                    if (KEY_TURBO_ENABLE > ucKey_Issued)
                        fac_contrast   = 100 > fac_contrast ? fac_contrast + 1 : 100;
                    else
                        fac_contrast   = 99 > fac_contrast ? fac_contrast + 2 : 100;
                }
                else
                {
                    if (0 == fac_contrast)       break;

                    if (KEY_TURBO_ENABLE > ucKey_Issued)
                        fac_contrast   = 0 < fac_contrast ? fac_contrast - 1 : 0;
                    else
                        fac_contrast   = 1 < fac_contrast ? fac_contrast - 2 : 0;
                }
                stGUD0.CONTRAST = fac_contrast;
                Set_Bright_Contrast();
                Save_GUD0();
                Save_GUD4();
                OSD_Slider(6, 4, 17, fac_contrast, 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
                break;            
            case PAGE8_ITEM_Light :
                if (NOTIFY_RIGHT_KEY == action)
                {
                    if (100 <= fac_light)     break;

                    if (KEY_TURBO_ENABLE > ucKey_Issued)
                        fac_light   = 100 > fac_light ? fac_light + 1 : 100;
                    else
                        fac_light   = 99 > fac_light ? fac_light + 2 : 100;
                }
                else
                {
                    if (0 == fac_light)       break;

                    if (KEY_TURBO_ENABLE > ucKey_Issued)
                        fac_light   = 0 < fac_light ? fac_light - 1 : 0;
                    else
                        fac_light   = 1 < fac_light ? fac_light - 2 : 0;
                }
                Set_Bright_Contrast();
                Save_GUD4();
                OSD_Slider(6, 4, 17, fac_light, 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
                break;
            case PAGE8_ITEM_Facmode :
                if (test_mode)
                {
                    test_mode = 0;
                }
                else
                {
                    test_mode = 1;
                    test_color = 0;
                }
                Save_GUD4();
                RTDCodeW((test_mode) ? Page3_ON_Icon : Page3_OFF_Icon);
                break;
            case PAGE8_ITEM_Automode :
                if (Auto_mode)
                {
                    Auto_mode = 0;
                }
                else
                {
                    Auto_mode = 1;
                }
                Save_GUD4();
                RTDCodeW((Auto_mode) ? Page3_ON_Icon : Page3_OFF_Icon);
                break;
            }
        }
        else
        {
            if (NOTIFY_RIGHT_KEY == action)
                ucOSD_Item_Index0   = (PAGE8_ITEM_NUM == ucOSD_Item_Index0) ? 1 : (ucOSD_Item_Index0 + 1);
            else
                ucOSD_Item_Index0   = (1 == ucOSD_Item_Index0) ? PAGE8_ITEM_NUM : (ucOSD_Item_Index0 - 1);
                
            Show_Page8();            
        }        
        break;
        
#if(KEY_TYPE==KEY_5)                  
    case NOTIFY_AUTO_KEY :
#endif 

#if(KEY_TYPE==KEY_6)                  
    case NOTIFY_EXIT_KEY :
#endif     	
            ucOSD_Page_Index    = 0;
            ucOSD_Item_Index0   = 0;
            ucOSD_Item_Index1   = 0;
            ucOSD_Item_Index2   = 0;     
        break;


    case NOTIFY_SHOW :
        OSD_Position();
        OSD_Clear(0, 12, 0, 29);
        RTDCodeW(OSD_Enable);
        Show_Page8();
        break;

    default :
        // We don't handle other messages
        break;
    }
}


void Show_Page1(void)
{
    Data[0]     = 5;
    Data[1]     = Y_INC;
    Data[2]     = OSD_ROW_90;
    Data[3]     = 0xaf;
    Data[4]     = 0x0c;
    Data[5]     = 5;
    Data[6]     = N_INC;
    Data[7]     = OSD_DATA_92;
    Data[8]     = stGUD1.OSD_POSV;
    Data[9]     = stGUD1.OSD_POSH;
    Data[10]    = 0;
    RTDWrite(Data);
    
    RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_Title_E_Atb : OSD_Title_C_Atb);
    RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_Title_ENG_Icon : OSD_Title_CHI_Icon);

    RTDCodeW(OSD_Body_Atb);
    RTDCodeW((unsigned char *)Body_Atb_TABLE[ucOSD_Item_Index0 - 1]);
    RTDCodeW(OSD_Body_Icon);

    RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_Body2_E_Atb : OSD_Body2_C_Atb);
    RTDCodeW((unsigned char *)OSD_PAGE1_TABLE[ucOSD_Item_Index0 - 1][stGUD1.FUNCTION & 0x07]);

    switch (ucOSD_Item_Index0)
    {
    case PAGE1_ITEM_BRIGHT :
        RTDCodeW(OSD_ENTER_E_Atb);
#if (BRIGHT_TYPE == GAIN)
        OSD_Slider(7, 5, 14, stGUD0.BRIGHT, 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
#endif
#if (BRIGHT_TYPE == LIGHT)
        OSD_Slider(7, 5, 14, fac_light, 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
#endif
        break;
    case PAGE1_ITEM_CONTRAST :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, stGUD0.CONTRAST, 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_POSH :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, ucH_Max_Margin - stMUD.H_POSITION, ucH_Max_Margin - ucH_Min_Margin, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_POSV :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, (unsigned int)(stMUD.V_POSITION - ucV_Min_Margin) * 50 / (128 - ucV_Min_Margin), 100, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_CLOCK :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, stMUD.CLOCK - 28, 200, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_PHASE :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, (stMUD.PHASE & 0x7c) >> 2, 31, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_SHARP :
        RTDCodeW( (0 == ucOSD_Item_Index1)? OSD_ENTER_B_Atb : OSD_ENTER_R_Atb);
        RTDCodeW((0 == stGUD1.FILTER) ? OSD_Sharp_1 : (1 == stGUD1.FILTER) ? OSD_Sharp_2
                : (2 == stGUD1.FILTER) ? OSD_Sharp_3 : (3 == stGUD1.FILTER) ? OSD_Sharp_4 : OSD_Sharp_5); 
        break;
    case PAGE1_ITEM_VOLUME :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, 0x1f - stGUD3.VOLUME, 0x1f, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_OSDT :
        RTDCodeW(OSD_ENTER_E_Atb);
        OSD_Slider(7, 5, 14, stGUD1.OSD_TIMEOUT, 60, (0 == ucOSD_Item_Index1) ? 0X01 : 0X04);
        break;
    case PAGE1_ITEM_AUTO :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER_E_Atb : OSD_ENTER_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    case PAGE1_ITEM_RECALL :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER_E_Atb : OSD_ENTER_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    case PAGE1_ITEM_COLOR :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER_E_Atb : OSD_ENTER_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    case PAGE1_ITEM_LANGUAGE :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER_E_Atb : OSD_ENTER_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    case PAGE1_ITEM_OSDS :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER_E_Atb : OSD_ENTER_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    case PAGE1_ITEM_EXIT :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER_E_Atb : OSD_ENTER_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    default :
        RTDCodeW(OSD_ENTER_E_Atb);
        break;
    }
    
        OSD_Line(12, 2, 24, COLOR_BLUE, 0);     // Set characters to blue
        {
            unsigned int    usHwid;
            unsigned char   ucTemp;

            usHwid  = usIPH_ACT_WID;

            if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07))
            {
                if (MODE_1600x1200x60HZ == ucMode_Curr)
                {
                    usHwid  = 1600;
                }
                else 
                {
                    if (MODE_1600x1200x60HZ > ucMode_Curr)
                    {
                        if (MODE_1280x0960x60HZ <= ucMode_Curr)
                            usHwid  = 1280;
                        else if (MODE_1152x0864x75HZ <= ucMode_Curr)
                            usHwid  = 1152;
                    }
                    else
                    {
                        if (MODE_USER1600x1200 == ucMode_Curr)
                            usHwid  = 1600;
                        else if (MODE_USER1280x960 <= ucMode_Curr)
                            usHwid  = 1280;
                        else if (MODE_USER1152x864 <= ucMode_Curr)
                            usHwid  = 1152;
                    }
                }
            }

            RTDCodeW(Page1_Mode);

            Data[0] = 12;
            Data[1] = N_INC;
            Data[2] = OSD_DATA_92;

            ucTemp  = usHwid / 100;

            if (10 <= ucTemp)
            {
                Data[3] = _1_;
                Data[4] = ucTemp - 10 + _0_;
            }
            else
            {
                Data[3] = 0;
                Data[4] = ucTemp + _0_;
            }

            ucTemp  = usHwid - ((unsigned int)100 * ucTemp);
        
            Data[5] = ucTemp / 10;
            Data[6] = ucTemp - (10 * Data[5]) + _0_;
            Data[5] = Data[5] + _0_;
            Data[7] = _X_;

            ucTemp      = usIPV_ACT_LEN / 100;
            Data[12]    = usIPV_ACT_LEN - ((unsigned int)100 * ucTemp);

            if (10 <= ucTemp)
            {
                Data[8]     = _1_;
                Data[9]     = ucTemp - 10 + _0_;
                Data[10]    = Data[12] / 10;
                Data[11]    = Data[12] - (10 * Data[10]) + _0_;
                Data[10]    = Data[10] + _0_;
            }
            else
            {
                Data[8]     = ucTemp + _0_;
                Data[9]     = Data[12] / 10;
                Data[10]    = Data[12] - (10 * Data[9]) + _0_;
                Data[9]     = Data[9] + _0_;
                Data[11]    = 0;
            }
            Data[12]    = 0;
            RTDWrite(Data);

            // Show Refresh Rate
            RTDCodeW(Page1_Rate);

            Data[0] = 7;
            Data[1] = N_INC;
            Data[2] = OSD_DATA_92;
            Data[3] = ucRefresh / 10;
            Data[4] = ucRefresh - (Data[3] * 10) + _0_;
            Data[3] = Data[3] + _0_;
            Data[5] = _H_;
            Data[6] = _Z_;
            Data[7] = 0;
            RTDWrite(Data);    
        }    
}   

void Show_Page2(void)
{
    Data[0]     = 5;
    Data[1]     = Y_INC;
    Data[2]     = OSD_ROW_90;
    Data[3]     = 0xaf;
    Data[4]     = 0x0c;
    Data[5]     = 5;
    Data[6]     = N_INC;
    Data[7]     = OSD_DATA_92;
    Data[8]     = stGUD1.OSD_POSV;
    Data[9]     = stGUD1.OSD_POSH;
    Data[10]    = 0;
    RTDWrite(Data);

    OSD_Clear(4, 7, 0, 29);  

    RTDCodeW(OSD_Page2_Atb);
    RTDCodeW((unsigned char *)OSD_Page2_TABLE[ucOSD_Item_Index0 - 1]);
    RTDCodeW(OSD_Page2_Icon);
    
    if (ucOSD_Item_Index1)
    {
        RTDCodeW((unsigned char *)OSD_Page2B_TABLE[ucOSD_Item_Index1 - 1]);
    }

    switch (ucOSD_Item_Index0)
    {
    case PAGE2_ITEM_6500 :
        RTDCodeW(OSD_ENTER2_E_Atb);
        RTDCodeW(OSD_Page2_Icon2);
        OSD_Slider(4, 4, 17, stGUD4.C3_R, 100, 0X04);
        OSD_Slider(5, 4, 17, stGUD4.C3_G, 100, 0X02);
        OSD_Slider(6, 4, 17, stGUD4.C3_B, 100, 0X01);
        break;
    case PAGE2_ITEM_7800 :
        RTDCodeW(OSD_ENTER2_E_Atb);
        RTDCodeW(OSD_Page2_Icon2);        
        OSD_Slider(4, 4, 17, stGUD4.C2_R, 100, 0X04);
        OSD_Slider(5, 4, 17, stGUD4.C2_G, 100, 0X02);
        OSD_Slider(6, 4, 17, stGUD4.C2_B, 100, 0X01);
        break;
    case PAGE2_ITEM_9300 :
        RTDCodeW(OSD_ENTER2_E_Atb);
        RTDCodeW(OSD_Page2_Icon2);        
        OSD_Slider(4, 4, 17, stGUD4.C1_R, 100, 0X04);
        OSD_Slider(5, 4, 17, stGUD4.C1_G, 100, 0X02);
        OSD_Slider(6, 4, 17, stGUD4.C1_B, 100, 0X01);
        break;
    case PAGE2_ITEM_USER :
        RTDCodeW(OSD_ENTER2_E_Atb);
        RTDCodeW(OSD_Page2_Icon2);        
        OSD_Slider(4, 4, 17, stGUD4.u_R, 100, 0X04);
        OSD_Slider(5, 4, 17, stGUD4.u_G, 100, 0X02);
        OSD_Slider(6, 4, 17, stGUD4.u_B, 100, 0X01);
        break;
    case PAGE2_ITEM_AUTO :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER2_E_Atb : OSD_ENTER2_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER2_TABLE[stGUD1.FUNCTION & 0x07]);
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_Page2_E_Atb : OSD_Page2_C_Atb);
        RTDCodeW((unsigned char *)OSD_Page2_Color_TABLE[stGUD1.FUNCTION & 0x07]);
        break;
    case PAGE2_ITEM_EXIT :
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_ENTER2_E_Atb : OSD_ENTER2_C_Atb);
        RTDCodeW((unsigned char *)OSD_ENTER2_TABLE[stGUD1.FUNCTION & 0x07]);
        RTDCodeW(CHINESE < (stGUD1.FUNCTION & 0x07) ? OSD_Page2_E_Atb : OSD_Page2_C_Atb);
        RTDCodeW((un

⌨️ 快捷键说明

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