超声波测距.docx

上传人:b****5 文档编号:5710569 上传时间:2022-12-31 格式:DOCX 页数:25 大小:444.04KB
下载 相关 举报
超声波测距.docx_第1页
第1页 / 共25页
超声波测距.docx_第2页
第2页 / 共25页
超声波测距.docx_第3页
第3页 / 共25页
超声波测距.docx_第4页
第4页 / 共25页
超声波测距.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

超声波测距.docx

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

超声波测距.docx

超声波测距

成绩

 

课程设计

 

课程名称

单片机原理与应用课程设计

课题名称

超声波测距系统设计

专业

自动化

班级

学号

姓名

指导老师

晓秀、肖峰、林国汉等

 

2015年6月29日

电气信息学院

课程设计任务书

课题名称

超声波测距系统设计

姓名

专业

自动化

班级

学号

指导老师

晓秀

课程设计时间

2015年6月29日-2015年7月10日

一、任务及要求

设计任务:

本课题要求以MCS-51系列单片机为核心,设计一个超声波测距系统。

(1)用给定的超声波模块制作超声波测距系统,测距围:

0.5~4.5m;

(2)用按键实现测距、清零、复位等控制;

(3)用4位LED数码管显示测量到的距离。

设计要求:

(1)确定系统设计方案;

(2)进行系统的硬件设计;

(3)完成必要的参数计算与元器件选择;

(4)完成应用程序设计;

(5)应用系统的硬件和软件的调试。

二、进度安排

第一周:

周一:

集中布置课程设计任务和相关事宜,查资料确定系统总体方案。

周二~周三:

完成硬件设计和电路连接

周四~周日:

完成软件设计

第二周:

周一~周三:

程序调试

周四~周五:

设计报告撰写。

周五进行答辩和设计结果检查。

三、参考资料

1、王迎旭等.单片机原理及及应用[M].2版.机械工业,2012

2、胡汉才.单片机原理及其接口技术[M].3版.清华大学,2010.

3、戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学,2010

 

第1章总体方案设计

1.1设计任务与要求

设计任务:

本课题要求以MCS-51系列单片机为核心,设计一个超声波测距系统。

(1)用给定的超声波模块制作超声波测距系统,测距围:

0.5~4.5m;

(2)用按键实现测距、清零、复位等控制;

(3)用4位LED数码管显示测量到的距离。

设计要求:

(1)确定系统设计方案;

(2)进行系统的硬件设计;

(3)完成必要的参数计算与元器件选择;

(4)完成应用程序设计;

(5)应用系统的硬件和软件的调试。

1.2超声波测距原理

如图1-1所示,本课题由AT89C52单片机,HC-SR04超声波模块,数码管显示电路,键盘电路,复位电路,晶振电路组成。

本课题设计3个功能键,启动、暂停和复位键。

单片机中有独立式键盘和矩阵式键盘两种,因为用键较少,所以采用独立按键形式。

当按下启动键时,系统开始不断的发出超声波测量当前障碍物的距离,并送至数码管进行显示。

当有暂停键按下时,系统停止测量,数码管显示当前障碍物的距离。

按下复位键,单片机重新启动。

采用单片机来控制的超声波模块测距,先由单片机P2.6口产生一个大于10us的高电平信号给超声波模块的Trig口,超声波模块的Echo口自动置为高电平,定时器开始计时,当碰到障碍物时Echo口变为低电平时,定时器停止计时,得到超声波传播时间T,超声波在空气中的传播速度为C=340m/s,可以计算出发射点距障碍物的距离(s),即:

,其中,D为超声波与障碍物之间的距离。

 

 

图1-1超声波测距框图

 

第2章硬件电路设计

2.1单片机最小电路设计

如图2-1所示。

单片机最小电路包括:

复位电路,晶振电路,单片机芯片。

本次设计采用频率为11.0592MHz的石英晶体振荡器以及两个22pF左右大小的微调电容器构成单片机的部时钟。

按键上电复位电路由10uf电容和10欧电阻,1K欧电阻组成。

数码管的位选接到单片机的P1.0-P1.3口,低电频的时候选通。

数码管的段选接单片机的P0.0-P0.7口,低电平的时候选通。

