怎样尽量减少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
}
回头试试看准确不 哪位大虾指点一下啊 你只需更新数据,即在原来的数据位置上,写入新的数据。
再明白点 就是定位显示数据。 怎样定位显示数据呢?直接设定光标地址,然后写入需要更新的数据,这样可以吗?我现在手头上没屏,所以没法试~~~ 虽然还没试过,不过谢谢4楼的回答,让我一直没转弯的脑子拧过来了 4# loveelectric 用软件实现丛 主屏 到 子屏 定位显示对的,或者设计为主屏和子屏
页:
[1]