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

📄 power_ctrl.~c

📁 液晶显示器程序代码
💻 ~C
字号:
#define __POWERCTRL__

#include "Header\Lcd_main.h"
#include "Header\access.h"
#include "Header\config.h"
#include "Header\Osd.h"
#include "Header\Initial.h"
#include "Header\Lcd_msg.h"
#include "Header\Frame_Sync.h"
#include "Header\Lcd_func.h"


void PowerDown_ADC(void)
{
    RTDSetByte(PLL1_CTRL_D6, 0xf2);     // Power down PLL1
    RTDSetByte(PLL2_CTRL_DA, 0x40);     // Power down PLL2
    RTDSetByte(ADC_CTRL_E6, 0x40);      // Power down ADC
}

void PowerUp_ADC(void)
{
    RTDSetByte(PLL1_CTRL_D6, 0xf3);     // Power up PLL1
    RTDSetByte(PLL2_CTRL_DA, 0x41);     // Power up PLL2
    RTDSetByte(ADC_CTRL_E6, 0x47);      // Power up ADC


    RTDSetByte(PLL2_FILTER_DD, 0x5f);

}

void PowerDown_TMDS(void)
{
    RTDSetByte(TMDS_OUTPUT_ENA_A0, 0x0F);    
}

void PowerUp_TMDS(void)
{
   RTDSetByte(TMDS_OUTPUT_ENA_A0, 0x8F);
}


void PowerDown_VDC(void)
{
#if (VIDEO_CHIP != VDC_NONE)

#if(MCU_TYPE == MCU_WINBOND)
    bVDC_PWR    = VDC_OFF;
#else
    MCU_WriteVideoPower(VDC_OFF);
#endif

#endif
}

void PowerUp_VDC(void)
{
#if (VIDEO_CHIP != VDC_NONE)

#if(MCU_TYPE == MCU_WINBOND)
     bVDC_PWR    = VDC_ON;
#else
     MCU_WriteVideoPower(VDC_ON);
#endif

#endif
}

void PowerDown_LVDS(void)
{
#if (OUTPUT_BUS == LVDS_TYPE)
RTDCodeW(LVDS_POWERDOWN);
#endif
}

void PowerUp_LVDS(void)
{
#if (OUTPUT_BUS == LVDS_TYPE)
RTDCodeW(LVDS_POWERUP);
#endif
}