单片机的P2.0-P2.3分别接到按键的一端,按键另一断接地,通过查询端口电平的变化,来判断是否有键按下。

P2.6,P2.7分别接超声波模块的Trig,Echo口。

 

图2-1最小单片机电路

 

2.2超声波引脚设计

如图2-2所示,P2.6口给Trig口送一个大于10us的高电平,超声波模块的Echo口自动变为高电平,且发出40Khz的超声波,一有输出就立刻开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间。

图2-2超声波发生器

2.3数码管显示电路设计

如图2-3所示,数码管的位选接单片机的P1.0-P1.3口,段选接单片机的P0.0-P0.7口。

本次设计采用LED数码管动态显示方式,此次实验板的数码管共阳极,当有低电平驱动时,数码管亮。

 

图2-3数码管显示电路

2.4键盘连接电路设计

该系统采用三个独立按键控制如图2-4所示,按键一端s1,s2,s3接地,按键另一端接高电平同时接单片机P2.0-P2.3口。

当按键按下时,就给相应的引脚口一个低电平,从而实现控制功能.

图2-4键盘连接电路

第3章软件设计

3.1主程序流程图

主程序流程图如图3-1所示。

系统先初始化,定义端口及其他变量等准备工作。

调用显示程序显示开机状态,然后查键是否有按键按下,如果键按下,在进行键处理。

 

图3-1主程序流程图

 

3.2中断服务程序流程图

中断服务程序如图3-2所示,先装初值,在判断采样时间,如果到了就给超声波高电平,启动计时,然后计算时间。

否则,直接中断返回。

图3-2中断服务程序流程图

3.3键处理程序流程图

键处理流程图如图3-3所示,通过3个独立式按键来实现启动,暂停,复位功能。

当有键按下时,用去抖动去判断是否是误操作,然后在确定具体是哪个键按下,并实现相应的功能。

 

 

 

图3-3键处理程序流程图

 

第4章调试结果

4.1硬件调试

本次课程设计是拿我们自己焊的单片机开发板,将程序烧写进去,得到如下两组数据,第一组为6.5CM,第二组为10.5CM。

图4-1硬件调试结果

图4-2硬件调试结果

第5章总结

两周的课程设计结束了,这对我对单片机的认知又有了很大的提升,以前有的只是单纯的理论知识,但是这次让我的动手能力得到了大大的训练。

虽然从刚开始在网上找到程序的毫无头绪,到后面一步一步慢慢调试出来,其中的困难只有自己能懂。

由于这块板子我们是自己动手焊的,并且还拿着做了一些实验,所以刚开始的时候并不是那么的陌生,但在设计的时候出现了各种各样的问题,比如按键的时候黑屏,测距的时候刷新过快,复位的时候又测了一下数据再清零。

在一次又一次的更改调试下才得到要求的结果,这都让我深刻体会到要做好一件完整的事情,要有系统的思维方式和逻辑方法,要耐心的面对所有问题、要善于用应用各种资源来充实和满足自己。

在欣喜与收获的同时我也看到到了自己的不足之处,对于以前的知识没有进行系统的复习,以为自己已经记得很牢固了,没想到再需要用到的时候早已模糊不清。

以为可以得到想要的实验结果时,却漏洞百出,这也提醒我做事情一定要认真仔细。

最后,我要感我的指导老师,她的严谨细致、一丝不苟的作风是我学习的榜样,她循循善诱的教导和不拘一格的思路给予我无尽的启迪。

同时,我要感我的同学,你们对我的帮助和指导。

 

参考文献

[1]王迎旭等.单片机原理及及应用[M].2版.机械工业,2012

[2]胡汉才.单片机原理及其接口技术[M].3版.清华大学,2010.

[3]戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学,2010

 

如果你不幸是晓秀老师这组的报告看三遍才能交不要慌

附录

附录A超声波测距原理图

 

附录B程序清单

#include

#include

#definestart_signal1

#defineend_signal0

#definekeyboard_clear~(0x0f)

#definekeyboard_set0x0f

#definewei_clear~(0x0f)

unsignedcharwei[4]={0x0e,0x0d,0x0b,0x07};

