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

if(1==Gu 8WdUpdate) //如果需要整 屏更新 { Gu8WdUpd ate=0; //及 时清零, 只更新一次显 示即可,避免 一直进来更 新显示 //属于 静态数据,起“ 装饰”作用 ,切换窗口 后只扫描 一次的代码。 vGu8Disp lay_Righ_4= 1; //显示数字“1 ” vGu8Disp lay_Righ_3= 11; //显示 横杠“-” vGu8Disp lay_Righ_Do t_4=0; v…

100%1 / 836
Gu8PartUpdate_1=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_4=vGu32ClockTimerCnt/3600000/10; //时的十位
Su8Temp_3=vGu32ClockTimerCnt/3600000%10; //时的个位
Su8Temp_2=vGu32ClockTimerCnt%3600000/60000/10; //分的十位
Su8Temp_1=vGu32ClockTimerCnt%3600000/60000%10; //秒的个位
//小数点的闪烁
if(0==Su8BlinkFlag)
{
Su8BlinkFlag=1;
vGu8Display_Righ_Dot_3=1; //显示第 2 位小数点。
}
else
{
Su8BlinkFlag=0;
vGu8Display_Righ_Dot_3=0; //不显示第 2 位小数点
}
vGu8Display_Righ_4=Su8Temp_4; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_3=Su8Temp_3; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_2=Su8Temp_2; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_1=Su8Temp_1; //过渡需要显示的数据到底层驱动变量
}
if(0==vGu16UpdateTimerCnt) //每隔 500ms 就更新显示一次数据和闪烁的的小数点
{
vGu8UpdateTimerFlag=0;
vGu16UpdateTimerCnt=500; //重设定时器的定时时间
vGu8UpdateTimerFlag=1;
Gu8PartUpdate_1=1; //局 1 更新显示
}
}
void Wd2(void) //窗口 2。修改“时”的“1-HH”窗口
{
//需要借用的中间变量,用来拆分数据位。
static unsigned char Su8Temp_2,Su8Temp_1; //需要借用的中间变
static unsigned char Su8BlinkFlag=0; //两种状态的切换判断的中间变量
if(1==Gu8WdUpdate) //如果需要整屏更新
{
Gu8WdUpdate=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
//属于静态数据,起“装饰”作用,切换窗口后只扫描一次的代码。
vGu8Display_Righ_4=1; //显示数字“1
vGu8Display_Righ_3=11; //显示横杠“-”
vGu8Display_Righ_Dot_4=0;
vGu8Display_Righ_Dot_3=0;
vGu8Display_Righ_Dot_2=0;
vGu8Display_Righ_Dot_1=0;
Gu8PartUpdate_1=1; //局部 1 更新显示
}
if(1==Gu8PartUpdate_1) //局部 1 更新显示
{
Gu8PartUpdate_1=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_2=Gu8EditData_1/10; //显示“时”的十位
Su8Temp_1=Gu8EditData_1%10; //显示“时”的个位
vGu8Display_Righ_2=Su8Temp_2; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_1=Su8Temp_1; //过渡需要显示的数据到底层驱动变量
}
if(0==vGu16BlinkTimerCnt) //某位被选中的数码管跳动闪烁的定时器
{
vGu8BlinkTimerFlag=0;
vGu16BlinkTimerCnt=BLINK_TIME; //重设定时器的定时时间
vGu8BlinkTimerFlag=1;
if(0==Su8BlinkFlag) //两种状态的切换判
{
Su8BlinkFlag=1;
Su8Temp_2=10; //10 代表不显示
Su8Temp_1=10; //10 代表不显示
}
else
{
Su8BlinkFlag=0;
Su8Temp_2=Gu8EditData_1/10; //显示“时”的十
Su8Temp_1=Gu8EditData_1%10; //显示“时”的个
}
vGu8Display_Righ_2=Su8Temp_2; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_1=Su8Temp_1; //过渡需要显示的数据到底层驱动变量
}
}
void Wd3(void) //窗口 3。修改“分”的“2-MM”窗口
{
//需要借用的中间变量,用来拆分数据位。
static unsigned char Su8Temp_2,Su8Temp_1; //需要借用的中间变
static unsigned char Su8BlinkFlag=0; //两种状态的切换判断的中间变量
if(1==Gu8WdUpdate) //如果需要整屏更新
{
Gu8WdUpdate=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
//属于静态数据,起“装饰”作用,切换窗口后只扫描一次的代码。
vGu8Display_Righ_4=2; //显示数字“2
vGu8Display_Righ_3=11; //显示横杠“-”
vGu8Display_Righ_Dot_4=0;
vGu8Display_Righ_Dot_3=0;
vGu8Display_Righ_Dot_2=0;
vGu8Display_Righ_Dot_1=0;
Gu8PartUpdate_1=1; //局部 1 更新显示
}
if(1==Gu8PartUpdate_1) //局部 1 更新显示
{
Gu8PartUpdate_1=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
Su8Temp_2=Gu8EditData_2/10; //显示“分”的十位
Su8Temp_1=Gu8EditData_2%10; //显示“分”的个位
vGu8Display_Righ_2=Su8Temp_2; //过渡需要显示的数据到底层驱动变量
vGu8Display_Righ_1=Su8Temp_1; //过渡需要显示的数据到底层驱动变量
}
if(0==vGu16BlinkTimerCnt) //某位被选中的数码管跳动闪烁的定时器