动态显示待机LOGO的做法 && 刷LOGO出现的问题

来源:互联网 发布:电视机怎么连接网络 编辑:程序博客网 时间:2024/04/23 21:02

        我们在做一些产品时,比如液晶显示器的NO SIGNAL待机画面、液晶电视的无电视信号画面等,都需要给出用户一个提示画面在屏幕上随机的动态的显示,这个做法列出如下。注意:以下的显示是固定从左上角开始向右向下移动,移到边框后就反弹回去。如果是随机的显示LOGO画面,用一个rand函数提供位置种子就可以了。
void DispProtec()
{
       int startX = 0,startY = 0; //左上角座标(0,0)
       int BMPWidth = 24,BMPHight = 16; //屏保图片大小
       int LCDWidth = 1024,intLCDHight = 768; //屏幕边框
       int Xstep = 4,Ystep = 4;  //跳动步长
       int XDirect = 1,YDirect = 1; //假设运动方向为右方和方下方为正,左方和上方为负。
       for()  //循环,除非退出屏保。
       {
               BMPDiplay(startX,startY); //刷屏
               SleepMs(3000); //每3秒刷一次
               if(XDirect == 1) //屏保向右移动
               {
                        if((startX + BMPWidth )>LCDWidth) //如果图片已移到最右边
                        {
                                XDirect = -1;   //图片开始向左
                        }
                        else
                        {
                                 startX += Xstep;   //图片向右加步长
                        }
                }
                if(XDirect == -1) //屏保向左移动
                {
                        if(startX< 0) //如果图片已移到最左边
                        {
                                  XDirect = 1;  //图片开始向右
                        }
                        else
                        {
                                  startX -= Xstep;  //图片向左减步长
                        }
                }
  
                if(YDirect == 1) //屏保向下移动
                {
                        if((startY + BMPHight )>intLCDHight) //如果图片已移到最下边
                        {
                                   YDirect = -1;   //图片开始向上
                        }
                        else
                        {
                                   startY += Ystep;   //图片向下加步长
                        }
               }
               if(YDire ct == -1) //屏保向上移动
               {
                         if(startY< 0) //如果图片已移到最上边
                         {
                                    XDirect = 1;  //图片开始向下
                         }
                         else
                         {
                                    startY -= Ystep;  //图片向上减步长
                         }
               }
        }
}
===================================================================================================================

       在做手机关机时充电画面的动态显示时,发现一个问题。画面替换时有时会花屏,有时会卡住,另一个较为不解的问题是:按电源键唤醒屏幕后,显示的第一个画面没有对应当前电池度量,而是之前熄屏时显示画面的下一个画面,推测是图像RAM有残留导致。

  为什么会有这个问题?应该是跟屏供电有关系,在以前的印象中,刷屏的次序是:刷图像RAM-》屏供电-》背光供电;但是对于有些接口的屏,如果不给屏供电,刷图像RAM是不成功的,这会导致很多意外的刷屏现象,比如花屏。这也可以解释上面那个不解的问题:由于缓冲原因,刷图像时的RAM中保存有LCD当前显示的下一幅画面,背光灭掉后此RAM还是存在的,在下次按电源键唤醒屏幕时,由于屏还没有供电所以第一次刷图像是不成功,亮背光后显示的是之前RAM保存的那副,也就是第一幅被RAM保存的那副覆盖掉了。

  所以只要调换上电顺序,做到屏供电-》刷图像RAM-》背光供电,或者屏供电-》背光供电-》刷图像RAM,即可解决上述问题。

原创粉丝点击