当前位置:首页 > 基于51的避障循迹重力感应遥控的智能小车设计(C语言)
Conut(); }
/********************避障模式子函数***********************/ void csbmode(void) { unsigned char temp; TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //当RX为零时等待 TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut();//测量前方距离 delay_RX(80); speed1=16;speed2=16; while(middleS>500 &&CONTROL_MODE_FLAG==3) //当前方空间大于300mm时保持 { IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1;//小车前进 TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //当RX为零时等待 TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut(); delay_RX(2); } IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0;//小车停止 speed1=0;speed2=0; measured(2); measured(4); TH1 = (65536-500)/256; //舵 机 复位 TL1 = (65536-500)%6; //12MZ晶振,0.5ms mode=0; jd=3; count2=0;
TR1=1;
delay_RX(500); TR1=0;
if(leftS<250||rightS<250) { temp=middleS; speed1=20;speed2=20; IN1_1=1;IN1_2=0;IN2_1=1;IN2_2=0;//小车后退 while((middleS-temp)<200&&CONTROL_MODE_FLAG==3) { speed1=20;speed2=20; delay_RX(2); TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //当RX为零时等待 TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut(); } speed1=20;speed2=20; if(leftS if(leftS } } IN1_1=1;IN1_2=0;IN2_1=0;IN2_2=1; while(middleS<600&&CONTROL_MODE_FLAG==3) { speed1=17;speed2=17; delay_RX(5); TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //当RX为零时等待 TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut(); } } else { speed1=0;speed2=0; IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0; //小车左转 while(middleS<600&&CONTROL_MODE_FLAG==3) { speed1=17;speed2=17; delay_RX(5); TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //当RX为零时等待 TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut(); } } } /*****************循迹模式子函数*********************/ void xunji(void) { IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1; speed1=20;speed2=20; //小车前进 while(irL2==0 && irR2==0&&CONTROL_MODE_FLAG==2) RX_STATE(); if(irL2==1) { IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0; speed1=18;speed2=18; //小车右转 while(irL1==0&&CONTROL_MODE_FLAG==2) RX_STATE(); } else if(irR2==1) { IN1_1=1;IN1_2=0;IN2_1=0;IN2_2=1; speed1=18;speed2=18; 小车左转 while(irR1==0&&CONTROL_MODE_FLAG==2) RX_STATE(); } } /******************************************/ void main(void) { uchar RxBuf[4]; // uchar bb=0; int X_ANGLE; int Y_ANGLE;// uchar X_SIGN; uchar Y_SIGN; uchar SIGN=0; bit FLAG_ANGLE=0; init_RX() ; delay(100); T0T1_init(); jd=3; count2=0; mode=0; while(1) { switch(CONTROL_MODE_FLAG) { //
共分享92篇相关文档