PWM调速循迹智能小车程序精编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P W M调速循迹智能小车
程序精编
Document number:WTT-LKK-GBB-08921-EIGG-22986
32m
/*-------------------------------- 控速模块-----------------------------------*/
#defineP03 P0_3 . ");
DisplayString(0x0,1,"DesignedBy202");
Delay(300);
WriteCmd(LCD_CLS);
EA=1; ");
Delay(50);
WriteCmd(LCD_CLS);
IsSelectingMode=True;
while(1)
{
WriteCmd(LCD_CLS);
DisplayString(0x0,0," LineMode ");
DisplayString(0x0,1,"Next Yes");
Delay(300); . ");
DisplayString(0x0,1,"Designedby202");
if(SelectedMode==Line&&AutoMode==0)
flag=Area0;
else
flag=1;
while(flag<5)
{
if(AutoMode==1) ;
DisplaySingleChar(0x07,1,PassTime2); DisplaySingleChar(0x08,1,PassTime3);
}
else
{
DisplaySingleChar(0x04,1,PassTime1); DisplaySingleChar(0x05,1,PassTime2); DisplaySingleChar(0x06,1,'.');
DisplaySingleChar(0x07,1,PassTime3); DisplaySingleChar(0x08,1,PassTime4);
}
}
/*------------------------------------ 显示平均速度----------------------------------------*/ voidDisplayAVGSpeed(void)
{
intSpeed1=0x30; ;
DisplaySingleChar(0x07,1,Speed2); DisplaySingleChar(0x08,1,Speed3);
}
/*------------------------------------- 显示路程----------------------------------------*/ voidDisplayDistance(void)
{
intDistance1=0x30;
intDistance2=0x30;
intDistance3=0x30;
intDistance4=0x30;
if((int)(Distance*100)<100)
{
Distance1+=0;
Distance2+=(int)(Distance*100)/10;
Distance3+=(int)(Distance*100)%10;
}
elseif((int)(Distance*100)>100
&&(int)(Distance*100)<1000)
{
Distance1+=(int)(Distance*100)/100;
Distance2+=(int)(Distance*100)/10%10;
Distance3+=(int)(Distance*100)%10;
}
else
{
Distance1+=(int)(Distance*100)/1000; Distance2+=(int)(Distance*100)/100%10; Distance3+=(int)(Distance*100)/10%10; Distance4+=(int)(Distance*100)%10;
}
if((int)(Distance*100)<1000)
{
DisplaySingleChar(0x05,1,Distance1); DisplaySingleChar(0x06,1,'.'); DisplaySingleChar(0x07,1,Distance2); DisplaySingleChar(0x08,1,Distance3); }
else
{
DisplaySingleChar(0x04,1,Distance1); DisplaySingleChar(0x05,1,Distance2); DisplaySingleChar(0x06,1,'.'); DisplaySingleChar(0x07,1,Distance3); DisplaySingleChar(0x08,1,Distance4); }
}
/*------------------------------------- 中断初始化-------------------------------------*/
voidINTInit(void)
{
EA=1; //开总中断
IT0=1; //INTO边沿触发
PX0=1; //INTO优先级为高级
EX1=1; //开INT1中断
IT1=1; //INT1边沿触发
PX1=1; //INT1优先级为高级
Clock0_Init(); //初始化时钟中断
TMOD=0x11; //T0/T1定时方式1
ET0=0x01; //开T0中断
ET1=0x01; //开T1中断
}
voidClock0_Init(void)
{
TR0=0x01; //启动T0
TH0=Thx0; //定时初值
TL0=Tlx0;
}
voidClock1_Init(void)