PWM调速循迹智能小车程序精编

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档