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

void Wd1(v oid) //窗口 1 显示函数 { //需要 借用的中间变 量,用来拆分 数据位。 static u nsigned ch ar Su8Temp_ 4,Su8Temp_3 ,Su8Temp_2 ,Su8Temp_1; //需要 借用的中间变 量 if(1==Gu 8WdUpdate) //如果需要整 屏更新 { Gu8WdUpd ate=0; //及 时清零, 只更新一次显 示即可,避免 一直进来更 新显示 Su…

100%1 / 836
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; //个位数值
//上面先分解数据之后,再过渡需要显示的数据到底层驱动变量里,让过渡的时间越短越好
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 Wd3(void) //窗口 3 显示函数
{
//需要借用的中间变量,用来拆分数据位。
static unsigned char Su8Temp_4,Su8Temp_3,Su8Temp_2,Su8Temp_1; //需要借用的中间变
if(1==Gu8WdUpdate) //如果需要整屏更新
{
Gu8WdUpdate=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_4=3; //窗口“3
Su8Temp_3=11; //横杠“-”
Su8Temp_2=Gu8SetData_3/10%10; //十位数
Su8Temp_1=Gu8SetData_3/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 KeyScan(void) //按键底层的驱动扫描函数,放在定时中断函数
{
static unsigned char Su8KeyLock1;