课程设计实验报告超声波测距仪的设计_第1页
课程设计实验报告超声波测距仪的设计_第2页
课程设计实验报告超声波测距仪的设计_第3页
课程设计实验报告超声波测距仪的设计_第4页
课程设计实验报告超声波测距仪的设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安邮电大学单片机课程设计报告书题目:超声波测距仪的设计院系名称自动化学院学生姓名朱敏(06) 李蕊蕊(12) 朱奇峰(18)周腾(19) 但莉(22)专业名称测控技术与仪器班 级测控0901班时间2012年 5 月 21 日 至 6 月3 日 超声波测距仪的设计一、设计目的本设计利用超声波传输中距离与时间的关系,采用stc51单片机进行控制和数据处理,设计出能够精确测量两点间距离的超声波测距仪。同时了解单片机各脚的功能,工作方式,计数/定时,i/o口的相关原理,并巩固学习单片机的相关内容知识。二、设计要求1.设计一个超声波测距仪,能够用四段数码管准确显示所测距离2.精度小于1cm,测量距离大

2、于200cm三、设计器材元器件 数量stc51单片机 1个超声波测距模块urf-04 1个电阻(1k 200 4.7k) 3 个晶振(12mhz) 1 个共阳极四位数码管 1 个极性电容(33pf) 2 个非极性电容(22uf) 1 个四、超声波测距系统原理在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。超声测距大致有以下方法: 取输出脉冲的平均值电压,该电压 (其幅值基本固定 )与距离成正比,测量电压即可测得距离; 测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔 t,故被测距离为 s=12vt。

3、本测量电路采用第二种方案。由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变 。如果测距精度要求很高,则应通过温度补偿的方法加以校正。超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0m晶振,所以此系统的测量精度理论上可以达到毫米级。超声波测距的算法设计: 超声波在空气中传播速度为每秒钟340米(15时)。x2是声波返回的时刻,x1是声波发声的时刻,x2-x1得出的是一个时间差的绝对值,假定x2-x1=0.03s,则有340m0.03s=10.2m。由于在这10.2m的时间里,超声波发出到遇到返射物返

4、回的距离如下: 图1 测距原理超声波测距器的系统框图如下图所示: 图2 系统框图五、设计方案及分析(包含设计电路图)4.1 硬件电路设计 4.1.1 单片机最小系统控制模块设计与比较方案一:采用msp430系列的16位单片机,它是16位控制器,具有体积小、驱动能力强、可靠性高、功耗低、结构简单、具有语音处理、运算速度快等优点,但考虑到我们小组对这个方案采用的微处理器并不熟悉,使用起来并不是很方便。因此我们决定不再使用此方案,考虑其他方案。方案二:采用stc51单片机控制。stc51单片机是一种低功耗、高性能cmos8位微控制器,具有 8kb的系统可编程flash 存储器。at89s52具有以下

5、标准功能: 8k字节flash,256字节ram, 32 位i/o 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路,能够满足题目设计的所有要求,而且我们对stc51单片机也比较熟悉,因此我们选择方案二。最小系统电路图如图3所示图3 单片机最小系统4.1.2 显示模块设计采用四位共阳极数码管显示,连接电路简单,显示电路连接图如图4所示图4 数码管显示电路4.1.3 超声波测距模块a.本系统采用超声波模块urf04进行测距,该模块使用直流5v供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度

6、距离精确,盲区(2cm)超近。urf-04工作原理简述超声波测距原理:单片机给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40khz的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。这段高电平持续时间即为超声波从发射到返回的传播时间。测量距离=(高电平持续时间*波速)/2。4.1.4 其他电路设计a.复位电路 单片机在reset端加一个大于20ms正脉冲即可实现复位,上电复位和按钮组合的复位电路如下:在系统上电的瞬间,rst与电源电压同电位,随着电容的电压逐渐上升,rst电位下

