超声波测距

2026/1/27 2:35:48

信息工程学院课程设计(论文)

开,并开始计时了。当超声波接收电路接收了到回波信号的同时时,电路便会产生一个低电平到单片机的P0.0端口,在单片机检测到该信号后,定时器计时就将停止,同时定时器的计数的次数将被提取出来,这样就可以得到以cm为单位的测量的距离值。

程序如下:

#include

#define uchar unsigned char #define uint unsigned int #define zw P2 #define zx P0 sbit trig=P1^0; sbit echo=P3^2;

uint distance; uint x; uint time; uchar flag;

uchar buffer[4]={0,0,0,0}; uchar code

table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void delay(uint j) { uint i; uint k;

for(i=0;i

for(k=0;k<100;k++);

}

void dispaly(x) { buffer[0]=x/1000; buffer[1]=x00/100; buffer[2]=x000/10; buffer[3]=x000; zx=table[buffer[0]]; zw=0x10; delay(1); zw=0x00; zx=table[buffer[1]]; zw=0x20; delay(1); zw=0x00; zx=table[buffer[2]]; zw=0x40;

delay(1); zw=0x00; zx=table[buffer[3]];

zw=0x80;

18 信息工程学院课程设计(论文)

delay(1); zw=0x00; zx=0x80; zw=0x40; delay(1); zw=0x00;

void main (void) { uint m; delay(100); while(1)

}

void init0(void) { TMOD=0x01; EA=1; ET0=1; EX0=0; TH0=0; TL0=0; TR0=0; }

void read_distance(void) {

uint timeh; uint timel; timeh=TH0; timel=TL0;

time=timeh*256+timel;

+

distance=time*19/100;

}

{

19

init0(); flag=0; trig=0; delay(1); trig=1; delay(2); trig=0; while(echo==0); TR0=1; EX0=1; while(echo==1); for(m=0;m<=100;m++) { if(flag==1)

{dispaly(distance);} if(flag==0) { distance=0; dispaly(distance);

} }

信息工程学院课程设计(论文)

} }

void timer0() interrupt 3 { TH0=0; TL0=0;

}

void int0() interrupt 0 { TR0=0;

read_distance(); flag=1; EX0=0;

}

20

信息工程学院课程设计(论文)

整体电路图:

21


超声波测距.doc 将本文的Word文档下载到电脑
搜索更多关于: 超声波测距 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219