unsignedcharflag=0,flag1=0;

unsignedintdistance=0,stop_distance=0;time=0,K1=0,K2=0,K=0,K3=0;

unsignedcharcodetable[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

sbittrig=P2^6;

sbitecho=P2^7;

sbitdp=P1^7;

voidinit(void)

{

trig=0;

echo=0;

TMOD=0x11;//设T0为方式1,GATE=1;

TH0=0;

TL0=0;

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;

ET0=1;

ET1=1;//允许T0中断

EA=1;

TR0=0;

TR1=1;

return;

}

voiddelay(unsignedintz)

{

unsignedcharx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

return;

}

voiddisplay(void)

{

unsignedchari=0;

for(;i<4;i++)

{

if(flag==0)

{

switch(i)

{

case0:

P0=table[distance%10000/1000];break;

case1:

P0=table[distance%1000/100];break;

case2:

P0=(table[(distance%100/10)])&0x7f/*增加小数点*/;break;

case3:

P0=table[distance%10];break;

}

}

elseif(flag==1)

{

switch(i)

{

case0:

P0=0xbf;break;

case1:

P0=0xbf;break;

case2:

P0=0xbf;break;

case3:

P0=0xbf;break;

}

}

elseif(flag==2)

{

switch(i)

{

case0:

P0=table[stop_distance%10000/1000];break;

case1:

P0=table[stop_distance%1000/100];break;

case2:

P0=table[stop_distance%100/10]&0x7f;break;

case3:

P0=table[stop_distance%10];break;

}

}

P1=((P1=P1&wei_clear)|wei[i]);

delay

(1);

}

return;

}

voidkeyscan(void)

{

unsignedchartemp=0;

P2=((P2&keyboard_clear)|keyboard_set);

temp=P2;

if((temp&0x0f)!

=0x0f)

{

delay

(1);

temp=P2;

if((temp&0x0f)!

=0x0f)

{

switch(temp&0x0f)

{

case0x0e:

K1=1;break;

case0x0d:

K2=1;break;

case0x0b:

K3=1;break;

default:

break;

}

/*while((temp&0x0f)!

=0x0f)

{

temp=P2;

delay

(1);

}*/

}

}

}

voidstart(void)

{

unsignedchari=10;

trig=start_signal;

while(i--)

_nop_();

trig=end_signal;

}

voidcount(void)

{

floatS1;

time=(TH0)*256+TL0;

TH0=0;

TL0=0;

S1=(time*1.7)/100;//cm

distance=S1*10;

if(flag!

=2)

{

if(distance>=4500)//测量围

flag=1;

else

flag=0;

}

return;

}

voidmain(void)

{

init();

while

(1)

{

keyscan();

if(K1==1)

{

K1=0;

flag1=1;

flag=0;

}

if(K2==1)

{

flag=0;

distance=0;

flag1=2;

K2=0;

}

if(K3==1)

{

flag=2;

flag1=2;

K3=0;

}

display();

}

return;

}

voidtime0()interrupt1

{

flag=1;

}

voidtime1()interrupt3

{

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;

K++;

if(K>=80)

{

K=0;

start();

while(!

echo);

if(flag1==1)

TR0=1;

elseif(flag==2)

TR0=0;

elseif(flag1==2)

{

TR0=0;

distance=0;

}

else

TR0=0;

while(echo);

TR0=0;

if(flag!

=2)

{

count();

stop_distance=distance;

//distance=0;

}

}

}

 

 

单片机原理与应用课程设计评分表

项目

评价

及格

不及格

设计方案的合理性与创造性(10%)

开发板焊接及其调试完成情况*(10%)

硬件设计或软件编程完成情况(20%)

硬件测试或软件调试结果*(10%)

设计说明书质量(20%)

答辩情况(10%)

完成任务情况(10%)

独立工作能力(10%)

出勤情况(10%)

综合评分

课程设计成绩评定为:

□优□良□中□及格□不及格

指导老师签名:

______________

日期:

______________

注:

①表中标*号项目是根据课题实际情况二选一;

      ②此表装订在课程设计说明书的最后一页。

 

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

当前位置:首页 > 自然科学 > 生物学

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

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