基于单片机的超声波测距仪课程设计.doc
辽 宁 工 业 大 学单片机原理及接口技术课程设计(论文) 题目:车用超声波测距仪院(系): 电气工程学院 专业班级: 测控092 学 号: 090301050 学生姓名: 郑青青 指导教师: 起止时间:2012.6.18-2012.6.29 课程设计(论文)任务及评语院(系):电气工程学院 教研室:测控技术与仪器学 号 090301050学生姓名郑青青专业班级测控092设计题目车用超声波测距仪课程设计(论文)任务驾驶员在倒车时很难预知障碍物与距离,设计一个能够进行显示距离,同时当小于一定距离时进行声光报警的超声波测距仪。设计任务1选择合适的超声波传感器和单片机;2车尾部设置4个超声波传感器;2设计超声波发射和接收电路;3设计4位数码管显示电路,显示当前最近距离;4设计声光报警电路。设计要求:1、分析系统功能,尽可能降低成本,选择合适单片机、传感器等;2、应用专业绘图软件绘制硬件电路图和软件流程图;3、按规定格式,撰写、打印设计说明书一份,其中程序开发要有详细的软件设计说明,详细阐述系统的工作过程,字数应在4000字以上。技术参数1超声波测量范围0.4m-4.0 m;测量精度为0.1m;2当测量距离小于1m时,进行声光报警。工作计划1、布置任务,查阅资料,理解掌握系统的控制要求。(2天,分散完成)2、选择传感器、单片机等元器件型号。(1天,实验室完成)3、绘制硬件电路图。(1天,实验室完成)4、按系统的控制要求,编写软件程序。(3天,分散2天,实验室1天)5、上机调试、修改程序、答辩。(2天,实验室完成)6、撰写、打印设计说明书(1天,分散完成)指导教师评语及成绩平时: 论文质量: 答辩: 指导教师签字: 总成绩: 年 月 日注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算摘 要随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给排水系统也有较大发展,其状况不断改善。但是,由于历史原因合成时间住的许多不可预见因素,城市给排水系统,特别是排水系统往往落后于城市建设。因此,经常出现开挖已经建设好的建筑设施来改造排水系统的现象。城市污水给人们带来了困扰,因此箱涵的排污疏通对大城市给排水系统污水处理,人们生活舒适显得非常重要。而设计研制箱涵排水疏通移动机器人的自动控制系统,保证机器人在箱涵中自由排污疏通,是箱涵排污疏通机器人的设计研制的核心部分。控制系统核心部分就是超声波测距仪的研制。因此,设计好的超声波测距仪就显得非常重要了。 本设计采用以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、预置子程序、发射子程序、接收子程序、显示子程序等模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图。 经实验证明,这套系统软硬件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以有效地解决汽车倒车、建筑施工工地以及一些工业现场的位置监控。关键词:AT89c51; 超声波;测距目 录第1章 绪论11.1 课题设计目的及意义11.1.1 设计的目的11.1.2 设计的意义1第2章 课程设计的方案32.1 概述32.2 系统组成总体结构32.2.1 整体方案的论证:32.2.2 方案一42.2.3 方案二6第3章 硬件设计73.1 超声波发射电路的设计73.2 超声波接收电路的设计73.3 报警系统83.4 复位电路83.5 显示系统9第4章 软件设计104.1 超声波反射流程104.2 超声波接收程序流程图11第5章 系统测试与分析/实验数据及分析125.1 随机误差125.2 测量引起的误差125.3 定时计数器引起的误差125.4 由于程序指令引起的误差13第6章 课程设计总结146.1 传感器的选择146.2 接收电路的设计146.3 显示电路的设计146.4 软件的设计146.5 误差的考虑15第1章 绪论1.1 课题设计目的及意义1.1.1 设计的目的随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。因此好的超声波测距仪可以满足我们对日常生活乃至军事都非常重要,设计此超声波测距仪的主要目的:为了研究超声波测距仪基本的工作原理,掌握基本制作方法,为以后制作出好的超声波探测仪做准备。1.1.2 设计的意义随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给排水系统也有较大发展,其状况不断改善。但是,由于历史原因合成时间住的许多不可预见因素,城市给排水系统,特别是排水系统往往落后于城市建设。因此,经常出现开挖已经建设好的建筑设施来改造排水系统的现象。城市污水给人们带来了困扰,因此箱涵的排污疏通对大城市给排水系统污水处理,人们生活舒适显得非常重要。而设计研制箱涵排水疏通移动机器人的自动控制系统,保证机器人在箱涵中自由排污疏通,是箱涵排污疏通机器人的设计研制的核心部分。控制系统核心部分就是超声波测距仪的研制。因此,设计好的超声波测距仪就显得非常重要了。尤其是误差的保证,超声波测距仪已广泛应用在工程、生活乃至军事之中,好的超声波测距仪能给我们生活带来巨大便利,如应用于抗震救灾等一些危险人不便进入的场合,在军事领域,超声波测距已是广泛应用与各种雷达侦测,超声波测距精度的提高将大大加强我国的国防力量,为我国的国防事业带来突飞猛进的进展,当前各国加紧研究超声波技术,装备与生活、军事、工程等领域,我们有理由相信,超声波技术的发展,将会对军事、经济造成巨大的推动作用,当前我国的航天事业也取得了很大的进展,其中更是离不开各种传感器的作用,超声波传感器便是其中不可替代的一部分。因此,设计好的超声波测距仪已经非常重要.第2章 课程设计的方案2.1 概述本次设计主要是综合应用所学知识,设计出租车计价器,并在实践的基本技能方面进行一次系统的训练。能够较全面地巩固和应用“单片机”课程中所学的基本理论和基本方法,并初步掌握小型单片机系统设计的基本方法。 应用场合: 应用于出租车计价器 ,出租车计价器有一个脉冲测速传感器,通过脉冲计数可以显示出租车行驶里程和计费。控制器由12V蓄电池供电。 系统功能介绍: 计价器显示的营运金额是营运里程与价格的函数。出租车计价器通过传感器与行驶车辆连接,实现基本的里程计价功能和价格调节、时钟显示功能。2.2 系统组成总体结构2.2.1 整体方案的论证: 超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。测距仪的分辨率取决于对超声波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。超声波测距仪主要以单片机AT89C51为核心,其发射器是利用压电晶体的谐振带动周围空气振动来工作的.超声波发射器向某一方向发射超声波,在发射的同时开始计时 ,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器接收到反射波就立即停止计时。一般情况下,超声波在空气中的传播速度为340m/ s,根据计时器记录的时间t ,就可以计算出发射点距障碍物的距离 s,即s=340×t/2, 这就是常用的时差法测距。在测距计数电路设计中,采用了相关计数法,其主要原理是:测量时单片机系统先给发射电路提供脉冲信号,单片机计数器处于等待状态,不计数;当信号发射一段时间后,由单片机发出信号使系统关闭发射信号,计数器开始计数,实现起始时的同步;当接收信号的最后一个脉冲到来后,计数器停止计数。通过技术器的值乘以计数周期既超声波在介质中传播的时间,再乘以声波在空气中传播的速度即为所测距离的二倍,采用此方案非常简便且能达到预期效果,以下有两种基于此方案的具体方案,见方案一和方案二,方案一和方案二的超声波发射电路相同,只是接收电路不通,方案一采用了CX20106芯片,方案二采用三级运算放大电路加一个比较整形电路。以下方案一方案二具体讨论 开始信号调理电路AT89C51电源显示电路超声波接收头信号处理电路定时器 图 2.1 基于AT89C51单片机的超声波测距仪结构图考虑到设计要求测量范围是0.44米,精度要求为0.1米,成本低,故选用超声波传感器TCT40-16R/T可以满足要求2.2.2 方案一 图 2.2.1 超声波发射电路 40kHz的方波信号由单片机产生由P1.0口输出,CD4069的作用是方向放大,使超声波发射头产生谐振,发射超声波 图2.2.2 CD4069的供电电路 超声波开始发射时启动CD4069的供电电源,发射完毕后关闭CD4069的供电电源,图2.2 中VDD为CD4069的供电电源,利用单片机控制CD4069的开断。P1.1为高电平时Q1导通VDD=0,CD4069不工作,当P1.1为低电平时,Q1不导通,CD4069正常工作 图 2.2.3 超声波接收电路 CX20106芯片可用来完成信号的放大、限幅、带通滤波、积分、比较输出功能,其中的前置放大器具有自动增益控制功能,可以保证在超声波传感器接收较远反射信号输出微弱电压时,放大器有较高的增益。CX20106A接收超声波有很高的灵敏度和抗干扰能力,可以满足接收电路的要求。同时,使用集成电路也可以减少电路之间的相互干扰,减小电噪声。7脚为信号输出口,没收到信号时为高电平,收到后变为低电平,之后又恢复高电平。2.2.3 方案二 超声波发射电路相同,接收电路用LM324做运放的多级放大,然后用LM538实现比较电路进行整形成为方波送入单片机内部,如图2.3. 图2.3.1 用LM324构成的超声波接收电路图中为三级运算放大电路和一个整形电路,电源不能很稳定,没有做稳压块,会使LM358电压比较器的参考电压受到波动,只要有一点波动会使反向放大器波形受到破坏,这个电压稳定相当重要。带通滤波效果差,Q值低,因而外界干扰信号或噪声干扰也得到比较大的放大。因此选用方案一更合适。第3章 硬件设计3.1 超声波发射电路的设计 图 3.1 超声波反射电路 图3.1为超声波发生电路,单片机产生40kHz的方波由P1.0输出,经第3级反相放大1、2、3、4、5、6、8后形成半波倒像波形,6和8并联可以提高电路的驱动能力3.2 超声波接收电路的设计超生波接收器接收到的信号为声波信号,接收头的超声波换能器将超声波转化成电信号,此时的电信号是微弱的且含有噪声的,需进行放大,滤波,整形才能被单片机使用,图中采用CX20106芯片近些一系列操作后将信号送入单片机进行处理。 图 3.2 超声波接收转换电路3.3 报警系统 当距离小于定距离时,P2.3输出低电平 图 3.3如图3.3 当P2.3输出低电平时Q5导通,此时报警器得电发出警报。3.4 复位电路 图 3.43.5 显示系统如图3.5显示系统由三个数码管组成,如图3.4。采用3位动态显示方式。段选码和位选码每送入一次延时15ms,不断循环送出相应的段选码和位选码,就可以获得视觉上的稳定显示状 图 3.5 P1.0P1.7控制LED数码管的数字显示,当单片机引脚输出低电平时,对应电路导通,实现相应功能;P2.5P2.7控制着数码管的选通,当引脚输出高电平时,对应的电路导通,实现LED数码管的选择,通过快速循环点亮,使人眼产生稳定的视觉。实现数字的显示功能。第4章 软件设计4.1 超声波反射流程继续定时计数取反输出继续计数定时是否满足T定时计数器否是是否满足T P1.0是否高电平 定时停止重新计数 图 4.1 超声波发射程序流程图发射完方波信号后,停止产生方波信号,同时定时器开始定时4.2 超声波接收程序流程图超声波接收到最后一个信号后,由外部产生一个中断送入单片机内部,使单片机停止定时功能P3.2最后一个脉冲输入响应外部0中断,计数器停止计数 将计数送入其他寄存器结束控制显示电路及报警比较选出最小值单片机计算转换成距离 图 4.2 输出控制流程图当外部中断0进入,计数器停止计数,同时将计数值送入相应寄存器。用软件实现数据的比较,选择最小数据输出。再通过软件进行计算,把计数器的值转化为距离通过LED数码管显示出来。第5章 系统测试与分析/实验数据及分析5.1 随机误差 随机误差主要由很多暂时未能掌握的或不便掌握的微小因素所构成,主要有以下几个方面:一:测量装置方面 零件的不稳定性。二:环境方面 温度的微小变动、气压、湿度等微小变动引起的误差。三:人员操作方面的因素引起误差。以上随机误差都是不可避免的,只能尽量减小,不能消除。5.2 测量引起的误差 误差分为相对误差和绝对误差, 绝对误差=测得值真实值 (5-1) 绝对误差可能是正值也可能是负值,此次超声波的测量,取四个超声波探测器,然后取最小值输出,修正了绝对误差值。相对误差=绝对误差÷真值 (5-2)可知相对误差也得到修正。5.3 定时计数器引起的误差 计数脉冲周期为T,超声波在空气中传播的时间等于定时计数器计数N乘以一个计数脉冲周期T,在停止计数过程中,计数器可能偏差正一或负一个数,从而引起整体计时的误差。t=N×T (5-3)所以T越小时,由定时计数器引起的误差越小,所以由外部输入的计数频率应选的高一些,保证其误差在一定范围内,本测距仪测距选择在0.4-4m,要求精度在0.1m。t=±1×T (5-4)f=1÷T (5-5) 声波在空气中传播的速度为340ms,在空气中大概传播的时间为0.01176s.要求精度在0.1m,因此,误差时间控制在0.294ms,因此计数脉冲周期应小于0.294ms.计数脉冲的频率应大于3.40136KHz。5.4 由于程序指令引起的误差程序指令在执行时都会占用一定的机器周期,一般占用2-3个机器周期,在AT89C51单片机中,中断的进行需要用指令进行设计,在本测距仪中方波产生时用到相应指令,中断进入单片机也用到相应指令。第6章 课程设计总结6.1 传感器的选择 在设计的过程中,首先遇到的问题就是超声波传感器的选择。通过上网查阅相关资料,最终确定了要使用的传感器,以及传感器工作需要的频率,传感器发射超声波的原理。决定用单片机软件实现40KHz的方波,通过放大使换能器产生谐振,发射超声波。6.2 接收电路的设计再有就是超声波就收转化问题,超声波接收后肯定带有干扰成分,如何去除其干扰成为另一个问题,通过查找资料发现,CX20106是主流处理芯片,主要用于信号处理,可以实现放大、积分、比较等功能,使输出信号转化为比较标准的方波信号,便于单片机的使用;6.3 显示电路的设计第三个问题就是显示电路,要实现三位输出,有两种方式,一种是静态LED显示,另一种就是LED的动态显示,静态显示太过于繁琐,最终选择了动态显示,通过依次循环选通相应的LED数码管配合单片机输出电平的变化,使LED数码管依次显示相应数字,当选通频率很高时,人眼便能产生稳定的视觉停留,实现了距离的输出。6.4 软件的设计最后一个问题就是软件问题了,如何能测量距离呢,首先想到的是声波在空气中传播的时间,就要通过计数器进行计数,然后将记得的值转化为时间,再将时间转化为相应的距离,最后把距离转化为各IO口的输出电平,通过IO口的电平控制显示电路,计数器计完数的时候必须有外部的中断信号输入中断其计数过程,想到通过P3.2的第二功能过引脚输入,加入一个中断子程序来实现,还要把记得的数存入到相应的寄存器,通过一些指令进行成法运算,把时间转化成相应的距离,存入相应寄存器,最难的就是如何用已存入寄存器的距离控制显示电路,让其显示距离。把寄存器的高八位先输出控制,同时点亮第一个LED然后熄灭第一个LED,把寄存器中间的八位输出,同时点亮第二个LED,然后熄灭第二个LED,输出最后低八位寄存器的值,同时点亮第三个LED,熄灭第三个LED。重复以上过程就实现了LED的循环点亮。最终软件问题得以解决。6.5 误差的考虑在此过程中还要考虑误差的问题,参考了误差理论分析后,计算了各项误差,通过计算,所做系统基本满足了题目要求,但本系统未考虑温度湿度等带来的误差,另外,超声波发射头的阻抗也会随着发射频率变化而变化,考虑到本设计要求较简单,以上误差均未考虑。附录附录程序如下:#INCLUDE <REG2051.H>#DEFINE K1 P3_4#DEFINE CSBOUT P3_5 /超声波发送#DEFINE CSBINT P3_7 /超声波接收#DEFINE CSBC=0.034#DEFINE BG P3_3UNSIGNED CHAR CSBDS,OPTO,DIGIT,BUFFER3,XM1,XM2,XM0,KEY,JPJS;/显示标识UNSIGNED CHARCONVERT10=0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F;/09段码UNSIGNED INT S,T,I, XX,J,SJ1,SJ2,SJ3,MQS,SX1;BIT CL;VOID CSBCJ();VOID DELAY(J); /延时函数VOID SCANLED(); /显示函数VOID TIMETOBUFFER(); /显示转换函数VOID KEYSCAN();VOID K1CL();VOID K2CL();VOID K3CL();VOID K4CL();VOID OFFMSD();VOID MAIN() /主函数EA=1; /开中断TMOD=0X11; /设定时器0 为计数,设定时器1 定时ET0=1; /定时器0 中断允许ET1=1; /定时器1 中断允许TH0=0X00;TL0=0X00;TH1=0X9E;TL1=0X57;CSBDS=0;CSBINT=1;CSBOUT=1;CL=0;OPTO=0XFF;JPJS=0;SJ1=45;SJ2=200;SJ3=400;K4CL();TR1=1;WHILE(1)KEYSCAN();IF(JPJS<1)CSBCJ();IF(S>SJ3)BUFFER2=0X76;BUFFER1=0X76;BUFFER0=0X76;ELSE IF(S<SJ1)BUFFER2=0X40;BUFFER1=0X40;BUFFER0=0X40;ELSE TIMETOBUFFER();ELSE TIMETOBUFFER(); /将值转换成LED 段码OFFMSD();SCANLED(); /显示函数IF(S<SJ2)BG=0;BG=1;VOID SCANLED() /显示功能模块DIGIT=0X04;FOR( I=0; I<3; I+) /3 位数显示P3=DIGIT&OPTO; /依次显示各位数P1=BUFFER; /显示数据送P1 口DELAY(20); /延时处理P1=0XFF; /P1 口置高电平(关闭)IF(P3&0X10)=0) /判断3 位是否显示完KEY=0;DIGIT>>=1; /循环右移1 位VOID TIMETOBUFFER() /转换段码功能模块XM0=S/100;XM1=(S-100*XM0)/10;XM2=S-100*XM0-10*XM1;BUFFER2=CONVERTXM2;BUFFER1=CONVERTXM1;BUFFER0=CONVERTXM0;VOID DELAY(I)WHILE(-I);VOID TIMER1INT (VOID) INTERRUPT 3 USING 2TH1=0X9E;TL1=0X57;CSBDS+;IF(CSBDS>=40)CSBDS=0;CL=1;VOID CSBCJ()IF(CL=1)TR1=0;TH0=0X00;TL0=0X00;I=10;WHILE(I-)CSBOUT=!CSBOUT;TR0=1;I=MQS; /盲区WHILE(I-)I=0;WHILE(CSBINT)I+;IF(I>=2450) /上限值CSBINT=0;TR0=0;TH1=0X9E;TL1=0X57;T=TH0;T=T*256+TL0;S=T*CSBC/2;TR1=1;CL=0;VOID KEYSCAN() /健盘处理函数XX=0;IF(K1!=1) / 判断开关是否按下DELAY(400); /延时去抖动IF(K1!=1) / 判断开关是否按下WHILE(!K1)DELAY(30);XX+;IF(XX>2000)JPJS+;IF(JPJS>4)JPJS=0;XX=0;SWITCH(JPJS)CASE 1: K1CL();BREAK;CASE 2: K2CL();BREAK;CASE 3: K3CL();BREAK;CASE 4: K4CL();BREAK;VOID K1CL()SJ1=SJ1+5;IF(SJ1>100)SJ1=30;S=SJ1;VOID K2CL()SJ2=SJ2+5;IF(SJ2>500)SJ2=40;2 7S=SJ2;VOID K3CL()SJ3=SJ3+10;IF(SJ3>500)SJ3=100;S=SJ3;VOID K4CL()SX1=SJ1-1;SX1=SX1/CSBC;MQS=SX1/4.5;VOID OFFMSD()IF (BUFFER0 = 0X3F)BUFFER0 = 0X00; 参考文献【1】梅丽凤、王艳秋、汪毓铎、任国臣 单片机原理及接口技术 第三版 清华大学出版社 北京交通大学出版社 2009【2】阎石 数字电子技术基础 第五版 高等教育出版社 2006年5月【3】费业泰 误差理论与数据处理 第六版 机械工业出版社 2010年1月