超声波测距仪设计说明书.docx

上传人:b****8 文档编号:29212552 上传时间:2023-07-21 格式:DOCX 页数:11 大小:91.71KB
下载 相关 举报
超声波测距仪设计说明书.docx_第1页
第1页 / 共11页
超声波测距仪设计说明书.docx_第2页
第2页 / 共11页
超声波测距仪设计说明书.docx_第3页
第3页 / 共11页
超声波测距仪设计说明书.docx_第4页
第4页 / 共11页
超声波测距仪设计说明书.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

超声波测距仪设计说明书.docx

《超声波测距仪设计说明书.docx》由会员分享,可在线阅读,更多相关《超声波测距仪设计说明书.docx(11页珍藏版)》请在冰豆网上搜索。

超声波测距仪设计说明书.docx

超声波测距仪设计说明书

 

1.1设计内容

随着科学技术的快速发展,超声波将在传感器中的应用越来越广。

超声波测距与其它非接触式的检测方式方法相比,如电磁的或光学的方法它不受光线,被测对象颜色,电磁干扰等影响。

超声波对于被测物体处于黑暗,有灰尘,烟雾,电磁干扰,有毒等恶劣的环境有一定的适应能力[2]。

因此在液位测量,机械手控制,车辆自动导航,物体识别等方面有广泛应用。

特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的结构信息很容易检测出来,具有很高的分辩力,因而其准确度也较其它方法高,而且超声波传感器具有结构简单,体积小,信号处理可靠等特点[3]。

本次设计主要是利用STC12LE5406AD单片机、超声波传感器完成测距报警系统的制作,以STC12LE5406AD为主控芯片,利用超声波对距离的检测,将前方物体的距离探测出来,然后单片机处理运算,与设定的报警距离值进行比较判断,当测得距离小于设定值时,STC12LE5406AD发出指令控制蜂鸣器报警。

1.2设计要求

随着科学技术的快速发展,超声波将在测距仪中应用越来越广泛。

其原理是:

以STC12LE5406AD为主控芯片,实现发射电路的控制和接收数据的处理,并用数码管显示测量的数据。

具体指标要求是:

指标1:

测量精度-1~+1cm

指标2:

显示四位

本系统在“报警”方面进行创新,其功能是:

创新1:

设定报警距离值,当测得距离小于设定值时,蜂鸣器报警

 

1.3系统总体结构

本设计包括硬件和软件设计两个部分。

模块划分为数据采集、按键控制、四位数码管显示、报警等子模块。

电路结构可划分为:

超声波传感器、蜂鸣器、单片机控制电路。

就此设计的核心模块来说,单片机就是设计的中心单元,所以此系统也是单片机应用系统的一种应用。

单片机应用系统也是有硬件和软件组成。

硬件包括单片机、输入/输出设备、以及外围应用电路等组成的系统,软件是各种工作程序的总称。

单片机应用系统的研制过程包括总体设计、硬件设计、软件设计等几个阶段。

系统采用STC12LE5406AD单片机作为核心控制单元,当测得的距离小于设定距离时,主控芯片将测得的数值与设定值进行比较处理。

然后控制蜂鸣器报警。

系统总体的设计方框图如图1所示。

 

 

图1系统方框图

附录1元器件清单

Comment

Description

Designator

Quantity

10UF电容

 

C1

1

22P电容

 

C2,C3

2

蜂鸣器

ElectricalBell

LS1

1

超声波模块

Header,4-Pin

P1

1

PNP8550三极管

 

Q2

1

10K上拉电阻

 

R1

1

10k可调电阻

 

R4

1

1K电阻

 

R6

1

10K电阻

 

R7

1

AJ按键

 

SW1,SW2,SW3

3

单片机

 

U2

1

1602液晶

 

U4

1

12M

 

晶振

1

附录2超声波测距电路原理图

附录3程序清单

#include

unsignedcharcodedispcode[]={

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,

0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xa3,0x8c,0xc8};//0-9,a-f共阳数码管段码

unsignedchardispbuf[4]={0,0,0,0};//0x76,0x3f,0x3f,0x4f

unsignedchartemp[4];

unsignedchardispcount;

unsignedchari;

unsignedintx;

unsignedlongl,time;

//-----------------------定义管脚

unsignedchartimecount;

unsignedchartestok;

/*数码管控制*/

sbitW0=P2^0;//数码管第一位位选对应P20

sbitW1=P2^1;//数码管第二位位选对应P21

sbitW2=P2^2;//数码滚第三位位选对应P22

