shella 发表于 2010-3-22 13:37

怎样尽量减少LCD刷屏,请高人指导

我想要通过显示屏设置系统的time_DP_work,按我现在的方法,time_DP_work每增加1,就调用一次lcd_time_DP_work(unsigned char fun),相当于就刷一次屏,想请问有没有什么办法只让time_DP_work(数字)变化,其他部分不闪

程序如下:

void set_time_DP_work()//time_DP_work设置
{
unsigned char time_DP_work=Time_DP_work0;//取EEPROM的数据
lcd_time_DP_work(time_DP_work);//调用LCD屏函数
bit time_DP_work_flag=1;//退出设置标志,0为退出设置,1为正在设置
while(time_DP_work_flag)
{
    if(TM00_20ms_flag)   //每20ms按键扫描一次
{
      scan_key();    //按键扫描
      if(keyshort==UPkey&&keydown_flag)   //加1键被按下
      {
      time_DP_work++;
      keydown_flag=0;
      lcd_time_DP_work(time_DP_work);//调用LCD程序
      }//如上,我每按一次键,就调用一次LCD程序,这样刷屏太厉害了,请问各位有没有更好的办法

   if(keyshort==DOWNkey&&keydown_flag)//减1键被按下
   {
time_DP_work--;
if(time_DP_work<0)
time_DP_work=0;
keydown_flag=0;
lcd_time_DP_work(time_DP_work);
   }

   if(keyshort==ENTkey&&keydown_flag)//确认键被按下
   {
   Time_DP_work0=time_DP_work;
keydown_flag=0;
time_DP_work_flag=0;
//Write_EEPROM(Time_DP_work0,6);
   }

   if(keyshort==ESCkey&&keydown_flag)//退出键被按下
   {
   keydown_flag=0;
time_DP_work_flag=0;
   }
   if((keyport0&keyport1)==0xf0)
   reset_keycounter();   
}

}
}


void lcd_time_DP_work(unsigned char fun)
{
GUI_SetDoubleChart();
GUI_DrawSecondFrame();//画框架
unsigned char *p;
unsigned char a;
a=fun/10;
a=fun%10;
p=a;
LCDMidDispCharacters(4,"定排工作时间:(s)",16);   //显示汉字
LCDMidBlackDispCharacters(8,*p,2);                  //显示time_DP_work
}

txrfid 发表于 2010-3-22 14:43

回头试试看准确不

shella 发表于 2010-3-22 14:54

哪位大虾指点一下啊

loveelectric 发表于 2010-3-22 15:40

你只需更新数据,即在原来的数据位置上,写入新的数据。
再明白点 就是定位显示数据。

shella 发表于 2010-3-24 11:09

怎样定位显示数据呢?直接设定光标地址,然后写入需要更新的数据,这样可以吗?我现在手头上没屏,所以没法试~~~

shella 发表于 2010-3-26 13:03

虽然还没试过,不过谢谢4楼的回答,让我一直没转弯的脑子拧过来了 4# loveelectric

liuwei0908 发表于 2010-4-7 13:32

用软件实现丛 主屏 到 子屏

yinchunhua 发表于 2010-4-16 11:35

定位显示对的,或者设计为主屏和子屏
页: [1]
查看完整版本: 怎样尽量减少LCD刷屏,请高人指导