}
/* 注释一:
*鸿哥首次提出的"一二级菜单显示理论":
*凡是人机界面显示,不管是数码管还是液晶屏,都可以把显示的内容分成不同的窗口来显示,
*每个显示的窗口中又可以分成不同的局部显示。其中窗口就是一级菜单,用ucWd变量表示。
*局部就是二级菜单,用ucPart来表示。不同的窗口,会有不同的更新显示变量ucWdXUpdate来对应,
*表示整屏全部更新显示。不同的局部,也会有不同的更新显示变量ucWdXPartYUpdate来对应,表示局部更新显示。
*/
void display_service() //显示的窗口菜单服务程序
{
switch(ucWd)//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
{
case 1: //显示P--1窗口的数据
if(ucWd1Update==1)//窗口1要全部更新显示
{
ucWd1Update=0;//及时清零标志,避免一直进来扫描
ucDigShow8=12;//第8位数码管显示P
ucDigShow7=11;//第7位数码管显示-
ucDigShow6=1; //第6位数码管显示1
ucDigShow5=10;//第5位数码管显示无
//先分解数据
ucTemp4=uiSetData1/1000;
ucTemp3=uiSetData1%1000/100;
ucTemp2=uiSetData1%100/10;
ucTemp1=uiSetData1%10;
//再过渡需要显示的数据到缓冲变量里,让过渡的时间越短越好
/* 注释二:
* 就是在这里略作修改,把高位为0的去掉不显示。
*/
if(uiSetData1<1000)
{
ucDigShow4=10;//如果小于1000,千位显示无
}
else
{
ucDigShow4=ucTemp4;//第4位数码管要显示的内容
}
if(uiSetData1<100)
{
ucDigShow3=10;//如果小于100,百位显示无
}
else
{
ucDigShow3=ucTemp3;//第3位数码管要显示的内容
}
if(uiSetData1<10)
{
ucDigShow2=10;//如果小于10,十位显示无
}
else
{
ucDigShow2=ucTemp2;//第2位数码管要显示的内容
}
ucDigShow1=ucTemp1;//第1位数码管要显示的内容
}
break;
case 2://显示P--2窗口的数据
if(ucWd2Update==1)//窗口2要全部更新显示
{
ucWd2Update=0;//及时清零标志,避免一直进来扫描
ucDigShow8=12;//第8位数码管显示P
ucDigShow7=11;//第7位数码管显示-
ucDigShow6=2;//第6位数码管显示2
ucDigShow5=10; //第5位数码管显示无
ucTemp4=uiSetData2/1000; //分解数据
ucTemp3=uiSetData2%1000/100;
ucTemp2=uiSetData2%100/10;
ucTemp1=uiSetData2%10;
if(uiSetData2<1000)
{
ucDigShow4=10;//如果小于1000,千位显示无
}
else
{
ucDigShow4=ucTemp4;//第4位数码管要显示的内容
}
if(uiSetData2<100)
{
ucDigShow3=10;//如果小于100,百位显示无
}
else
{
ucDigShow3=ucTemp3;//第3位数码管要显示的内容
}
if(uiSetData2<10)
{
ucDigShow2=10;//如果小于10,十位显示无
}
else
{
ucDigShow2=ucTemp2;//第2位数码管要显示的内容
}
ucDigShow1=ucTemp1;//第1位数码管要显示的内容
}
break;
case 3://显示P--3窗口的数据
if(ucWd3Update==1)//窗口3要全部更新显示
{
ucWd3Update=0;//及时清零标志,避免一直进来扫描
ucDigShow8=12;//第8位数码管显示P
ucDigShow7=11;//第7位数码管显示-
ucDigShow6=3;//第6位数码管显示3
ucDigShow5=10; //第5位数码管显示无
ucTemp4=uiSetData3/1000; //分解数据
ucTemp3=uiSetData3%1000/100;
ucTemp2=uiSetData3%100/10;
ucTemp1=uiSetData3%10;
if(uiSetData3<1000)
{
ucDigShow4=10;//如果小于1000,千位显示无
}
else
{
ucDigShow4=ucTemp4;//第4位数码管要显示的内容
}
if(uiSetData3<100)
{
ucDigShow3=10;//如果小于100,百位显示无
}
else
{
ucDigShow3=ucTemp3;//第3位数码管要显示的内容
}
if(uiSetData3<10)
{
ucDigShow2=10;//如果小于10,十位显示无
}
else
{
ucDigShow2=ucTemp2;//第2位数码管要显示的内容
}
ucDigShow1=ucTemp1;//第1位数码管要显示的内容
}
break;
case 4://显示P--4窗口的数据
if(ucWd4Update==1)//窗口4要全部更新显示
{
ucWd4Update=0;//及时清零标志,避免一直进来扫描
ucDigShow8=12;//第8位数码管显示P
ucDigShow7=11;//第7位数码管显示-
ucDigShow6=4;//第6位数码管显示4
ucDigShow5=10; //第5位数码管显示无
ucTemp4=uiSetData4/1000; //分解数据
ucTemp3=uiSetData4%1000/100;
ucTemp2=uiSetData4%100/10;
ucTemp1=uiSetData4%10;
if(uiSetData4<1000)
{
ucDigShow4=10;//如果小于1000,千位显示无
}
else
{
ucDigShow4=ucTemp4;//第4位数码管要显示的内容
}
if(uiSetData4<100)
{
ucDigShow3=10;//如果小于100,百位显示无
}
else
{
ucDigShow3=ucTemp3;//第3位数码管要显示的内容
}
|