![超声波测距实训报告_第1页](http://file4.renrendoc.com/view/272c3677694b964006e61e028b3d3986/272c3677694b964006e61e028b3d39861.gif)
![超声波测距实训报告_第2页](http://file4.renrendoc.com/view/272c3677694b964006e61e028b3d3986/272c3677694b964006e61e028b3d39862.gif)
![超声波测距实训报告_第3页](http://file4.renrendoc.com/view/272c3677694b964006e61e028b3d3986/272c3677694b964006e61e028b3d39863.gif)
![超声波测距实训报告_第4页](http://file4.renrendoc.com/view/272c3677694b964006e61e028b3d3986/272c3677694b964006e61e028b3d39864.gif)
![超声波测距实训报告_第5页](http://file4.renrendoc.com/view/272c3677694b964006e61e028b3d3986/272c3677694b964006e61e028b3d39865.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广东水利电力职业技术学院课程设计/实训报告(2013-2014学年第2学期)学生:提交日期:2014年6月27日学生签名:学号学院自动化系课程名称单片机接口技术任课教师教师评语:成绩评定教师签名超声波测距摘要:使用单片机处理系统对超声波模块的控制并对超声波模块输出的信号进行处理,主要功能是测距。低于100CM时会通过蜂鸣器报警。关键词:单片机、超声波、测距UltrasonicrangingAbstract:
theuseof
singlechipmicrocomputer
processingsystem
ofultrasoniccontrolmodule
and
signalofthe
ultrasonic
moduleoutput
processing,
themainfunctionisto
distance.
Below100CM
thebuzzer
alarm.Keywords:
singlechipmicrocomputer,
ultrasonic,
ranging一、设计要求及目标1.阅读相关文献,学习超声波测距原理;2.根据网上提供的用户说明,熟悉所提供的超声波模块接口特性。3.设计并搭建超声波测距电路,调试电路,令模块正常工作。4.加载传感器的单片机驱动程序,实现测距功能,并确定测试范围,进行误差分析:1)距离的测定:根据测距公式,如果测试距离是4米,那么模块输出的高电平时间将是多久?如果测试距离是2cm,模块输出的高电平时间又是多久?采用周期性查询(模块输出高电平时间)的方法,测量模块输出高电平的时间。请问该查询周期时间设定为多少合适?2)根据电路连接图,设计单片机的测距程序。将测试距离以cm为单位显示在数码管上。当测试距离小于1米时,就报警(led闪烁等)。3)令被测物与传感器的距离分别是从远到近,再从近到远,观察模块输出信号的变化情况。4)被测物围绕传感器旋转,观察模块输出信号的变化情况,画出测试角度。令被测物与传感器距离分别是2cm,10cm,50cm,100cm,150cm,200cm,250cm,300cm,400cm,列出测试结果,计算测试误差。选做:1)如果人的步行速度是1米/秒,那么多长时间查询一次合适?假设1秒钟查询一次,令人从近到远步行,记录测试时间和测试距离,将该测试时间和测试距离写入到EEPROM里保存。2)当有按键按下,就调出EEPROM里的距离记录,显示在数码管上。3)当有按键按下,就将上述记录通过串口发送到PC端。二、系统功能框图组成及说明图1系统功能框图三、电路图设计图2系统电路图该系统电路主要有以下几个单元单路组成:单片机最小系统:中央处理器,程序的存储和运行,控制其他单元电路;数码管显示电路:由单片机控制,主要用于超声波测距的距离显示和时钟的显示,MCU的P0端控制数码管的ABCDEFGH段,P2的0、1、2、3管脚控制四个数码管;EEPROM工作单元电路:主要是采用AT24C02芯片用于存储系统电路工作时的数据,比如时间、距离;AT24C02的SCL连接到MCU的P1.5,SDA连接到MCU的P1.6;蜂鸣器驱动电路:用于超声波测距时,距离小于100CM时发出警报,三极管9013的B极连接到MCU的P1.0;独立按键单元电路:分别连接到MCU的P3.2、P3.3、P3.4三个端口;电源指示灯:EEPROM工作单元电路正常接通电源时常亮。四、程序流程说明软硬件开发过程及调试结果1.查找和阅读超声波模块的相关资料,学习超声波测距原理;熟悉所提供的超声波模块接口特性。HC-SR04超声波测距模块资料:HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达到3mm;模块主要是由超声波发射器、接收器与控制电路。工作原理:采用IO口Trig触发测距,至少给10us的高电平信号;模块自动发送8个40khz的方波,自动检测是否有信号返回;若是有信号返回,通过IO口Echo输出高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;实物图:图3超声波模块实物图端口接线:VCC:DC+5V电源; Trig:触发控制信号输入GND:接地; Echo:回响信号输出电气参数:工作电压DC5V测量角度15度工作电流15mA输入触发信号10us的TTL脉冲工作频率40Hz输出回响信号TTL电平,与射程成比例最远/近射程4M/2CM规格尺寸45*20*15mm表1超声波模块电气参数表超声波时序图:图4超声波时序图2.设计并搭建超声波测距电路,调试电路,令模块正常工作。 经过搭建和调试,最后,其电路如图2系统电路图所示,硬件效果图如图:图5硬件连接图3.加载传感器的单片机驱动程序,实现测距功能,并确定测试范围,进行误差分析:1)调试测距程序: 经过不断的测试和改进之后,测距程序效果都比较好;在4M之内的距离都可以比较稳定测试出来并显示在数码管上。2)确定测距的距离范围: 本设计采用定时器计算Echo输出高电平的时间,根据理论来说,定时器可以计算2^8个机器周期,而22.1184MHz的晶振其机器周期为0.54us,如此说来,可以测得的最大距离是Smax=(65536*0.54us*10^-6*340M/s)/2=6.01M。但是程序中采用的公式:S=(time*1.7)/100/2;(time是Echo输出高电平的时间)其最后可以测得最大距离是557.056cm;而最小距离是电气参数中的2cm,事实在测距中也是2cm。3)报警电路的设计:根据设计要求,当测得距离小于100cm是会发出相应的警报;本设计中采用的是蜂鸣器报警电路;其硬件设计如下图:图6驱动蜂鸣器电路程序设计:if(S<100) //小于100cm时,蜂鸣器鸣叫,以示报警{beep=0;delay_ms();beep=1;delay_ms();beep=0;}4)测试角度的测试:实验材料的有限,给角度测试带来了一点难度。在设计角度测试时,我们采用螺丝刀、直刻度尺、胶带、挡板(书)、笔和纸。首先是用螺丝刀当做定子,穿过直刻度尺的圆孔将其固定在桌面上,将纸垫在电路板下面,固定一个点。将超声波模块的中点固定在该点上,在尺子的另一端竖放一挡板(一本书),然后慢慢转动,根据数码管的显示判断挡板是否还在测试的角度之内。其判断方法是:尺子长度是35左右,转动到数码管显示超过40,则判断为超出了测试的角度,经过这样确定超声波的测试角度。其测试图如下:图7测超声波作用角度(左)图8测超声波作用角度(右)图8测超声波作用角度模拟图5)令被测物与传感器距离分别是2cm,10cm,50cm,100cm,150cm,200cm,250cm,300cm,400cm,列出测试结果,计算测试误差。实际距离2cm10cm50cm100cm150cm200cm250cm300cm400cm测得距离2cm10cm45cm90cm135cm180cm225cm275cm365cm误差0cm0cm5cm10cm15cm20cm25cm25cm35cm表2测距数据表误差的修改:(在程序上做处理)if(21<S&&S<40)S=S+(S-20)/5*1+1;if(S>40)S=S+(S/50)*5;测试现场:图9测距现场1图10测距现场2图11测距现场36)选做部分:经过一系列的调试,最后并不能完整的将选做部分做出来。但是测距的功能并不受影响。后来将程序分开测试,经测试,EEPROM在存储和读取部分并不存在问题。而将数据发到PC去的数据只是显示00000000,但该部分程序在固定的TMOD=0X20;采用比特率为9600比特时也是可以正常发送的。这正说明了,我们小组设计的程序中,串口中断发送数据的波特率并不是9600比特,遗憾的是,我们小组并不能解决这问题。图12数据发送到PC的截图参考文献《单片机应用技术》邵忠良东北师范大学出版社电子发烧友论坛/附件1程序代码#include<REGX51.H> #include<intrins.h>sbittrig=P1^2;sbitecho=P1^3;sbitSCL=P1^5;sbitSDA=P1^6;sbitbeep=P1^0;sbitkey=P3^4;unsignedinttime=0,timer=0;unsignedchari=0,j=0;unsignedlongS=0;bitflag=0,test=0,app=0,add=0;unsignedcharconsttable[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};unsignedcharconstrow_value[4]={0xf7,0xfb,0xfd,0xfe};unsignedchardisp_value[4] ={0,0,0,0};unsignedcharq[4],p[4];/*延时250ms*/voiddelay_ms() { unsignedchari,j; for(j=0;j<240;j++) for(i=0;i<250;i++);}/*延时1ms*/voiddelay(){unsignedchari; for(i=0;i<250;i++);}/*I2C的起始信号子程序*/voidI2Cstart(){SDA=1; //SDA初始化为高电平"1"//SCL=1; //开始数据传送时,要求SCL为高电平"1"//delay(); //延时1ms//SDA=0; //SDA的下降沿被认为是开始信号//delay(); //延时1ms//SCL=0; //SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递)//}/*I2C的停止信号子程序*/voidI2Cstop(){SCL=0;delay();SDA=0; //SDA初始化为低电平"0"//SCL=1; //结束数据传送时,要求SCL为高电平"1"//delay(); //保持一段时间//SDA=1; //SDA的上升沿被认为是结束信号//delay(); //保持一段时间//}/*I2C的写1个字节的子程序*/bitWrite1byte(unsignedchary)//在Start之后,SCL=0。{unsignedchari; //循环次数bitack_bit; //从机的应答信号SCL=0;for(i=0;i<8;i++){SDA=(bit)(y&0x80);//从MSB开始写位信息delay();SCL=1;//SDA保持不变delay();SCL=0;//开始下一位的传输y=y<<1;//左移}SDA=1;//释放SDA总线delay();SCL=1;//准备接收从机的应答信息delay();ack_bit=SDA;//读从机应答信息SCL=0;//准备下一个byte的传送return(ack_bit);}/*I2C的读1个字节子程序*/unsignedcharRead1byte()//在Start之后,SCL=0。{unsignedchari;//循环次数unsignedchary;//接收到的数据SCL=0;for(i=0;i<8;i++){SCL=1;delay();y=y<<1;//左移y=y|(unsignedchar)SDA;//从MSB开始写位信息SCL=0;//令从机改变数据,准备接收下一位delay();}SCL=0;return(y);}/*I2C的第九位应答信号子程序*/voidsendack(bith){SDA=h;//释放SDA总线delay();SCL=1;//准备接收从机的应答信息delay();SCL=0;//准备下一个byte的传送delay();SDA=1;//释放SDA总线}/*扫描数码管*/voiddisplay(void) { P0=table[disp_value[i]]; P2=row_value[i]; if(++i>=4) i=0;}/*超声波测距的距离计算*/voidConut(void){ time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100/2;//算出来是CM if(21<S&&S<40)S=S+(S-20)/5*1+1; if(S>40)S=S+(S/50)*5; if(app==0) { if((S>=500)||flag==1)//超出测量范围显示"-" { flag=0; disp_value[0]=10; //"-" disp_value[1]=10; //"-" disp_value[2]=10; //"-" disp_value[3]=10; //"-" } else { disp_value[3]=S%100%10; disp_value[2]=S/10%10; disp_value[1]=S/100%10; disp_value[0]=S/1000; } if(S<100) //小于100cm时,蜂鸣器鸣叫,P1口的LED灯闪烁 { beep=0; delay_ms(); beep=1; delay_ms(); beep=0; } } if(app==1) { disp_value[3]=q[3]; disp_value[2]=q[2]; disp_value[1]=q[1]; disp_value[0]=q[0]; }}/*外部中断0发送数据到PC*/voidzd0()interrupt0 {TR0=1;TH0=0xf4;TH0=0xf4;P2=0XFF; SBUF=q[3];while(!TI);TI=0; SBUF=q[2];while(!TI);TI=0; SBUF=q[1];while(!TI);TI=0; SBUF=q[0];while(!TI);TI=0; TR0=0; }voidzd2()interrupt2 {app=1; delay_ms();delay_ms();delay_ms();delay_ms(); app=0; }voidzd1()interrupt1 //T0中断用来计数器溢出,超过测距范围{flag=1; //中断溢出标志,根据S=(time*1.7)/100/2算出中断溢出时的距离为 557.056cm}voidzd3()interrupt3 //T1中断用来扫描数码管和计1000MS启动模块{ TH1=0xf1; TL1=0x9a; display(); timer++; if(timer>=500) { timer=0; trig=1; //1000MS启动一次模块 _nop_();_nop_();_nop_();_nop_();//_nop_()为一个机器周期, _nop_();_nop_();_nop_();_nop_();//26*0.54us=14.56us _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_(); trig=0; if(timer==100) { test=1; } }}/*主函数*/voidmain(){TMOD=0x11; //设T0为方式1,十六位定时计数器 PCON=0X80;//波特率加倍 SCON=0X50; TH0=0; TL0=0; TH1=0xf1; //2MS定时 TL1=0x9a; ET0=1;//允许T0中断 ET1=1; //允许T1中断 TR1=1; //开启定时器1 IT0=1;//外部中断触发方式,和上面一样 EX0=1;//外部中断的启动与停止 IT1=1;//一样 EX1=1; ES=1; EA=1; //开启总中断 while(1) { while(!echo); //当echo为零时等待 TR0=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木工装修合同
- 保健按摩店装修合同监管费
- 水利行业水资源管理与水生态修复方案
- 专利代理合同书年
- 三农村社会组织创新发展方案
- 留学服务合同
- 品牌营销策略及市场分析作业指导书
- 数字化工厂设计与实施作业指导书
- 旅游景点智能化管理系统的设计与实施计划书
- 三农地区基础设施建设规划方案
- 岛津气相色谱培训
- 2024年03月四川农村商业联合银行信息科技部2024年校园招考300名工作人员笔试历年参考题库附带答案详解
- 睡眠专业知识培训课件
- 临床思维能力培养
- 人教版高中物理必修第三册第十章静电场中的能量10-1电势能和电势练习含答案
- 《工程勘察设计收费标准》(2002年修订本)
- 中国宗教文化 中国古代宗教文化的特点及现代意义
- 2024年四川省巴中市级事业单位选聘15人历年高频难、易错点练习500题附带答案详解
- 演出经纪人培训
- 盖房四邻签字协议书范文
- 2024年新人教版七年级上册数学教学课件 第六章 几何图形初步 数学活动
评论
0/150
提交评论