课程设计实验报告超声波测距仪的设计.docx

上传人:b****0 文档编号:16912895 上传时间:2023-07-19 格式:DOCX 页数:12 大小:21.66KB
下载 相关 举报
课程设计实验报告超声波测距仪的设计.docx_第1页
第1页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第2页
第2页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第3页
第3页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第4页
第4页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第5页
第5页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第6页
第6页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第7页
第7页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第8页
第8页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第9页
第9页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第10页
第10页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第11页
第11页 / 共12页
课程设计实验报告超声波测距仪的设计.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

课程设计实验报告超声波测距仪的设计.docx

《课程设计实验报告超声波测距仪的设计.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告超声波测距仪的设计.docx(12页珍藏版)》请在冰点文库上搜索。

课程设计实验报告超声波测距仪的设计.docx

课程设计实验报告超声波测距仪的设计

超声波测距仪的设计

一、设计目的

本设计利用超声波传输中距离与时间的关系,采用STC51单片机进行控制和数据处理,设计出能够精确测量两点间距离的超声波测距仪。

同时了解单片机各脚的功能,工作方式,计数/定时,I/O口的相关原理,并稳固学习单片机的相关内容知识。

二、设计要求

1.设计一个超声波测距仪,能够用四段数码管准确显示所测距离

2.精度小于1CM,测量距离大于200CM

三、设计器材

元器件数量

STC51单片机1个

超声波测距模块URF-041个

电阻〔1K2004.7K〕3个

晶振〔12MHz〕1个

共阳极四位数码管1个

极性电容〔33pF〕2个

非极性电容〔22uF〕1个

四、超声波测距系统原理

331.45米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以到达毫米级。

超声波测距的算法设计:

超声波在空气中传播速度为每秒钟340米〔15℃时〕。

X2是声波返回的时刻,X1是声波发声的时刻,X2-X1得出的是一个时间差的绝对值,假定X2-X1=0.03S,那么有340m×0.03S=10.2m。

由于在这10.2m的时间里,超声波发出到遇到返射物返回的距离如下:

  图1测距原理

  超声波测距器的系统框图如下列图所示:

图2系统框图

五、设计方案及分析〔包含设计电路图〕

4.1硬件电路设计

4.1.1单片机最小系统控制模块设计与比拟

方案二:

采用STC51单片机控制。

STC51单片机是一种低功耗、高性能CMOS8位微控制器,具有8KB的系统可编程Flash存储器。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路,能够满足题目设计的所有要求,而且我们对STC51单片机也比拟熟悉,因此我们选择方案二。

最小系统电路图如图3所示

图3单片机最小系统

显示模块设计

采用四位共阳极数码管显示,连接电路简单,显示电路连接图如图4所示

图4数码管显示电路

超声波测距模块

a.本系统采用超声波模块URF04进行测距,该模块使用直流5V供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度距离精确,

盲区〔2cm〕超近。

URF-04工作原理简述

其他电路设计

a.复位电路

单片机在RESET端加一个大于20ms正脉冲即可实现复位,上电复位和按钮组合的复位电路如下:

在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲。

只要该脉冲足够宽就可以实现复位,即ms。

一般取R1,C22uF。

当人按下按钮S1时,使电容C1通过R1迅速放电,待S1弹起后,C再次充电,实现手动复位。

R1一般取200。

图5复位电路

b.时钟电路

3M~24M,电容选择30pF左右。

我们选择晶振为12MHz,电容33pF。

图6时钟电路

c.按键电路

我们通过P1.0来启动测量,程序中通过查询P1.0的电平来检测是否按键被按下,电路原理如下:

当按下按键时P1.0为低电平,单片机通过查询到低电平开始测量距离,当松开按键,P1.0即为高电平。

在软件中通过软件延时来消除按键的机械抖动。

图7按键电路

4.2软件程序设计

软件分为两局部,主程序和中断效劳程序。

