超声波测距实验

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

超声波测距实验
一、实验目的
1、了解超声波的产生、接收的原理
2、掌握用超声波测距离的方法
二、实验器材
1、DCP-0018线路板。

2、+5V电源。

3、双踪示波器
4、若干导线。

三、实验原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。

这就是所谓的时间差测距法。

超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。

由此可见,超声波测距原理与雷达原理是一样的。

测距的公式表示为:L=C×T
式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。

其原理框图如下:
四、实验步骤
1、把短接块SW1,SW2接上。

2、把+5V电源接到DCP-0018的VCC上,GND接电源地。

3、移动DCP-0018,改变测量的距离,观察数码管读数。

4、用双踪示波器观察CSB,INT点的波形,观察随着距离的变化INT点波形的变化。

参考程序
//-----头文件引用------
#include<reg52.h>
#include<intrins.h>
sbit led1=P3^0;
sbit led2=P3^1;
sbit led3=P3^7;
sbit csb=P3^4;
sbit ttl=P3^3;
unsigned long S,time;
unsigned char flag;
unsigned int x,y,z;
unsigned char code dispbitcode[] = {0x03,0x9f,0x25,0x0D,0x99,0x49,
0x41,0x1F,0x01,0x09,0xFD};//LED显示0-9常数
/***************延时函数**************/
void delays(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/***************显示函数**************/
void display(void)
{
led1=1;
P1=dispbitcode[x];
delays(2);
led1=0;
led2=1;
P1=dispbitcode[y];
delays(2);
led2=0;
led3=1;
P1=dispbitcode[z];
delays(2);
led3=0;
}
/***************计数器1函数**************/
void timer1() interrupt 3
{
unsigned int i;
TL1=0x00;
TH1=0x00;
flag=1;//中断溢出标志位
for(i=0;i<36;i++)
{
csb=!csb;
_nop_();
_nop_();
_nop_();
}
}
/***************计算函数**************/
void js(void)
{
if(flag==1)//超出测量范围显示
{
flag=0;
x=10;
y=10;
z=10;
}
else
{
x=S%1000/100;
y=S%1000%100/10;
z=S%1000%100%10;
}
}
/***************主函数**************/
void main()
{
unsigned char i;
csb=0;
led1=0;
led2=0;
led3=0;
P1=0xff;
delays(1000);
TMOD=0x90; //定时器1工作于方式1,计数受GA TE影响EA=1;
ET1=1;
while(1)
{
TL1=0x0;
TH1=0x00;
TR1=1;
for(i=0;i<16;i++) //发送40KHZ超声波
{
csb=!csb;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
do{}
while(ttl==1);
TR1=0;
time=TH1*256+TL1;
S=(time*17)/1000; //时间换算为距离
js();
display();
}
}。

相关文档
最新文档