从单片机基础到程序框架(全集 2019pdf版).pdf - 第634页

break; case 2: //在第 2 个窗口 下编辑 Gu 8SetData_2 数据 if(Gu8Se tData_2>0) //把最小范围 限定在 0 { Gu8SetDa ta_2--; } Gu8WdUpd ate=1; //整屏更 新一次显示 break; case 3: //在第 3 个窗口 下编辑 Gu 8SetData_3 数据 if(Gu8Se tData_3>0) //把最小范围 限定在 0 { G…

100%1 / 836
case 1: //在第 1 个窗口下编辑 Gu8SetData_1 数据
Gu8SetData_1++;
if(Gu8SetData_1>99) //把最大范围限定在 99
{
Gu8SetData_1=99;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 2: //在第 2 个窗口下编辑 Gu8SetData_2 数据
Gu8SetData_2++;
if(Gu8SetData_2>99) //把最大范围限定在 99
{
Gu8SetData_2=99;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 3: //在第 3 个窗口下编辑 Gu8SetData_3 数据
Gu8SetData_3++;
if(Gu8SetData_3>99) //把最大范围限定在 99
{
Gu8SetData_3=99;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
case 3: //递减的按键
switch(Gu8Wd) //以窗口选择 Gu8Wd 为支点,去编辑对应的数据。又一次用到 switch 语句
{
case 1: //在第 1 个窗口下编辑 Gu8SetData_1 数据
if(Gu8SetData_1>0) //把最小范围限定在 0
{
Gu8SetData_1--;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 2: //在第 2 个窗口下编辑 Gu8SetData_2 数据
if(Gu8SetData_2>0) //把最小范围限定在 0
{
Gu8SetData_2--;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 3: //在第 3 个窗口下编辑 Gu8SetData_3 数据
if(Gu8SetData_3>0) //把最小范围限定在 0
{
Gu8SetData_3--;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
}
}
void DisplayTask(void) //数码管显示的上层任务函
{
switch(Gu8Wd) //以窗口选择 Gu8Wd 为支点,去执行对应的窗口显示函数。又一次用到 switch 语句
{
case 1:
Wd1(); //窗口 1 显示函数
break;
case 2:
Wd2(); //窗口 2 显示函数
break;
case 3:
Wd3(); //窗口 3 显示函数
break;
}
}
void Wd1(void) //窗口 1 显示函数
{
//需要借用的中间变量,用来拆分数据位。
static unsigned char Su8Temp_4,Su8Temp_3,Su8Temp_2,Su8Temp_1; //需要借用的中间变
if(1==Gu8WdUpdate) //如果需要整屏更新
{
Gu8WdUpdate=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_4=1; //窗口“1
Su8Temp_3=11; //横杠“-”
Su8Temp_2=Gu8SetData_1/10%10; //十位数
Su8Temp_1=Gu8SetData_1/1%10; //个位数值
//上面先分解数据之后,再过渡需要显示的数据到底层驱动变量里,让过渡的时间越短越好
vGu8Display_Righ_4=Su8Temp_4; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_3=Su8Temp_3;
vGu8Display_Righ_2=Su8Temp_2;
vGu8Display_Righ_1=Su8Temp_1;
//不显示任何一个小数点
vGu8Display_Righ_Dot_4=0;
vGu8Display_Righ_Dot_3=0;
vGu8Display_Righ_Dot_2=0;
vGu8Display_Righ_Dot_1=0;
}
}
void Wd2(void) //窗口 2 显示函数
{
//需要借用的中间变量,用来拆分数据位。
static unsigned char Su8Temp_4,Su8Temp_3,Su8Temp_2,Su8Temp_1; //需要借用的中间变
if(1==Gu8WdUpdate) //如果需要整屏更新
{
Gu8WdUpdate=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_4=2; //窗口“2
Su8Temp_3=11; //横杠“-”
Su8Temp_2=Gu8SetData_2/10%10; //十位数
Su8Temp_1=Gu8SetData_2/1%10; //个位数值
//上面先分解数据之后,再过渡需要显示的数据到底层驱动变量里,让过渡的时间越短越好