我想要通过显示屏设置系统的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
} |