分别如图4.4和图4.5所示。

主程序完成初始化工作、超声波发射和接收顺序的控制。

外部中断效劳子程序主要完成时间值的读取、距离计算、结果的输出、数码管显示等工作。

中断程序首先关闭外部中断,关闭计数器,然后读出计数值,根据公式计算距离,然后将结果送往数码管显示。

图8主程序流程图图9外部中断效劳子程序

由于采用的是12MHz的晶振,计数器每计一个数就是1μs,当主程序检测到接收成功的标志位后,将计数器T0中的数〔即超声波来回所用的时间〕按公式计算,即可得被测物体与测距仪之间的距离,设计时取30℃时的声速为340m/s那么有:

 d=(c×t)/2=170T0/10000cm其中,T0为计数器T0的计算值。

六、

测量距离=〔高电平持续时间*波速〕/2。

我们的设计方案是利用计数器0进行计数,通过捕获上升沿和下降沿用计数器来计算高电平的持序时间,实现数据的测量。

然而我们却不能够确定高电平持续时间和计数器的计数值之间的换算关系,为此我们讨论了很久,最终找到了答案,高电平持续时间=计数值×单片机的机器周期〔1us〕。

虽然学习了单片机这么久,但是对于一些根底概念没有清晰的认识,导致了这种错误。

2.在设计数码管显示电路时,我们本来打算利用74HC573锁存器,但是发现这样硬件电路会复杂很多,另外由于此设计功能要求并不复杂,所以我们舍弃了这一局部。

另外在刚开始连接电路时,发现连好之后,数码管不亮,最后我们分析电路,单片机IO口输出电流太小,缺乏以驱动数码管,于是我们加了一个与门的驱动器,使之前的3A电流变为5A,由此数码管就足以驱动。

七、设计结果

a.测试环境及工具

测试距离:

在实验室的特定环境中测量了0.02~3.15m。

测试仪器:

数字万用表,直尺。

超声波测距测距仪的硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。

用直尺确定障碍物的距离,数码管显示测量的距离。

c.测试结果分析。

测距仪能测的范围为0.02~3.15m,测距仪最大误差不超过1cm。

系统调试完后应对测量误差和重复一致性进行屡次实验分析,不断优化系统使其到达实际使用的测量要求。

由于条件有限,我们忽略温度的影响,不进行温度补偿,声速选取340m/s.

调试测量的局部测距数据如表6-2所示:

显示距离〔m〕

实际距离〔m〕

误差〔m〕

1

0.042

0.041

0.001

2

0.081

0.080

0.001

3

6.09

6.00

0.09

4

1.203

1.200

0.003

5

1.802

1.800

0.002

表1调试测量的局部数据

八、设计体会与收获

朱敏:

,还有各种中断,但却没有时机实践,一直只有理论的学习,通过这次课程设计我才真正了解其中的原理。

我的任务是硬件的总体设计以及相关焊接工作,刚开始我拿到题目的时候很不知道应该怎么做,再讯查完资料后,自己大概知道了电路需要哪些模块,下来就是针对每个模块进行具体设计,同时我还要进行一些仿真,其中应用哪些电阻,电容,这都要通过仿真来确定,期间遇到很多困难,都是团体同伴帮助我的,这也让我认识到团体的合作精神。

通过本次课程设计我不光复习了模电知识及单片机知识,锻炼了动手能力,同时也熟悉掌握了proteus仿真软件和Protel电路设计软件的使用,对于我们测控专业的学生来说,Proteus和Protel是必须掌握的电路仿真软件,这次课程设计给我提供了一个很好的时机锻炼自己的实践能力,我想对于我们工科学生来说动手能力是很重要的,以前每天只是在教室里面学习理论知识,而没有时机将理论与实践结合起来。

 

李蕊蕊:

我这次的课程设计的主要任务是对于超声波测距模块的设计和一些其他设计仿真工作,经过我们的屡次的样机制作发现,超声波的发射和接收头比拟脆弱,不要随意的拨动它们。