7、降,于是在rst形成一个正脉冲。只要该脉冲足够宽就可以实现复位,即ms。一般取r1,c22uf。当人按下按钮s1时,使电容c1通过r1迅速放电,待s1弹起后,c再次充电,实现手动复位。r1一般取200。 图5 复位电路b.时钟电路 当使用单片机的内部时钟电路时,单片机的xatl1和xatl2用来接石英晶体和微调电容,如图所示,晶体一般可以选择3m24m,电容选择30pf左右。我们选择晶振为12mhz,电容33pf。 图6 时钟电路c. 按键电路 我们通过p1.0来启动测量,程序中通过查询p1.0的电平来检测是否按键被按下,电路原理如下: 当按下按键时p1.0为低电平,单片机通过 查询到低电平开

8、始测量距离,当松开按键,p1.0即为高电平。在软件中通过软件延时来消除按键的机械抖动。 图 7按键电路 4.2软件程序设计软件分为两部分,主程序和中断服务程序。分别如图4.4和图4.5所示。主程序完成初始化工作、超声波发射和接收顺序的控制。外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出、数码管显示等工作。主程序首先是对超声波模块初始化,通过延时函数产生10us的高电平,再将计数器初始化,判断超声波接收端是否收到回波,进而执行外部中断程序。中断程序首先关闭外部中断,关闭计数器,然后读出计数值,根据公式计算距离,然后将结果送往数码管显示。 图8主程序流程图 图9 外部中断服务子程序为

9、了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12 mhz的晶 振,计数器每计一个数就是1s,当主程序检测到接收成功的标志位后,将计数器t0中的数(即超声波来回所用的时间)按公式计算,即可得被测物体与测距仪之间的距离,设计时取30时的声速为340 m/s则有:d=(ct)/2=170t0/10000cm 其中,t0为计数器t0的计算值。六、问题分析与解决方法1.在拿到设计要求之后,我们确定采用超声波测距模块,根据超声波模块的工作原理:给超声波传感器模块一个触发电平

10、,超声波传感器的发射管自动发送8个40khz的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。这段高电平持续时间即为超声波从发射到返回的传播时间。测量距离=(高电平持续时间*波速)/2。我们的设计方案是利用计数器0进行计数,通过捕获上升沿和下降沿用计数器来计算高电平的持序时间,实现数据的测量。然而我们却不能够确定高电平持续时间和计数器的计数值之间的换算关系,为此我们讨论了很久,最终找到了答案,高电平持续时间=计数值单片机的机器周期(1us)。虽然学习了单片机这么久,但是对于一些基础概念没有清晰的

11、认识,导致了这种错误。2.在设计数码管显示电路时,我们本来打算利用74hc573锁存器,但是发现这样硬件电路会复杂很多,另外由于此设计功能要求并不复杂,所以我们舍弃了这一部分。另外在刚开始连接电路时,发现连好之后,数码管不亮,最后我们分析电路,单片机io口输出电流太小,不足以驱动数码管,于是我们加了一个与门的驱动器,使之前的3a电流变为5a,由此数码管就足以驱动。七、设计结果a测试环境及工具测试距离:在实验室的特定环境中测量了0.023.15m。测试仪器:数字万用表,直尺。b测试方法超声波测距测距仪的硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。用直尺确定障碍物的距离,数码管

12、显示测量的距离。c测试结果分析。测距仪能测的范围为0.023.15m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。由于条件有限,我们忽略温度的影响,不进行温度补偿,声速选取340m/s.调试测量的部分测距数据如表6-2所示:测试序号显示距离(m)实际距离(m)误差(m)10.0420.0410.00120.0810.0800.00136.096.000.0941.2031.2000.00351.8021.8000.002 表1 调试测量的部分数据八、设计体会与收获朱敏:虽然这次课程设计只有短短两周,但让我对大二所学的

