单片机超声波测距模块_第1页
单片机超声波测距模块_第2页
单片机超声波测距模块_第3页
单片机超声波测距模块_第4页
单片机超声波测距模块_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、实验总成绩: 装 订 线报告份数: 1份 西安邮电大学 通信与信息工程学院 课程设计实验报告专业班级: 电科1003班 学生姓名: 易海博 学号(班内序号): 03102085(13) 2014 年 3 月 25 日成绩鉴定表学生姓名易海博班级/学号电科1003班/03102085进行时间2014年3月 1日 2014年3月28日成绩鉴定学习内容(20分)与教学任务计划结合程度(10分)与专业培养结合程度(6分)其它(4分)学习态度评价(20分)实践能力(10分)学习态度(6分)学习纪律(4分)报告鉴定(60分) 报告内容与实践过程紧密结合(15分)报告内容与教学计划内容紧密结合(15分)报告

2、质量(主题、结构、观点、逻辑、资料、字数 30分)评阅教师姓名陈瑞职称讲师成绩评语 评阅教师签字 年 月 日 超声波测距模块设计一设计目的本设计利用超声波传输中距离与时间的关系,采用STC51单片机进行控制和数据处理,设计出能够精确测量两点间距离的超声波测距仪。同时了解单片机各个管脚的功能,工作方式,计数/定时,I/O口相关的原理,并了解学习单片机的相关内容知识。二设计要求设计一个超声波测距仪,能够用1602屏实时显示测量的数据,并要求设定一定距离下提示报警。三设计器材 元器件 数量 电阻 2个 HC-SR04(超声波测距模块) 1片 HJ1602A(液晶显示模块) 1片 单片机最小系统板 1

3、个4 超声波测距原理 在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。超声测距有以下方法:取输出脉冲的平均值电压,该电压(其幅值基本固定)与距离成正比,测量电压即可测得距离;测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔t,故被测距离为S=1/2vt。本测量电路采用第二种方案。由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变。如果测距精度要求很高,则应通过温度补偿的方法加以校正。超声波在标准空气中的传播速度为331.45m/s,由单片机负责计时,单片机使用12.0M晶振。超声波测

4、距的算法设计:超声波在空气中传播速度为每秒钟340米(15时),x1是声波返回的时刻,x2是声波发声的时刻,x2-x1得出的是一个时间差的绝对值,则超声波发出遇到反射物返回的距离如下1 超声波测距器的系统框图如下2 图1 图2 系统框图五、设计方案及分析(包含设计电路图)硬件电路设计 1.单片机最小系统控制模块设计与比较采用STC51单片机控制。STC51单片机是一种低功耗、高性能CMOS8位微控制器,具有 8KB的系统可编程Flash 存储器。最小系统电路图如图3所示图3 单片机最小系统2. 显示模块设计HJ1602A显示,连接电路简单,显示电路连接图如图4图4 显示屏电路3. 超声波测距模

5、块图5 超声波电路本系统采用超声波模块URF04进行测距,该模块使用直流5V供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度距离精确,盲区(2cm)超近。超声波测距原理:单片机给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40KHZ的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。这段高电平持续时间即为超声波从发射到返回的传播时间。测量距离=(高电平持续时间*波速)/2。4 .其他电路设计a.复位电路单片机在RESET端加一个大于20ms正脉冲即

