找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4591|回复: 0
打印 上一主题 下一主题
收起左侧

超声波测距实验报告

[复制链接]
跳转到指定楼层
楼主
ID:271850 发表于 2018-1-5 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、        实验简介
超声波作为一种传输信息的媒体,由于其本身的直射性和反射性,以及不易受光照、电磁波等外界因素影响的特性,在探伤、测距、测速等多种领域越来越受到重视。超声波是频率高于20K赫兹的声波,他的方向性好,穿透力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有多的应用。超声波因其频率下限大约等于人的听觉上限而得名。

二、        实验原理
在分类中讲到两种测距方法,最为常用的是第二种方法,下面我们主要介绍一下第二种方法的具体工作原理。

如图,通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为V ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S ,即:
  S = V·△t /2
这就是所谓的时间差测距法。由于超声波也是一种声波, 其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大, 则可认为声速是基本不变的。常温下超声波的传播速度是334 米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1 ℃, 声速增加约0. 6 米/ 秒。如果测距精度要求很高, 则应通过温度补偿的方法加以校正。已知现场环境温度T 时, 超声波传播速度V 的计算公式为:
  V = 331.45 + 0.607T

声速确定后, 只要测得超声波往返的时间,即可求得距离,这就是超声波测距仪的机理
三、        程序框图
四、实验程序
#include<stc12c5a60s2.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define lint long int
#define lchar long char
/********lcd读写端口定义*****/
sbit rs=P2^6;
sbit rw=P2^5;
sbit e=P2^7;
/******超声波控制端口定义**/
sbit trig=P2^1;
sbit echo=P2^0;
/*******定义标志位变量**/
bit flag1;//触发信号标志位
uchar count;//中断累加标志位
lint distance;//测量的距离
uchar code table[ ]={"0123456789"}; //定义字符数组显示数字
void delay1(uint i){
uint a,b;
for(a=i;a>0;a--)
for(b=110;b>0;b--);
}
void delay2(uint i){
uchar j;
while(i-->0){
for(j=0;j<125;j++)
{
;
}
}
}
void lcd_wcom(uchar com)
{
rs=0;
rw=0;
P0=com;
delay1(5);
e=1;
e=0;
}
void lcd_wdat(uchar dat)
{
rs=1;
rw=0;
P0=dat;
delay1(5); //延时让1602准备接收数据,也就是检测忙信号,这点非常重要。
e=1;
e=0;
}
void lcd_init(){
lcd_wcom(0x38);
lcd_wcom(0x0c);
lcd_wcom(0x06);
lcd_wcom(0x01);
}
void lcd_show()
{
lcd_wcom(0x80+0x40);
lcd_wdat('D');
lcd_wdat('i');
lcd_wdat('s');
lcd_wdat('t');
lcd_wdat('a');
lcd_wdat('n');
lcd_wdat('c');
lcd_wdat('e');
lcd_wdat(':');
lcd_wcom(0x80+0x4c);
lcd_wdat('.');
lcd_wcom(0x80+0x4e);
lcd_wdat('c');
lcd_wdat('m');
}
void init_t0(){
TMOD=0x01;
TL0=0x66;
TH0=0xfc;
ET0=1;
EA=1;
}
void trigger()
{
trig=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
trig=1;
}
void init_measuring(){
trig=1;
echo=1;
count=0;
}
void measuring(){
uchar l;
uint h,k;
TR0=1;
while(echo==1)
{
;
}
TR0=0;
l=TL0;
h=TH0;
k=(h<<8)+l;
k=k-0xfc66;
distance = k + 1000 * count;
TL0=0x66;
TH0=0xfc;
delay2(30);
distance=3453*distance;
}
void display(uint q){
uchar qian,bai,shi,ge;
qian=(q/1000);
bai=(q/100);
shi=(q/10);
ge=q;
lcd_wcom(0x80+0x49);
lcd_wdat(table[qian]);
lcd_wdat(table[bai]);
lcd_wdat(table[shi]);
lcd_wcom(0x80+0x4d);
lcd_wdat(table[ge]);
}
void main(){
lcd_init();
init_t0();
init_measuring();
while(1)
{
lcd_show();
trigger();
while(echo==0)
{
;
}
measuring();
display(distance);
init_measuring();
delay2(600);
}
}
void T_0()interrupt 1{
TF0=0;
TL0=0x66;
TH0=0xfc;
count++;
if(count==18){
TR0=0;
TL0=0x66;
TH0=0xfc;
count=0;
}
}
五、        实验效果
LCD成功显示超声波测得距离。
超声波模块接线trig------P2.1
              ECHO----P2.0
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表