while (ReadyToGo--) {
DisplaySingleChar(0x7,1,ReadyToGo+0x30); DisplaySingleChar(0x09,1,'s'); Delay(300);
}
WriteCmd(LCD_CLS);
DisplayString(0x05,0,\); Delay(100); WriteCmd(LCD_CLS);
DisplayString(0x0,0,\); DisplayString(0x0,1,\);
if (SelectedMode==Line&&AutoMode==0)
flag=Area0; else flag=1;
while(flag<5) { if(AutoMode==1)
{
switch(PassLineID) {
case0 :{ if(IsT0INT==1)
{P01=P02=P04=0;P03=1;} else
{P01=P02=P03=P04=0;}
}break;
case1 :{
P01=P02=P03=0;P04=1; }break; case2 :{
P01=P02=P04=0;P03=1;
}break; default :break;
}
}
else {
if(SelectedMode==Line)
{
//自动模式//直线模式
flag=Area0; if(IsT0INT==1)
{P03=1;P04=0;P01=P02=0;} {P03=0;P04=0;P01=P02=0;}
//S型模式
else }
else {
{
if(Backid==1)
{P01=1;P02=0;P03=0;P04=1;} else
{P01=0;P02=1;P03=0;P04=1;}
if((Nocurve<2)&&Round!=0&&(Back0>0)&&Back!=0)
Back=1; else {
if(Round==0) {
}
{
if(IsT0INT2==1)
{P01=0;P02=0;P03=1;P04=0;} {P01=0;P02=0;P03=0;P04=0;}
else
}
else {
if(P33==0) {
if(IsT0INT2==1)
{P01=0;P02=0;P03=1;P04=0;} else
{P01=0;P02=0;P03=0;P04=0;}
} else
EX1=1; if(Round%2)
if(IsT0INT2==1)
{
{P01=1;P02=0;P03=1;P04=0;Backid=1;} {P01=1;P02=0;P03=0;P04=0;}
}
else
}
else
{
if(IsT0INT2==1) else
{P01=0;P02=1;P03=1;P04=0;Backid=0;}
{P01=0;P02=1;P03=0;P04=0;}
}
}
}
} } }
if (IsT1INT==1) { }
IsT1INT=0; ComputeTime();
ComputeSpeedANDDistance();
//补中断路程,加上最后一次中断缺失的路程 ComputeSpeedANDDistance(); P04=1;P03=0;P01=P02=0;Delay(90); P03=0;P04=0; P31=1;
ET0=0x0; ET1=0x0; EX1=0x01;
AutoDisplay=True; WriteCmd(LCD_CLS);
if (SelectedMode==Line) {
while(1) {
if (GoToChoosingDisplay==True)
break; Delay(200); WriteCmd(LCD_CLS); Delay(200);
//直线模式才显示
//默认情况下直线模式会自动显示各个区域经过的时间
Running=False;
//行程结束,小车停止 //行程结束,背光开 //关T1中断 //开INT1中断
//关T0中断
}
DisplayString(0,0,\); DisplayString(0,1,\); DisplaySingleChar(0x0C,1,'s');
LowSpeedArea1PassTime=LowSpeedArea1EndTime-LowSpeedArea1StartTime; DisplaySingleChar(0x0A,1,LowSpeedArea1PassTime+0x30); if (LowSpeedArea1PassTime >9)
break;
//通过第一个低速区的时间超过s
DisplaySingleChar(0x0B,1,LowSpeedArea1PassTime/10+0x30);
if (GoToChoosingDisplay==True) Delay(200); WriteCmd(LCD_CLS); Delay(200);
DisplayString(0,0,\); DisplayString(0,1,\); DisplaySingleChar(0x0C,1,'s');
HighSpeedAreaPassTime=HighSpeedAreaEndTime-LowSpeedArea1EndTime; DisplaySingleChar(0x0A,1,HighSpeedAreaPassTime+0x30); if ( HighSpeedAreaPassTime>9)
//通过高速区的时间超过s
DisplaySingleChar(0x0B,1,HighSpeedAreaPassTime/10+0x30);
}
if (GoToChoosingDisplay==True)
break; Delay(200); WriteCmd(LCD_CLS); Delay(200);
DisplayString(0,0,\); DisplayString(0,1,\); DisplaySingleChar(0x0C,1,'s');
LowSpeedArea2PassTime=LowSpeedArea2EndTime-HighSpeedAreaEndTime; DisplaySingleChar(0x0A,1,LowSpeedArea2PassTime+0x30); if ( LowSpeedArea2PassTime>9)
//通过第二个低速区的时间超过s
DisplaySingleChar(0x0B,1,LowSpeedArea2PassTime/10+0x30);
AutoDisplay=False;
/*---------------- 菜单选择你想要看的内容--总时间、总路程以及平均速度 --------------*/ ChoosingDisplay=True; WriteCmd(LCD_CLS);
/*首先显示主菜单,然后显示第一个选项*/ DisplayString(0x0,0,\); DisplayString(0x0,1,\); Delay(100); while(1) {
WriteCmd(LCD_CLS);
DisplayString(0x0,0,\); DisplayString(0x0,1,\); Delay(250);
//延时消除抖动
/*------------------------------------第一次按键--------------------------------------*/
/**按下了Next键,则显示第二个选项*/ if (Next==True) {
//按下Next键,显示AVGSpeed菜单项
}
Delay(250);
//延时消除抖动
/*按下了确定键,显示第一个选项的内容*/ if (SelectedShow==True) {
SelectedShow=False; SelectedReturn=False; Selected=False; WriteCmd(LCD_CLS);
DisplayString(0,0,\); DisplayTime();
DisplayString(0x0A,1,\); ReturnSelection=True; AVGSpeedShow=False;
//按下了确定键,那么这个时候开启返回键的功能
/*不断检测确定键和Next键*/ while(1) { }
if (Next==True)
break; break;
if (SelectedShow==True)