从单片机基础到程序框架(全集 2019pdf版) - 第673页
void Wd2(v oid) //窗口 2 显示函数 { //需要 借用的中间变 量,用来拆分 数据位。 static u nsigned ch ar Su8Temp_ 4,Su8Temp_3 ,Su8Temp_2 ,Su8Temp_1; //需要 借用的中间变 量 static u nsigned ch ar Su8Blink Flag=0; //两种 状态的切换判 断的中间 变量 if(1==Gu 8WdUpdate) //如果需…

vGu16BlinkTimerCnt=BLINK_TIME; //重设定时器的定时时间
vGu8BlinkTimerFlag=1;
switch(Gu8Part) //某个局部被选中,则闪烁跳动
{
case 1:
if(0==Su8BlinkFlag) //两种状态的切换判断
{
Su8BlinkFlag=1;
Su8Temp_2=10; //左起第 3 个显示“不显示”(10 代表不显示)
}
else
{
Su8BlinkFlag=0;
Su8Temp_2=Gu8EditData_2; //显示“十位”的临时中间个体,属于动态数据。
}
break;
case 2:
if(0==Su8BlinkFlag) //两种状态的切换判断
{
Su8BlinkFlag=1;
Su8Temp_1=10; //左起第 4 个显示“不显示”(10 代表不显示)
}
else
{
Su8BlinkFlag=0;
Su8Temp_1=Gu8EditData_1; //显示“个位”的临时中间个体,属于动态数据。
}
break;
default: //都没有被选中的时候
Su8Temp_2=Gu8EditData_2; //显示“十位”的临时中间个体,属于动态数据。
Su8Temp_1=Gu8EditData_1; //显示“个位”的临时中间个体,属于动态数据。
break;
}
vGu8Display_Righ_2=Su8Temp_2; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_1=Su8Temp_1; //过渡需要显示的数据到底层驱动变量
}
}

void Wd2(void) //窗口 2 显示函数
{
//需要借用的中间变量,用来拆分数据位。
static unsigned char Su8Temp_4,Su8Temp_3,Su8Temp_2,Su8Temp_1; //需要借用的中间变量
static unsigned char Su8BlinkFlag=0; //两种状态的切换判断的中间变量
if(1==Gu8WdUpdate) //如果需要整屏更新
{
Gu8WdUpdate=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_4=2; //左起第 1 位数码管,显示窗口“2”,属于静态数据,起“装饰”作用。
Su8Temp_3=11; //左起第 2 位数码管,显示横杠“-”,属于静态数据,起“装饰”作用。
vGu8Display_Righ_4=Su8Temp_4; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_3=Su8Temp_3; //过渡需要显示的数据到底层驱动变量
//不显示任何一个小数点,属于静态数据,起“装饰”作用,切换窗口后只扫描一次的代码。
vGu8Display_Righ_Dot_4=0;
vGu8Display_Righ_Dot_3=0;
vGu8Display_Righ_Dot_2=0;
vGu8Display_Righ_Dot_1=0;
Gu8PartUpdate_1=1; //局部 1 更新显示
Gu8PartUpdate_2=1 ;//局部 2 更新显示
}
if(1==Gu8PartUpdate_1) //局部 1 更新显示
{
Gu8PartUpdate_1=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_2=Gu8EditData_2; //显示“十位”的临时中间个体,属于动态数据。
vGu8Display_Righ_2=Su8Temp_2; //过渡需要显示的数据到底层驱动变量
}
if(1==Gu8PartUpdate_2) //局部 2 更新显示
{
Gu8PartUpdate_2=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_1=Gu8EditData_1; //显示“个位”的临时中间个体,属于动态数据。
vGu8Display_Righ_1=Su8Temp_1; //过渡需要显示的数据到底层驱动变量

}
if(0==vGu16BlinkTimerCnt) //某位被选中的数码管跳动闪烁的定时器
{
vGu8BlinkTimerFlag=0;
vGu16BlinkTimerCnt=BLINK_TIME; //重设定时器的定时时间
vGu8BlinkTimerFlag=1;
switch(Gu8Part) //某个局部被选中,则闪烁跳动
{
case 1:
if(0==Su8BlinkFlag) //两种状态的切换判断
{
Su8BlinkFlag=1;
Su8Temp_2=10; //左起第 3 个显示“不显示”(10 代表不显示)
}
else
{
Su8BlinkFlag=0;
Su8Temp_2=Gu8EditData_2; //显示“十位”的临时中间个体,属于动态数据。
}
break;
case 2:
if(0==Su8BlinkFlag) //两种状态的切换判断
{
Su8BlinkFlag=1;
Su8Temp_1=10; //左起第 4 个显示“不显示”(10 代表不显示)
}
else
{
Su8BlinkFlag=0;
Su8Temp_1=Gu8EditData_1; //显示“个位”的临时中间个体,属于动态数据。
}
break;
default: //都没有被选中的时候
Su8Temp_2=Gu8EditData_2; //显示“十位”的临时中间个体,属于动态数据。
Su8Temp_1=Gu8EditData_1; //显示“个位”的临时中间个体,属于动态数据。
break;
}