超声波测距仪单片机课设实验报告.docx
《超声波测距仪单片机课设实验报告.docx》由会员分享,可在线阅读,更多相关《超声波测距仪单片机课设实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
![超声波测距仪单片机课设实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/19/f98e22b3-037d-4577-a4b6-158a3bc566b6/f98e22b3-037d-4577-a4b6-158a3bc566b61.gif)
超声波测距仪单片机课设实验报告
超声波测距仪单片机课设实验报告
微机原理与单片机系统课程设计
评语:
考勤
10分
fj守纪
10分
过程3(
分
)设计报
告30分
艮答辩2
分
0总成绩
(100分)
专业:
轨道交通信号与控制
班级:
交控1305
姓名:
贺云鹏
学号:
201310104
指导教师:
李建国
兰州交通大学自动化与电气工程学院
2015年12月30日
超声波测距仪设计
1设计说明
1.1设计目的
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。
超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量。
超声波在气体、液体及固体中以不同速度传播,定向性好、能量集中、传输过程中衰减较小、反射能力较强。
超声波能以一定速度定向传播、遇障碍物后形成反射,利用这一特性,通过测定超声波往返所用时间就可计算出实际距离,从而实现无接触测量物体距离。
超声波测距迅速、方便,且不受光线等因素影响,广泛应用于水文液位测量、建筑施工工地的测量、现场的位置监控、振动仪车辆倒车障碍物的检测、移动机器入探测定位等领域。
1.2设计方法
本课题包括数据测距模块、显示模块。
测距模块包括一个HC-SR04超声波测距模块和一片AT89C51单片机,该设计选用HC-SR04超声波测距模块,通过HC-SR04发射和接受超声波,使用AT89C51单片机对超声波进行计时并根据超声波在空气中速度为340米每秒的特性计算出距离。
显示模块包括一个4位共阳极LED数码管和AT89C51单片机,由AT89C51单片机控制数码管动态显示距离。
1.3设计要求
采用单片机为核心部件,选用超声波模组,实现对距离的测量,测量距离能够通过显示输出(LED,LCD)O
2设计方案及原理
2.1超声波测距模块设计
HC-SR04超声波测距模块可提供2cm-400cm勺非接触式距离感测功能,测距精度可达高到3mm。
模块包括超声波发射器、接收器与控制电路。
当提供一个10uS以上正脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。
一旦检测到有回波信号则输出回响信号。
回响信号勺脉冲宽度与所测勺距离成正比。
由此通过发射信号到收到勺回响信号时间间隔可以计算得到距离
由以上信息,在设计时选用两个定时器,定时器1用来定时800ms,当产生中断时,启动HC-SR04超声波测距模块,即给其TRIG(发射)口送一个持续20ms的正脉冲,定时器0用来对超声波传递时间进行计时,即当ECHO(回波)口为高电平时启动计时,当ECHO口变为低电平时关闭计时。
再根据超声波在空气中的传播速度为340米每秒,通过AT89C51计算出距离,当距离超过400cmfl寸,显示8888,表示超出工作距离。
2.2LED显示模块设计
将算得的距离通过一个4位LED数码管采用动态扫描进行显示。
2.3其他功能的设计
考虑到实际的需求,本设计还应增加以下功能:
1、增加一个指示灯。
当ECHO(回波)口为高电平时,即超声波信号在空气中传播时,指示灯点亮。
当数码管不能正常点亮时,若指示灯正常指示,则说明LED显示模块发生故障;若指示灯不能正常点亮,则说明超声波测距模块发生故障。
2、增加一个锁存按钮。
由于设计时我们设计的为每800ms超声波测距模块启动一次,由于定时器会产生误差,造成测得距离不断变化,增加一个锁存按钮,当确定显示结果稳定时,按下按钮时,关闭超声波测距模块,可以使结果清楚显示。
3、增加一个待机按钮。
当按下锁存按钮后,再按下待机按钮,这时关闭LED显示,若再打开待机按钮,这时LED启动工作,显示的数值为上一次被测距离。
2.4设计成本及定价
成本:
1、HC-SR04超声波测距模块1个3.3元
2、AT89C51单片机1个2.5元
3、四位LED数码管1个1.5元
4、晶振1个0.17元
5、电路板1个0.57元
6、其他开关、电阻及电容总计0.5元
总计:
8.54元
市场平均价格:
12元
预计疋价:
10元
利润:
1.46元
3硬件设计
此系统的硬件设计主要包括HC-SR04超声波测距模块、AT89C51单片机、4位LED显示模块,并连入指示灯、待机开关和锁存开关。
仿真时,将HC-SR04超声波测距模块用一个555延时电路来代替即可,其中调节改变滑动变阻器的阻值可以模拟被测物体距离的变化。
实验仿真电路图如图1所示。
图1设计硬件电路图
4软件设计
此系统的软件设计主要包括超声波测距模块设计、LED显示模块设计、和
其他拓展模块。
采用定时器1每800ms发射一个脉冲信号启动超声波测距模块,采用定时器0计算超声波传播时间,并通过一个计算函数算得距离,然后送LED显示屏进行动态扫描并显示结果。
4.1程序流程图
主程序流程图如图
2所示。
V
卄届疋时耀】
觀I
X:
闭丘时2S.技示
¥
关眈时器和LED
口TRKJD发迖牛特纯30帕的K电平
f
定时器A
片贻il龟
v
计轩用弱*定床]我
0淸辱.携闭搭示
灯
图2程序流程图
4.2程序
基于AT89C51单片机的超声波测距源程序见附录
5系统仿真及调试结果
基于AT89C51单片机的超声波测距仿真结果见附录二。
基于AT89C51单片机的超声波测距调试结果如图3所示。
Buildtarget'Target1*
Linking...
ProgramSize:
data=33.1xdata=0code=1678creatinghe囂filefrom"ZUIHOU".++
"ZUIHOU"-0Error(s),0Warning(s).
\BuildCornrnandFindinFilesf
图3系统程序调试结果
6总结
本设计通过对超声波测距的研究,与单片机结合,实现了超声波测距的目标,并增加了数据锁存、指示灯和待机的功能。
仿真时由于软件中没有HC-SR04
模块,因此用555延时电路来代替。
通过这次课程设计,我加深了对单片机的理解,也为以后更好的运用打下了基础。
最后要感谢李老师的指导,在李老师的耐心解答下,我受益匪浅。
参考文献
[1]李积英.数字电子技术.中国电力出版社,2011
[2]深圳市捷什科技有限公司.HC-SR04超声波测距模块说明书.
[3]彭江.单片机原理及接口技术的开发[J].软件导刊,2011,12(8):
66-70.
[4]
王思明.张金敏.苟军年.张鑫.杨乔礼.单片机原理及应用系统设计.科学出版社.2012
附录一:
实验源程序#include#defineucharunsignedchar#defineuintunsignedint
#defineLED_portP0
#defineLED_posP1sbitqq=P2八6;
sbitsuocun=P2A1;sbitRX=P"4;
sbitTX=P1A5;
sbitD1=P3A7;uinttime=0;
uinttimer=0;
//用于LED段选
//用于LED位选//待机按钮//锁存结果//回波//送波
//接收指示灯//定时器0时间//定时器1时间
unsignedlongS=0;//用于显示最后计算得到的距离
unsignedlongW[2]={0,0};//用于比较两次测算距离大小
bitflag=0;
ucharvalue[4];
//定时器0中断溢出标志位
ucharcodeLED_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段选
ucharcodepos[4]={0x01,0x02,0x04,0x08};//
数码管位选
voidDelay(uchart)//延时函数{
uchari,j,k;
for(i=0;ifor(k=0;k<20;k++);}
f*******************************************************
voidzd3()interrupt3块
{
voidDisplay(ucharvalue[])//数码管显示{
uchari;for(i=0;i<4;i++)
{
LED_pos=pos[i];
LED_port=LED_seg[value[i]];
Delay
(1);
}
}
f********************************************************f
//T1中断用来扫描数码管和计800MS启动模
//这是计时器1中断
脉冲,故屏蔽此句
TX=1;
}
}
/********************************************************/
voidzd0()interrupt1//T0中断用来计数器溢出
{
flag=1;//中断溢出标志
}
/********************************************************/
voidCount(void)//计算程序
{
time=TH0*256+TL0;//这是最后算到的时间,往返时间,但应该再
乘以12/11.0593M是一个机器周期,时间应该是time*12/11.059
TH0=0;//定时器0的初始值为0
TL0=0;
S=(time*1.845)/10;//算出来是mm,time*12*170/(11.0592*1000)mm=time*(1845/10000)mm
W[0]=S;
if(((W[0]-W[1])八2)v=100)//进行校正,若两次结果相差小于10mm,则采用前一次结果
S=W[1];
else
W[1]=S;
if(S>=4000)//最大距离4m,艮卩4000mm
S=8888;
if(flag==1)//判断是否溢出
{
S=8888;
flag=0;
TH0=0;
TL0=0;
}
}
voidmain(void)
//设T0为方式1,T1为方式1
//中断0初始化
{
TMOD=0x11;
TH0=0;
TL0=0;
//中断1初始化
TH1=0XF8;
TL1=0X30;
ET0=1;
ET1=1;
TR1=1;qq=1;suocun=0;
EA=1;while
(1){while(!
RX)TX=1;TR0=1;
//允许T0中断
;II当RX为零时等待,即echo为低电平
D1=1;
//开启计数
while(RX);
II当RX为1计数并等待
TR0=0;
II关闭计数
D1=0;
II关指示灯
while(!
qq){
EA=0;
〃待机按钮按下时,关总中断和位选
P1=0X00;}qq=1;
Count();//计算value_shift(value);
Display(value);//显示while(suocun)//当按下锁存按钮时,关总中断并显示{
EA=0;
Display(value);}EA=1;
}
}
附录二:
1距离小于4m时的仿真图
—
E89H
I-
FnmsiE-nFD.ILU-I
FOVE-Spn^Hu-j
FEL-HU-b
-U
LE&SSk«i»
■DO・r旳畑S3
rznwfl
F2
乜卅■
T3F
陀尸-I
IF3-WKC«^JWV!
U
nilrR>N帼smvB4為TTHFlMITT
C■rmFJ*Tli
F-i^nt
fx'iiTF
图1距离小于4m
2.距离大于4m时的仿真图
模拒H哄皈04趙声湛為
B880
■aII
1TJ
TR
X
5D
IZ
1
+
*
蒂机搜Hl
图2距离大于4m