51单片机程序超声波模块避障

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#define uint unsigned int

#define uchar unsigned char

sbit TX=P3^2;//Trig

sbit RX=P1^0;//Echo

unsigned int time=0;

unsigned long S=0;

bit flag =0;

void delay(int x)

{

int i,j;

for(i=0;i

for(j=0;j<110;j++);

}

void Conut(void) //计算函数

{

time=TH1*256+TL1;

TH1=0;

TL1=0;

S=time*2;

S=S*0.17;

if(S<=300)//避障距离30cm

{

P2=0x34; //控制端口定义

}

else

{

P2=0xff; //控制端口定义

}

}

void zd0() interrupt 3 //T0中断用来计数器溢出,超过测距范围{

}

void Timer_Count(void)

{

TR1=1; //开启计数

while(RX); //当RX为1计数并等待

TR1=0; //关闭计数

Conut(); //计算

}

void StartModule()

{

TX=1;

delay(2);

TX=0;

}

void main()

{

unsigned char i;

unsigned int a;

TMOD=0x10;

EA=1;

TH1=0;

TL1=0;

ET1=1;

while(1)

{

RX=1;

StartModule();

for(a=951;a>0;a--)

{

if(RX==1)

{

Timer_Count();

}

}

}

}

相关文档
最新文档