找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1623|回復: 0
打印 上一主題 下一主題
收起左側(cè)

超聲波避障小車+舵機

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:438586 發(fā)表于 2018-12-12 21:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define barrierDis 15

uint sum;

float L;

sbit LED = P0^0;

sbit Trig = P1^5; //??????TRIG

sbit Echo = P1^6; //??????ECHO

sbit motorDriver_1 =P2^1; //???????,????????L298n???IN1

sbit motorDriver_2 =P2^2; //???????,????????L298n???IN2

sbit motorDriver_3 =P2^5; //???????,????????L298n???IN3

sbit motorDriver_4 =P2^4; //???????,????????L298n???IN4

sbit servorControl =P1^7; //???????

uchar flag=0;

uchar control=5;

uchar servorTime=0;

uchar lFlag=0;//???????????

uchar rFlag=0;//???????????

void delay(uchar time){ //????

uchar i;

for(;time>0;time--){

for(i=0;i<255;i++);

}

}

void stop(){ //????

motorDriver_1=0;

motorDriver_2=0;

motorDriver_3=0;

motorDriver_4=0;

}

void turnLeft(){ //?????

motorDriver_1=1;

motorDriver_2=0;

motorDriver_3=0;

motorDriver_4=0;

} //?????

void turnRight(){

motorDriver_1=0;

motorDriver_2=0;

motorDriver_3=1;

motorDriver_4=0;

}

void turnUp(){ //?????

motorDriver_1=1;

motorDriver_2=0;

motorDriver_3=1;

motorDriver_4=0;

}

void turnDown(){ //?????

motorDriver_1=0;

motorDriver_2=1;

motorDriver_3=0;

motorDriver_4=1;

}

void openHc(){

Trig=1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

Trig=0;

}

uchar getDistance(){ //??????????????

TH0=0;

TL0=0;

openHc();

while(!Echo);

TR0=1;

while(Echo);

TR0=0;

sum=TH0*256+TL0;

L=(sum*1.78)/100;

if(L<barrierDis&&flag==0){

LED=0;

return 0;

}

else{

LED=1;

flag=0;

return 1;

}

}

void main(){

LED=1;

EA=1;

ET0=1;

ET1=1;

TMOD=0x11;

TH1=0xff;

TL1=0x9c;

servorTime=0;

while(1){

stop();

control=15;//??????????????

servorTime=0;

TR1=1;

delay(200);

TR1=0;

turnUp();

LED=0;

delay(200);

LED=1;

while(getDistance()==1); //????,????????

do{

stop();

control=22; //???????

servorTime=0;

TR1=1;

delay(200);

TR1=0;

rFlag=getDistance();

control=5; //???????

servorTime=0;

TR1=1;

delay(200);

TR1=0;

lFlag=getDistance();

turnDown();

delay(220);

delay(220);

delay(220);

}while(lFlag==0&&rFlag==0);

if(rFlag==1&&lFlag==0) //???????

turnLeft();

else if(rFlag==0&&lFlag==1)//???????

turnRight();

else if(rFlag==1&&lFlag==1)//????????,?????

turnLeft();

delay(220);

delay(220);

delay(200);

}

}

void T1_int(void) interrupt 3{ //??????????

TH1=0xff;

TL1= 0x9c;

servorTime++;

if(servorTime<=control)

servorControl=1;

else

servorControl=0;

if(servorTime>=200)

servorTime=0;

}

void T0_int(void) interrupt 1{ //?????????

flag=1;

}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表