而且超声波元件的价格比拟昂贵,所以制作时候需要特别小心。

刚开始设计的电路显示局部使用了两个锁存器,但是在实际焊接时发现连线很乱、很麻烦,然后就想可不可以去掉锁存器。

在仿真图上一试果然可以显示。

这样简化了硬件电路,实际连接很方便。

要学会设计,必须熟悉了解其中的原理,对此,我觉得我做的很好,对一起的每个管脚等等我都必须要熟悉,所以课下我特别的去了解了各个硬件的原理,这有助于我之后实际。

最后我觉得我们组这次课设成功的关键在与我们组员之间的团结和不放弃的精神,从电路设计到仿真,再到焊接电路,我们遇到了很多困难,但是我们没有放弃,也没有互相抱怨,而是一直呆在一起,讨论不断改良,最终我们取得了成功。

还有就是今后做设计时要多想、多试,不断修改程序,尽量简化硬件。

朱奇峰:

这次课程设计老师给我们的题目是超声波测距仪的设计,通过对本功能模块的调试,本功能模块完成了测量仪设计的目的和要求,在焊接好硬件电路并编写好软件程序后,经过长时间的调试并不断的改良方案,最终我们得到了预期的结果。

这也让我再次认识到了团体合作的力量。

我这次课程设计的任务是对于显示模块的设计,他不仅包括硬件的还有软件的设计,所以我必须把数码管和一些显示电路设置他们与单片机连接的管脚等等的全部内容要搞清楚,所以课后我也下了些功夫去查些资料什么的研究它,最终定下了一些结论比方采用四位共阳极数码管显示等等。

在此期间,我认为团体协作是非常重要的,譬如我有好多不懂的问题可以互相讨论,还有我们每个人设计任务都是有联系的,比方说我设计的一些显示的电路和单片机怎么连接,又如何显示我比须告诉设计编程的周腾,这样他才能更好地完成编程任务。

在刚开始连接电路时,发现连好之后,数码管不亮,最后我们分析电路,单片机IO口输出电流太小,缺乏以驱动数码管,于是我们加了一个与门的驱动器,使之前的3A电流变为5A,由此数码管就足以驱动。

周腾:

我这此课程设计的任务是软件程序的编写,这占了此次设计的最主要的工作,最后就每个模块开始编程,编完程对其不断检查和改良。

本系统采用模块化设计,由主程序、发射子程序、接收子程序、定时子程序、显示子程序等模块组成。

该系统的主程序处于键控循环工作方式,当按下测量键时,主程序开始调用发射子程序、查询接收子程序、定时子程序,并把测量结果用显示子程序在数码显示器上显示出来。

总体来说这次课程设计真的收获颇多,不仅复习了课本知识,最重要的是锻炼了自己的动手能力,将理论与实际很好的结合起来,而且第一次感觉到靠自己做出了自己专业的东西,很有成就感。

但莉:

这次课程设计我的主要任务是电路焊接,当任安他们把程序设计好之后我就开始焊接电路了,我们组由于使用的是超声波集成模块URF-04,相比与其他组我们的硬件焊接任务少了很多,主要也就是焊接单片机最小系统和数码管显示电路,开始我任务很简单,一个早上搞定。

然而当我焊完之后发现数码管并不显示,通过分析电路我才发现单片机输出电流太小,缺乏以驱动数码管点亮,于是我在每个数码管的位选端之前加了一个与门用以放大电流,这样数码管就亮了。

另外在设计单片机最小系统的时候忽略了复位电路的作用,焊接时出现错误,在课设快要结束的时候才发现这个错误,每次只是通过电源开关来复位。

在软件程序设计的时候我们也出现了很多问题,由于是第一次使用数码管和单片机,对于数码管的工作原理及单片机个功能引脚的使用都不清楚,在编写程序的时候都是一边翻开课本一边上网查资料,才把程序框架设计出来,硬件电路焊接好之后不断改良程序,才到达设计目标。