sbitW3=P2^3;//数码管第四位位选对应P23

/*超声波定义*/

sbitFS=P3^5;//定义发射的IO口

sbitLS=P3^7;//蜂鸣器控制

/*开关定义*/

sbitK1=P1^0;//开始测距键

bitk1;//按键标志位

//bitflag;

/*延时函数*/

voiddelay100us(void)//延时子函数

{

unsignedchari,j;

for(i=40;i>0;i--)

for(j=248;j>0;j--);

}

voidcsfs(void)//超声波发射程序//

{

unsignedchartimes=0;

while(TF1==0)//TF1定时器1溢出标志位使用查询法

{

unsignedcharj;

for(j=12;j>0;j--);//延时

FS=~FS;

times++;//翻转20次,发送10个脉冲信号的超声波//

TF1=0;

if(times==10)

break;

}

times=0;

TH1=0x00;//(65536-4000)/256;

TL1=0x00;//(65536-4000)%256;

EX0=1;//外部中断0允许中断位

TR1=1;//开定时器1

ET1=1;//定时器T1中断允许位

delay100us();

}

voidmain(void)

{

testok=0;

TMOD=0x10;/*定时器1为工作模式1*/

T2MOD=0x00;/*定时器2为工作模式)*/

T2CON=0x04;/*定时器2为自动重装定时工作模式)TR2=1*/

RCAP2L=(65536-4000)%256;//给定时器T2装初值

RCAP2H=(65536-4000)/256;

TH1=0x00;//(65536-4000)/256;

TL1=0x00;//(65536-4000)%256;

IT1=1;//边沿触发方式

EX0=1;

TR2=1;//打开定时器中断1,2

TR1=1;

ET1=1;

ET2=1;

EA=1;//开总中断

while

(1)

{

if(k1==1)//开始开始测距

{csfs();

}

if(testok==1)//

{

if(1==testok)//如果1=teskok

{

testok=0;//tesk清0

x=l;//距离

if(x!

=0)

{for(i=0;i<4;i++)

{temp[i]=0;

}

}

i=0;

while(x/10)

{

temp[i]=x%10;

x=x/10;

i++;

}

temp[i]=x;

dispbuf[3]=temp[0];//显示千位

dispbuf[2]=temp[1];//显示百位

dispbuf[1]=temp[2];//显示十位

dispbuf[0]=temp[3];//显示个位

timecount=0;

if(l<100)//当距离等于100cm时,蜂鸣器报警

{

LS=0;//蜂鸣器打开

delay100us();

LS=1;//蜂鸣器关闭

delay100us();

}

}

}

testok=0;

if(K1==0&&k1==0)//如果第一次按下开关K1,开始测距

{delay100us();//按键延时消抖

if(K1==0&&k1==0)

{

{

k1=1;//按键标识位清1

testok=1;

}

while(K1==0);//等待按键释放

}

}

elseif(K1==0&&k1==1)//如果第二次按下开关K1,停止测距

{

{

k1=0;

testok=0;

}

while(K1==0);//等待按键释放

}

}

voidint0(void)interrupt0using0//接收中断程序//

{

EX0=0;//关闭

TR1=0;//关定时器//

ET1=0;//中断关闭

time=TH1*256+TL1;//算出t的值,t的单位为us//RCAP2H

l=time*180;//

l=l/10000;

TH1=0x00;//(65536-4000)/256;

TL1=0x00;//(65536-4000)%256;

testok=1;

}

voidint2(void)interrupt3using0//超时中断程序//

{

EX0=0;

TR1=0;//关定时器//

ET1=0;//中断关闭

TH1=0x00;//(65536-4000)/256;

TL1=0x00;//(65536-4000)%256;

testok=2;

}

voidt1(void)interrupt5using0

{

TF2=0;//T2定时器必须用软件清0

timecount++;

P0=dispcode[dispbuf[dispcount]];//控制数码管显示

if(dispcount==0)//打开第一位数码管的位选

{

W0=0;

W1=1;

W2=1;

W3=1;

}

if(dispcount==1)//打开第二位数码管的位选

{

W0=1;

W1=0;

W2=1;

W3=1;

}

if(dispcount==2)//打开第三位数码管的位选

{

W0=1;

W1=1;

W2=0;

W3=1;}

if(dispcount==3)//打开第四位数码管的位选

{

W0=1;

W1=1;

W2=1;

W3=0;

}

dispcount++;

if(dispcount==4)//当dispcount等于4时,清0

dispcount=0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1