6、可实现复位,上电复位和按钮组合的复位电路如下:图6 复位电路在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲。只要该脉冲足够宽就可以实现复位,即(RC(20ms。一般取R(1K(,C(22uF。当人按下按钮S1时,使电容C1通过R1迅速放电,待S1弹起后,C再次充电,手动复位。R1一般取200(。b.时钟电路当使用单片机的内部时钟电路时,单片机的XATL1和XATL2用来接石英晶体和微调电容,如图所示,晶体一般可以选择3M24M,电容选择30pF左右。我们选择晶振为12MHz,电容33pF。图7 时钟电路图 8按键电路c. 按键电路我

7、们通过P1.0来启动测量,程序中通过查询P1.0的电平来检测是否按键被按下,电路原理如下:当按下按键时P1.0为低电平,单片机通过 查询到低电平开始测量距离,当松开按键,P1.0即为高电平。在软件中通过软件延时来消除按键的机械抖动。5.软件程序设计软件分为两部分,主程序和中断服务程序。主程序完成初始化工作、超声波发射和接收顺序的控制。外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出、数码管显示等工作。主程序首先是对超声波模块初始化,通过延时函数产生10us的高电平,再将计数器初始化,判断超声波接收端是否收到回波,进而执行外部中断程序。中断程序首先关闭外部中断,关闭计数器,然后读出计

8、数值,根据公式计算距离,然后将结果送往数码管显示。图9主程序流程图图10 外部中断服务子程序为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12 MHz的晶 振,计数器每计一个数,就是1s,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按公式计算,即可得被测物体与测距仪之间的距离,设计时取30时的声速为340 m/s则有: d=(c×t)/2=170T0/10000cm 其中,T0为计数器T0的计算值。六、问题分析与解决方

9、法1.在拿到设计要求之后,我们根据超声波模块的工作原理:给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40KHZ的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。这段高电平持续时间即为超声波从发射到返回的传播时间。测量距离=(高电平持续时间*波速)/2。我们的设计方案是利用计数器0进行计数,通过捕获上升沿和下降沿用计数器来计算高电平的持序时间,实现数据的测量。而且经讨论学习后知道,高电平持续时间=计数值×单片机的机器周期(1us)。2.在设计数码管显示电路时,在刚开始

10、连接电路时,发现连好之后,数码管不亮,最后我们分析电路,单片机IO口输出电流太小,不足以驱动数码管,于是我们加了一个与门的驱动器,使之前的3A电流变为5A,由此数码管就足以驱动。七、设计结果a测试环境及工具测试距离:在实验室的特定环境中测量了0.032.15m。测试仪器:数字万用表,直尺。b测试方法超声波测距测距仪的硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。用直尺确定障碍物的距离,数码管显示测量的距离。c测试结果分析测距仪能测的范围为0.032.15m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求

11、。由于条件有限,我们忽略温度的影响,不进行温度补偿,声速选取340m/s.调试测量的部分测距数据如下表所示:测试序号显示距离(m)实际距离(m)误差(m)10.0350.0340.00121.001.00031.2571.2550.00241.3641.3650.00152.1482.1470.001调试测量的部分数据八、设计体会与收获本次试验目的为设计利用超声波传输中距离与时间的关系,采用STC51单片机进行控制和数据处理,设计出能够精确测量两点间距离的超声波测距仪。我们这次设计共有三个模块,分别是超声波模块,显示屏模块和报警模块。一开始搭建完成后,在调试的时候出现了很多问题,后来经过重新检

12、查,最后才完成。这次课程设计虽然只有短短两周的时间,但却是一次难得的理论与实践相结合的机会,以前只是在书本上学习到单片机可以实现的很多功能,但却没有机会实践,通过本次课程设计我不光复习了模电知识及单片机知识,锻炼了动手能力,同时也熟悉掌握了proteus仿真软件和Protel电路设计软件的使用。对于我们电科专业的学生来说,Proteus和Protel是必须掌握的电路仿真软件,这次课程设计给我提供了一个很好的机会,让我可以很好地锻炼自己的实践能力。总的来说,此次实习还是收获颇丰的,很感谢学校可以给我们提供这样的一次机会。附录:超声波测距仪系统电路原理图图11超声波测距仪系统电路原理图附录:程序代

13、码#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit trig=P12; sbit echo=P32; sbit test=P13; sbit dula=P26; sbit wela=P27; sbit BEEP=P23;sbit rs=P10;sbit rw=P11;sbit lcden=P25;sbit k1=P34;uchar table1="Distance Test:"uchar table2=&qu

14、ot;000.0cm"uchar cache4=0,0,0,0;uint distance,timeh,timel,flag;void delay(uint x)uint a,b;for(a=x;a>0;a-)for(b=10;b>0;b-); void delay1(uint x)uint a,b;for(a=x;a>0;a-)for(b=100;b>0;b-); void delay20us() uchar a; for(a=0;a<100;a+); /*void beer() BEEP=0; delay2(10); */ void initime0

15、() TMOD=0x01; TH0=0; TL0=0; EA=0; ET0=0; EX0=0; voidestern() interrupt 0 timeh=TH0; timel=TL0; flag=1; EX0=0; TR0=0; void write_com(uchar com) P0=com;rs=0;lcden=0;delay(10);lcden=1;delay(10);lcden=0;void write_date(uchar date)P0=date;rs=1;lcden=0;delay(10);lcden=1;delay(10);lcden=0;void init() rw=0;

16、dula=0;wela=0;write_com(0x38); delay(20);write_com(0x0f); delay(20);write_com(0x06); delay(20);write_com(0x01); delay(20); void display(distance) uchar a; cache1=distance/1000; cache2=distance%1000/100; cache3=distance%100; cache4=distance%10; table20=cache1+'0' table21=cache2+'0' ta

17、ble22=cache3+'0' table24=cache4+'0' write_com(0x80+2); delay(20);for(a=0;a<13;a+) write_date(table1a);delay(20); write_com(0xc0+9);delay(50);for(a=0;a<13;a+) write_date(table2a);delay(40); void shixi() EA=0; echo=1; trig=1; delay20us(); trig=0; while(echo=0); flag=0; EA=1; EX0=1; TR0=1; TH0=0; TL0=0; delay1(50); TR0=0; EX0=0; if(flag=1) uint tim

温馨提示

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

评论

0/150

提交评论