这次实习我不但学到了很多实际的东西,还体会到了团队合作的精神。

附录Ⅰ:

超声波测距仪系统电路原理图

图10超声波测距仪系统电路原理图

附录Ⅱ:

程序代码

#include

#include

#include

#defineCONTROL_PERIOD1000

Unsignedintcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0123456789共阳极编码表

unsignedintcodetable_point[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//0123456789共阳极编码表(带小数点)

sbitLed1=P2^0;//位选端1

sbitLed2=P2^1;//位选端2

sbitLed3=P2^2;//位选段3

sbitLed4=P2^3;//位选段4

sbitTX=P1^0;//超声波接收端与单片机接口

unsignedintqian,bai,shi,ge;//定义变量

unsignedinttime_period=0;

unsignedintcount=0;

voiddelay_xms(unsignedintxms)//延时xms毫秒;

{unsignedinti,j;

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

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

}

{qian=temp/1000;//取得千位值

bai=(temp%1000)/100;//取得百位值

shi=(temp%100)/10;//取得十位值

ge=temp%10;//取得个位值

P2=0;//初始化P2端口

Led1=1;//选择位选端1,使Led1使能端翻开,千位显示;

P0=table_point[qian];//查表给P0口赋值,点亮数码管

delay_xms

(1);//延时1ms

P2=0;//初始化P2端口

Led2=1;//选择位选端2,使Led2使能端翻开,百位显示;

P0=table[bai];//查表给P0口赋值,点亮数码管

delay_xms

(1);//延时1ms

P2=0;//初始化P2端口

Led3=1;//选择位选端3,使Led3使能端翻开,十位显示;

P0=table[shi];//查表给P0口赋值,点亮数码管

delay_xms

(1);//延时1ms

P2=0;//初始化P2端口

Led4=1;//选择位选端3,使Led3使能端翻开,个位显示;

P0=table[ge];//查表给P0口赋值,点亮数码管

delay_xms

(1);//延时1ms

}

voidstart(void)//发射持续时间为15us的高电平,启动超声波测距模块,发出超声波;

{unsignedinta;

TX=0;

_nop_();

TX=1;

for(a=15;a>0;a--)

_nop_();

TX=0;

}

voidmeasure_init(void)

{TCON|=0X01;//控制存放器:

TF1TR1TF0TR0IE1IT1IE0IT0;00000001中断0下降沿触发;

TMOD|=0X19;//工作方式存放器:

GATA1C/T1M1M0GATA0C/T0M1M0计数器1工作在方式一;

//计数器0也工作在方式一,INT0和TR0必须都有效时才工作;

TH1=(65536-CONTROL_PERIOD)/256;

TL1=(65536-CONTROL_PERIOD)%256;

TR1=1;//翻开计数器1,计数器1开始计数;

TH0=0;//给计数器0附初值,高八位为0;

TL0=0;//给计数器0附初值,低八位为0;

TR0=1;//翻开定时器0

IE=0X89;//中断允许存放器:

EA()()ESET1EX1ET0EX010001001,外部中断0允许中断,计数器1也允许中断;

}

voidmain(void)

{measure_init();

while

(1)

{if(time_period)

display((unsignedint)(time_period*0.17));

else

display(8888);

}

}

voidextern0_measure_server(void)interrupt0//外部中断0的中断程序

{time_period=TH0*256+TL0;

TH0=0;

TL0=0;

}

voidtimer1_isr(void)interrupt3//计数器1的中断程序

{TR1=0;

TH1=(65536-CONTROL_PERIOD)/256;

TL1=(65536-CONTROL_PERIOD)%256;

count++;

if(count>=500)//0.5秒刷新一下显示;

{start();

count=0;

}

TR1=1;

}

附录Ⅲ:

参考文献

[1]康华光.

[2]

[3]

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2