📄 menu.c
字号:
uchar ud=0;
if(TI==1)
;
else
{ if(RI==1)
{
// qi++;
switch(qi)
{
case 0:
adtemp[0][address].adh=SBUF; //这里应该与上一个数
qi++;
se=0;
break;
case 1:
adtemp[0][address].adl=SBUF;
se=0;
qi++;
break;
case 2:
adtemp[0][address].adig=SBUF;
se=0;
qi++;
break;
case 3:
ud=SBUF;
if(adtemp[0][address].adh+adtemp[0][address].adl+adtemp[0][address].adig==ud)
{
se=1;
ms6=1;
qi=0;
}
break;
}
RI=0;
}
}
}
void goback(uchar addr,uchar lcd[16])
{ uchar i;
write(addr,0);
for(i=0;i<16;i++)
write(lcd[i],1);
}
void lcdwr(uchar addr,uchar lcd0[8],uchar lcdv[8])
{ uchar i;
write(addr,0);
for(i=0;i<16;i++)
{
if(i<8)
write(lcd0[i],1);
else
write(lcdv[i-8],1);
}
}
void main(void)
{ uchar i,j,led,mul;
uint n;
//***********************************************************************************//
{ //一般的初始化
SP=0xdd;
con=0; // 开液晶屏
cs=1; // iic eeprom 有效
delay(100);
disinit(); //液晶显示初始化
write(0x90,0);
for(i=0;i<16;i++)
write(lcd12[i],1);
} // 一般的初始化结束
delay6ms(100);
point2=eepread(0x7f,0xff);
point2<<=8;
point2=point2|eepread(0x7f,0xfe);
point1=(point2-0x78)%0x7fef;
which=eepread(0x7f,0xfb); //读出上次掉电前转换的是哪一路
select=eepread(0x7f,0xfa);//读出上次掉电前是什么模式
pause=eepread(0x7f,0xf8); //初始值可以写进去
n=point1;
//****************************************读出数据最后一次写入的10点数据***********************************//
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
for(i=7;i<14;i++)
for(j=0;j<4;j++)
{
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
maxinit();//总线485通信初始化
ET0=1; //定时器0中断关掉
TR0=1;
IE0=0;
EX0=1; //kai wai bu zhong duan
select=1;
pause=0;
mul=which; //显示上次显示的路
state=0;
while(1)
{ //ms2=1;
switch(state)
{//0 主界面
case 0:
goback(0x80,lcd20);//80 qing pin 空行
goback(0x90,lcd0); //实时监控
goback(0x88,lcd8); //历史浏览
goback(0x98,lcd9); //空行
led=key();
if(led==0xff)
break;
else
{
if(led==10)
{ led=0xff;
state=1; // jin ru 实时监控界面
break;
}
else
{
if(led==11)
{
led=0xff;
state=2;//进入选择历史点数据界面
break;
}
if(led==9)
{ led=0xff;
//IE0=1;
con=1;
break;
}
else
if(led==8)
{
led=0xff;
con=0;
}
else
break;
}
}
case 1: //实时监控里面的选择界面
goback(0x80,lcd7); //空行
goback(0x90,lcd10); //轮流显示
goback(0x88,lcd11); //可选显示
goback(0x98,lcd4); //返回上级
led=key();
if(led==9)
{ led=0xff;
i=0;
state=3; //实时监控里面的轮流显示界面
break;
}
else
{
if(led==10)
{
led=0xff;
mulb=0;
state=4;//实时监控里面的固定显示界面
break;
}
else
{
if(led==11)
{
led=0xff;
state=0; //返回上级
break;
}
else
break;
}
}
case 2: //选择那一点的历史数据界面
goback(0x80,lcd13);
goback(0x90,lcd6);
goback(0x88,lcd14);
goback(0x98,lcd4);
led=key();
if(led==0xff||led==10) //返回
{
led=0xff;
break;
}
else
if(led==11) //返回上级
{ led=0xff;
state=0;
break;
}
else
{ //把选择的数带过去
mulk=led;
led=0xff;
state=5;// 进入另一界面来选择固定或者轮流显示
break;
}
break;
case 3: //实时监控轮流显示
if(ms2==1)
{
ms2=0;
dis[0]=0x30+i;
//dis[0]=0x20;
dis[1]=0x20;
dis[2]=0x20;
dis[3]=0x20;
dis[4]=0x20;
dis[5]=0x20;
dis[6]=0x20;
dis[7]=0x20;
lcdwr(0x80,lcd15,dis);
dis[0]=temp[i].adh/10+0x30;
dis[1]='.';
dis[2]=temp[i].adh%10+0x30;
dis[3]=temp[i].adl/10+0x30;
dis[4]=temp[i].adl%10+0x30;
dis[5]='(';
dis[6]='V';
dis[7]=')';
lcdwr(0x90,lcd16,dis);
dis[0]=0x30+temp[i].adig;
//dis[0]=' ';
dis[1]=' ';
dis[2]=' ';
dis[3]=' ';
dis[4]=' ';
dis[5]=' ';
dis[6]=' ';
dis[7]=' ';
lcdwr(0x88,lcd17,dis);
goback(0x98,lcd4);
i++;
i=i%4;
}
led=key();
if(led==11)
{ state=1;
led=0xff;
break;
}
else
break;
case 4:
if(ms2==1)
{
ms2=0;
dis[0]=0x30+mulb;
//dis[0]=' ';
dis[1]=' ';
dis[2]=' ';
dis[3]=' ';
dis[4]=' ';
dis[5]=' ';
dis[6]=' ';
dis[7]=' ';
//dis[]=temp[i].adg+0x30;
lcdwr(0x80,lcd15,dis);
dis[0]=temp[mulb].adh/10+0x30;
dis[1]='.';
dis[2]=temp[mulb].adh%10+0x30;
dis[3]=temp[mulb].adl/10+0x30;
dis[4]=temp[mulb].adl%10+0x30;
dis[5]='(';
dis[6]='V';
dis[7]=')';
lcdwr(0x90,lcd16,dis);
dis[0]=0x30+temp[mulb].adig;
//dis[0]=' ';
dis[1]=' ';
dis[2]=' ';
dis[3]=' ';
dis[4]=' ';
dis[5]=' ';
dis[6]=' ';
dis[7]=' ';
lcdwr(0x88,lcd17,dis);
goback(0x98,lcd5);
}
led=key();
if(led==11)
{ state=1;
led=0xff;
break;
}
else
if(led==0||led==1||led==2||led==3)
{
mulb=led;
led=0xff;
break;
}
else
{
led=0xff;
break;
}
case 5:
goback(0x80,lcd18);
goback(0x90,lcd10);
goback(0x88,lcd11);
goback(0x98,lcd4);
led=key();
if(led==8)
{
ET0=0;
n=point1;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ // addate[10][4];
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
for(i=7;i<14;i++)
for(j=0;j<4;j++)
{
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
ET0=1;
led=0xff;
for(i=0;i<2;i++)
{
goback(0x80,lcd19);
delay(250);
delay(250);
delay(250);
goback(0x80,lcd7);
delay(250);
delay(250);
delay(250);
}
goback(0x80,lcd18);
}
if(led==9)
{ led=0xff;
i=0;
state=6; //历史数据里面的轮流显示界面
break;
}
else
if(led==10)
{ led=0xff;
mulb=0;
state=7;//历史数据里面的固定显示界面
break;
}
else
if(led==11)
{
led=0xff;
state=2;
break;
}
break;
case 6: //lun liu xian shi
if(ms2==1)
{
ms2=0;
dis[0]=0x30+i;
dis[1]=0x20;//'p';
dis[2]=0xc0;//'o';
dis[3]=0xfa;//'i';
dis[4]=0xca;//'n';
dis[5]=0xb7;//'t';
dis[6]=':';
dis[7]=0x30+mulk;
lcdwr(0x80,lcd15,dis);
dis[0]=addate[mulk][i].adh/10+0x30;
dis[1]='.';
dis[2]=addate[mulk][i].adh%10+0x30;
dis[3]=addate[mulk][i].adl/10+0x30;
dis[4]=addate[mulk][i].adl%10+0x30;
dis[5]='(';
dis[6]='V';
dis[7]=')';
lcdwr(0x90,lcd16,dis);
dis[0]=0x30+addate[mulk][i].adig;
dis[1]=' ';
dis[2]=' ';
dis[3]=' ';
dis[4]=' ';
dis[5]=' ';
dis[6]=' ';
dis[7]=' ';
lcdwr(0x88,lcd17,dis);
goback(0x98,lcd4);
i++;
i=i%4;
}
led=key();
if(led==11)
{ state=5;
led=0xff;
break;
}
else
break;
;
break;
case 7:
if(ms2==1)
{
ms2=0;
dis[0]=0x30+mulb;
//dis[0]=0x30+i;
dis[1]=0x20;//'p';
dis[2]=0xc0;//'o';
dis[3]=0xfa;//'i';
dis[4]=0xca;//'n';
dis[5]=0xb7;//'t';
dis[6]=':';
dis[7]=0x30+mulk;
lcdwr(0x80,lcd15,dis);
dis[0]=addate[mulk][mulb].adh/10+0x30;
dis[1]='.';
dis[2]=addate[mulk][mulb].adh%10+0x30;
dis[3]=addate[mulk][mulb].adl/10+0x30;
dis[4]=addate[mulk][mulb].adl%10+0x30;
dis[5]='(';
dis[6]='V';
dis[7]=')';
lcdwr(0x90,lcd16,dis);
dis[0]=0x30+addate[mulk][mulb].adig;
dis[1]=' ';
dis[2]=' ';
dis[3]=' ';
dis[4]=' ';
dis[5]=' ';
dis[6]=' ';
dis[7]=' ';
lcdwr(0x88,lcd17,dis);
goback(0x98,lcd5);
}
led=key();
if(led==11)
{ state=5;
led=0xff;
break;
}
else
if(led==0||led==1||led==2||led==3)
{
mulb=led;
led=0xff;
break;
}
else
{
led=0xff;
break;
}
break;
} //switch
} // while
}//main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -