SuperIC社区_

标题: DPWM方式控制背光 [打印本页]

作者: MingLiu    时间: 2016-10-31 21:01
标题: DPWM方式控制背光
平台:MST70x
原来的背光调节方式客户反馈在室外亮度值调到50以上就发白。亮度值共有100。要求用DPWM来控制背光。这样亮度调高不会发白。

void msAdjustBrightness(BYTE brightness)
{
        BYTE ucBank = msReadByte( BK0_00_REGBK);
               
        {
        msWriteByte(BK0_00_REGBK, REG_BANK4_LVDS_CCFL);
        msWriteByte(BK4_6B, 0x80);

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

        msWriteByte(BK4_6B, 0x00);
        //msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);

       

       msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
         msWriteBit(BK0_58_BRIGHTNESS_EN, 1,BRI_EN_B);

                 msWriteByte(BK0_59_BRI_R, 0x73);
                msWriteByte(BK0_5B_BRI_B, 0x73);
                msWriteByte(BK0_5A_BRI_G, 0x73);
       
}
     msWriteByte(BK0_00_REGBK, ucBank);
}

BOOL AdjustBrightness(MenuItemActionType action)
{
    WORD tempValue;

    if(IsVideoPortInUse()||IsCCIR656InUse())
    {
        tempValue=DecIncValue(action, g_VideoSetting.VideoBrightness, MinDefVideoBrightness, MaxDefVideoBrightness, 1);
        if (tempValue==g_VideoSetting.VideoBrightness)
            return FALSE;
        g_VideoSetting.VideoBrightness=tempValue;
          //  printf("\r\tempValue=%d\n",tempValue);
        tempValue=usrNonLinearCalculate(g_NLCBrightness,tempValue);
                 ///   printf("\r\calculate =%d\n",tempValue);

        msAdjustBrightness(tempValue);
    }
    #if YPBPR_ENABLE
    else if(IsYPbPrInUse())
    {
        tempValue=DecIncValue(action, g_YPbPrSetting.Brightness, MinDefYPbPrBrightness, MaxDefYPbPrBrightness, 1);
        if (tempValue==g_YPbPrSetting.Brightness)
            return FALSE;
        g_YPbPrSetting.Brightness=tempValue;

        tempValue=usrNonLinearCalculate(g_NLCBrightness,tempValue);
        msAdjustBrightness(tempValue);
    }
    #endif
    else
    {
        tempValue=DecIncValue(action, g_PcSetting.Brightness, MinDefBrightness, MaxDefBrightness, 1);
        if (tempValue==g_PcSetting.Brightness)
            return FALSE;
        g_PcSetting.Brightness=tempValue;

        tempValue=usrNonLinearCalculate(g_NLCBrightness,tempValue);
        msAdjustBrightness(tempValue);
    }
    return TRUE;
}













欢迎光临 SuperIC社区_ (/) Powered by Discuz! X3.3