13、模电知识及刚刚学习的单片机知识有了更深的理解,同时这也是难得的一次理论与实践相结合的机会,以前只是在书本上学单片机可实现的很多功能,还有各种中断,但却没有机会实践,一直只有理论的学习,通过这次课程设计我才真正了解其中的原理。我的任务是硬件的总体设计以及相关焊接工作,刚开始我拿到题目的时候很不知道应该怎么做,再讯查完资料后,自己大概知道了电路需要哪些模块,下来就是针对每个模块进行具体设计,同时我还要进行一些仿真,其中应用哪些电阻,电容,这都要通过仿真来确定,期间遇到很多困难,都是团体同伴帮助我的,这也让我认识到团体的合作精神。通过本次课程设计我不光复习了模电知识及单片机知识,锻炼了动手能力,同时

14、也熟悉掌握了proteus仿真软件和protel电路设计软件的使用,对于我们测控专业的学生来说,proteus和protel是必须掌握的电路仿真软件,这次课程设计给我提供了一个很好的机会锻炼自己的实践能力,我想对于我们工科学生来说动手能力是很重要的,以前每天只是在教室里面学习理论知识,而没有机会将理论与实践结合起来。李蕊蕊:我这次的课程设计的主要任务是对于超声波测距模块的设计和一些其他设计仿真工作,经过我们的多次的样机制作发现,超声波的发射和接收头比较脆弱,不要随意的拨动它们。而且超声波元件的价格比较昂贵,所以制作时候需要特别小心。刚开始设计的电路显示部分使用了两个锁存器,但是在实际焊接时发现

15、连线很乱、很麻烦,然后就想可不可以去掉锁存器。在仿真图上一试果然可以显示。这样简化了硬件电路,实际连接很方便。要学会设计,必须熟悉了解其中的原理,对此,我觉得我做的很好,对一起的每个管脚等等我都必须要熟悉,所以课下我特别的去了解了各个硬件的原理,这有助于我之后实际。最后我觉得我们组这次课设成功的关键在与我们组员之间的团结和不放弃的精神,从电路设计到仿真,再到焊接电路,我们遇到了很多困难,但是我们没有放弃,也没有互相抱怨,而是一直呆在一起,讨论不断改进,最终我们取得了成功。还有就是今后做设计时要多想、多试,不断修改程序,尽量简化硬件。朱奇峰:这次课程设计老师给我们的题目是超声波测距仪的设计,通过

16、对本功能模块的调试,本功能模块完成了测量仪设计的目的和要求,在焊接好硬件电路并编写好软件程序后,经过长时间的调试并不断的改进方案,最终我们得到了预期的结果。这也让我再次认识到了团体合作的力量。我这次课程设计的任务是对于显示模块的设计,他不仅包括硬件的还有软件的设计,所以我必须把数码管和一些显示电路设置他们与单片机连接的管脚等等的全部内容要搞清楚,所以课后我也下了些功夫去查些资料什么的研究它,最终定下了一些结论比如采用四位共阳极数码管显示等等。在此期间,我认为团体协作是非常重要的,譬如我有好多不懂的问题可以互相讨论,还有我们每个人设计任务都是有联系的,比如说我设计的一些显示的电路和单片机怎么连接

17、,又如何显示我比须告诉设计编程的周腾,这样他才能更好地完成编程任务。在刚开始连接电路时,发现连好之后,数码管不亮,最后我们分析电路,单片机io口输出电流太小,不足以驱动数码管,于是我们加了一个与门的驱动器,使之前的3a电流变为5a,由此数码管就足以驱动。周腾:我这此课程设计的任务是软件程序的编写,这占了此次设计的最主要的工作部分,之前自己对单片机在书本上的知识还比较了解,所以自己认为编程应该没什么大问题,在认识了超声波测距设计的一些原理和硬件的总体模块之后,我开始了编程,由于用的是c,我差不多把c都忘了一些,所以在课后我又补充了这些知识,这对我有极大的帮助。之后我现在脑子里把具体程序的模块划分