void Set_Panel(unsigned char status)
{
    if (status)
    {
        PowerUp_LVDS();
		//Device_Power(LVDS_POWER,ON);

        Delay_Xms(10);


        RTDSetByte(VDIS_SIGINV_21, 0x00 | DISP_EO_SWAP | DISP_RB_SWAP | DISP_ML_SWAP);       // DHS, DVS, DEN, DCLK MUST NOT be inverted.

        RTDSetBit(VDIS_CTRL_20, 0xfd, 0x01);    // DHS, DVS, DEN, DCLK and data are clamped to 0
        Delay_Xms(20);
        RTDSetBit(VDIS_CTRL_20, 0xfe, 0x00);    // Stop display timing
        Delay_Xms(20);

#if(MCU_TYPE == MCU_WINBOND)
        bPANEL_PWR  = PANEL_ON;
#else
        MCU_WritePanelPower(PANEL_ON);
#endif
        bPanel_Status = _ON;

        
        Delay_Xms(40);
		


        RTDSetByte(VDIS_SIGINV_21, DISP_INV | DISP_EO_SWAP | DISP_RB_SWAP | DISP_ML_SWAP);       // DHS, DVS, DEN, DCLK MUST NOT be inverted.

        RTDSetBit(VDIS_CTRL_20, 0xff, 0x03);    // DHS, DVS, DEN, DCLK in normal operation
        
        RTDSetBit(DIS_TIMING0_3A, 0xff, 0x20);  // Force display timing enable
        RTDSetBit(DIS_TIMING0_3A, 0xdf, 0x00);  // Stop forcing

        Delay_Xms(200);
        Delay_Xms(200);

		RTDSetByte(STATUS0_01, 0x00);  // Write once to clear status
        RTDSetByte(STATUS1_1F, 0x00);  // Write once to clear status

        
#if(MCU_TYPE == MCU_WINBOND)
        bLIGHT_PWR  = LIGHT_ON;
#else
        MCU_WriteBacklightPower(LIGHT_ON);
#endif

    }
    else
    {
#if(MCU_TYPE == MCU_WINBOND)
        bLIGHT_PWR  = LIGHT_OFF;
#else
        MCU_WriteBacklightPower(LIGHT_OFF);
#endif

        Delay_Xms(120);

        RTDCodeW(OSD_Reset);


        RTDSetByte(VDIS_SIGINV_21, 0x00 | DISP_EO_SWAP | DISP_RB_SWAP | DISP_ML_SWAP);       // DHS, DVS, DEN, DCLK MUST NOT be inverted.

        RTDSetBit(VDIS_CTRL_20, 0xfd, 0x01);    // DHS, DVS, DEN, DCLK and data are clamped to 0
        Delay_Xms(20);
        RTDSetBit(VDIS_CTRL_20, 0xfe, 0x00);    // Stop display timing
        Delay_Xms(20);
#if(MCU_TYPE == MCU_WINBOND)	 
        bPANEL_PWR  = PANEL_OFF;
#else
        MCU_WritePanelPower(PANEL_OFF);
#endif
        bPanel_Status = _OFF;
        Delay_Xms(40);

        PowerDown_LVDS();
		//Device_Power(LVDS_POWER,OFF);
    }
}

            //////////////////////
            // Power Controller //
            //////////////////////
bit Power_Control(unsigned char Notify)
{
            if (0 == bPower_Status)
            {

                if (NOTIFY_POWERUP == Notify)
                {
                    bPower_Status   = 1;

                    Power_Up_Init();
                    ISP_Check_Sum();

                    bStable     = 0;                    // Assume input signal is not stable when power up
                    bReload     = 1;                    // Always reload font when power up
                    bFrameSync  = 0;                    // Not sync yet
                    ucModeCnt   = MODE_DETECT_FREQ;     // Reset Input Mode Detector
                    
                    Measure_Mode();                     // Measure mode-timing
                    Set_Task(STATE_POWERUP);            // Notify Task State Machine
#if (RTDDEBUG)
                    ucMode_PrevAct  = MODE_NOSIGNAL;
                    ucMode_QuitCnt  = 0;
                    ucDebug         = 0;
#endif

#if (POWER_KEY_TYPE == TYPE_ONE_TOUCH)
                    // Save power status when power-key is one-touch type
                    stGUD1.FUNCTION &= 0xf7;
                    Save_GUD1();
                    Delay_Xms(10);
#endif
                }

                bNotify_Timer0_Int  = 0;

//               continue;   // leave current iteration.
                 return _TRUE;
            }
            else if (NOTIFY_POWERDOWN == Notify)
            {
#if (POWER_KEY_TYPE == TYPE_ONE_TOUCH)
                // Save power status when power-key is one-touch type
                stGUD1.FUNCTION |= 0x08;
                Save_GUD1();
                Delay_Xms(10);
#endif
                bPower_Status   = 0;

                Set_Panel(0);                   // Turn off panel

                RTDSetByte(HOSTCTRL_02, 0x42);  // Set RTD to power-saving

                I2CWrite(V_DISABLE);

                PowerDown_ADC();
                PowerDown_VDC();
                PowerDown_TMDS();
				

                Delay_Xms(250);
                Delay_Xms(250);
                Delay_Xms(250);
                Delay_Xms(250);
                Delay_Xms(250);

                Set_Task(STATE_POWERDOWN);      // Notify Task State Machine

                bNotify_Timer0_Int  = 0;

                //continue;   // leave current iteration.
				return _TRUE;
            }
			return _FALSE;
}

⌨️ 快捷键说明

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