打印

关于LCD程序的问题,请高人指导

[复制链接]
1735|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shella|  楼主 | 2010-3-22 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想要通过显示屏设置系统的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[2];
a[0]=fun/10;
a[1]=fun%10;
p=a;
LCDMidDispCharacters(4,"定排工作时间:(s)",16);     //显示汉字
LCDMidBlackDispCharacters(8,*p,2);                    //显示time_DP_work
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

粉丝