18、出来,然后对每个模块进行流程图设计,最后就每个模块开始编程,编完程对其不断检查和改进。本系统采用模块化设计,由主程序、发射子程序、接收子程序、定时子程序、显示子程序等模块组成。该系统的主程序处于键控循环工作方式,当按下测量键时,主程序开始调用发射子程序、查询接收子程序、定时子程序,并把测量结果用显示子程序在数码显示器上显示出来。总体来说这次课程设计真的收获颇多,不仅复习了课本知识,最重要的是锻炼了自己的动手能力,将理论与实际很好的结合起来,而且第一次感觉到靠自己做出了自己专业的东西,很有成就感。但莉:这次课程设计我的主要任务是电路焊接,当任安他们把程序设计好之后我就开始焊接电路了,我们组由于使

19、用的是超声波集成模块urf-04,相比与其他组我们的硬件焊接任务少了很多,主要也就是焊接单片机最小系统和数码管显示电路,开始我任务很简单,一个早上搞定。然而当我焊完之后发现数码管并不显示,通过分析电路我才发现单片机输出电流太小,不足以驱动数码管点亮,于是我在每个数码管的位选端之前加了一个与门用以放大电流,这样数码管就亮了。另外在设计单片机最小系统的时候忽略了复位电路的作用,焊接时出现错误,在课设快要结束的时候才发现这个错误,每次只是通过电源开关来复位。在软件程序设计的时候我们也出现了很多问题,由于是第一次使用数码管和单片机,对于数码管的工作原理及单片机个功能引脚的使用都不清楚,在编写程序的时候

20、都是一边翻开课本一边上网查资料,才把程序框架设计出来,硬件电路焊接好之后不断改进程序,才达到设计目标。这次实习我不但学到了很多实际的东西,还体会到了团队合作的精神。附录:超声波测距仪系统电路原理图图10 超声波测距仪系统电路原理图附录:程序代码#include #include#include#define control_period 1000unsigned int code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/0123456789 共阳极编码表unsigned int code table_point=0x40

21、,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/0123456789共阳极编码表(带小数点)sbit led1 = p20; /位选端1sbit led2 = p21; /位选端2sbit led3 = p22; /位选段3sbit led4 = p23; /位选段4sbit tx = p10; /超声波接收端与单片机接口unsigned int qian,bai,shi,ge; /定义变量unsigned int time_period=0;unsigned int count=0;void delay_xms(unsigned int xms)

22、 /延时xms毫秒; unsigned int i,j; for(i=xms;i0;i-) for(j=110;j0;j-);void display (unsigned int temp) /显示函数,数码管动态显示 qian=temp/1000; /取得千位值 bai=(temp%1000)/100; /取得百位值 shi=(temp%100)/10; /取得十位值 ge=temp%10; /取得个位值 p2=0; /初始化p2端口 led1=1; /选择位选端1,使led1使能端打开,千位显示; p0=table_pointqian; /查表给p0口赋值,点亮数码管 delay_xms(

23、1); /延时1ms p2=0; /初始化p2端口 led2=1; /选择位选端2,使led2使能端打开,百位显示; p0=tablebai; /查表给p0口赋值,点亮数码管 delay_xms(1); /延时1ms p2=0; /初始化p2端口 led3=1; /选择位选端3,使led3使能端打开,十位显示; p0=tableshi; /查表给p0口赋值,点亮数码管 delay_xms(1); /延时1ms p2=0; /初始化p2端口 led4=1; /选择位选端3,使led3使能端打开,个位显示; p0=tablege; /查表给p0口赋值,点亮数码管 delay_xms(1); /延时1ms void start(void) /发射持续时间为15us的高电平,启动超声波测距模块,发出超声波; unsigned int a; tx=0; _nop_(); tx=1; for(a=15;a0;a-) _nop_(); tx=0;void measure_init(void) tcon|=0x01; /控制寄存器:tf1 tr1 tf0 tr0 ie1 it1 ie0 it0;0000 0001中断0下降沿触发; tmod|=0x19; /工作方式寄存器:gata1 c/t1 m1 m0 gata0 c/t0 m1 m0 计数器1工作在方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论