1、课 程 设 计 课程名称单片机课程设计题目名称超声波测距系统专业班级11电子信息工程本科3班学生姓名尹津学 号51101033009指导教师刘国永二一四年三月二十八日目 录摘 要1第一章 设计任务书21.1 基于单片机的超声波测距系统2第二章 系统总体设计32.1 超声波发生器3第三章各部分功能设计53.1 超声波测距系统构成53.2 单片机系统及显示电路63.3 串口通信模块73.4 超声波发射电路73.5 超声波接收电路83.6 语音播报模块8第四章 系统软件设计94.1 编程软件及语言的选择94.2 程序设计9第五章 系统调试11第六章 结 论12附录一: 单片机超声波测距系统原理图13
2、附录二: PCB图14附录三: 单片机超声波测距系统C语言原程序14附录四: 元件清单24参 考 文 献25摘 要本设计介绍了基于单片机控制的超声测距仪的原理:由AT89C52控制定时器产生超声波脉冲并计时,计算超声波自发射至接收的往返时间,从而得到实测距离。并且在数据处理中采用了温度补偿的调整,用四位LED数码管切换显示距离和温度。整个硬件电路由超声波发射电路、超声波接收电路、电源电路、显示电路等模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图,给出了系统构成、电路
3、原理及程序设计。此系统具有易控制、工作可靠、测距准确度高、可读性强和流程清晰等优点。实现后的作品可用于需要测量距离参数的各种应用场合。目前在近距离测量方面较为常用的是压电式超声波换能器。根据设计要求并综合各方面因素,本例决定采用AT89C52单片机作为主控制器,用动态扫描法实现LED数字显示,声波驱动信号用单片机的定时器完成。本文所设计的超声波测距仪主要由AT89S52单片机、超声波发射电路、超声波接收放大电路、显示电路. 首先由单片机驱动产生12MHZ晶振,由超声波发射探头发送出去,在遇到障碍物反射回来时由超声波接收探头检测到信号,然后经过滤波、放大、整形之后送入单片机进行计算,把计算结果输
4、出到LED液晶显示屏上。超声波发生器可以分为两大类:一类是用电气方式产生超声波;另一类是用机械方式。产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液和气流旋笛等。它们所产生的超声波的频率,功率和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面较为常用的是压电式超声波换能器。根据设计要求并综合各方面因素,本例决定采用AT89C52单片机作为主控制器,用动态扫描法实现LED数字显示,声波驱动信号用单片机的定时器完成。超声波测距器系统设计如图1.1所示图1.1 整体框图第一章 设计任务书1.1 基于单片机的超声波测距系统基于单片机的超声波测距系统,是利用单片机编程产生频率为
5、40kHz的方波,经过发射驱动电路放大,使超声波传感器发射端震荡,发射超声波。超声波波经反射物反射回来后,由传感器接收端接收,再经接收电路放大、整形,控制单片机中断口。其系统框图如图2-1所示。数字显示功能键单片机发射驱动接受处理图1-1 基于单片机的超声波测距系统框图本系统利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。这种以单片机为核心的超声波测距系统通过单片机记录超声波发射的时间和收到反射波的时间。通过超声波发射器向某一方向发射超声波,单片机在发射时
6、刻同时开始计时,超声波在空气中传播,途中碰到障碍物就立即反射回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为V,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离。当收到超声波的反射波时,接收电路输出端产生一个负跳变,在单片机的外部中断源输入口产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离,结果输出给LED显示。利用单片机准确计时,测距精度高,而且单片机控制方便,计算简单。许多超声波测距系统都采用这种设计方法。第二章 系统总体设计超声波是由机械振动产生的,可在不同介质中以不同的速度传播。由于超声波指向性强,能量消耗缓慢,在
7、介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的结构信息很容易检测出来,具有很高的分辨力,因而其准确度也较其它方法为高;而且超声波传感器具有结构简单、体积小、信号处理可靠等特点。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。超声波测距的方法有多种,如相位检测法、声波幅值检测法和渡越时间检测法等。相位检测法虽然精度高,但检测范围有限; 声波幅值检测法易受反射波的影响。本测距系统采用超声波渡越时间检测法。其原理为: 检测
8、从超声波发射器发出的超声波,经气体介质的传播到接收器的时间,即渡越时间。渡越时间与气体中的声速相乘,就是声波传输的距离。超声波发射器向某一方向发射超声波,在发射时刻的同时单片机开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。再由单机计算出距离,送LED数 码管显示测量结果。超声波在空气中的传播速度随温度变化,其对应值如表2-1 ,根据计时器记录的时间t (见图2-1),就可以计算出发射点距障碍物的距离( s ) ,即: s = v t / 2 。表2-1 声速与温度的关系温度()3020100102030100声速(m/s)31331932532
9、33383443493862.1 超声波发生器为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类: 一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等; 机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。压电型超声波传感器的工作原理:它是利用压电效应的原理,压电效应有逆效应和顺效应,超声波传感器是可逆元件,超声波发送器就是利用压电逆效应的原理。所谓压电逆效应如图2-2所示,是在压电元件上施加电压,元件就变形,即
10、称应变。若在图a所示的已极化的压电陶瓷上施加如图b所示极性的电压,外部正电荷与压电陶瓷的极化正电荷相斥,同时,外部负电荷与极化负电荷相斥。由于相斥的作用,压电陶瓷在厚度方向上缩短,在长度方向上伸长。若外部施加的极性变反,如图c所示那样,压电陶瓷在厚度方向上伸长,在长度方向上缩短。图2-2压电逆效应图单片机AT89S51发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,读出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED数码管进行显示。限制超声波系统的最大可测距离存在四个因素
11、:超声波的幅度、反射物的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小可测距离。开始测量超声波信号开定时器关定时器数据运算显示器接收检测电声换能器电声换能器驱动电路图2-2 超声波测距系统框图第三章各部分功能设计按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、显示模块、超声波发射模块、接收模块共四个模块组成。单片机主控芯片使用51系列AT89S51单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。发射电路由单片机输出端直接驱动超声波发送。接收电路使用三极管组成的放大电路,该电路简单,调试工作小较小硬件电
12、路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路、报警输出电路、供电电路等几部分。单片机采用AT89S51,系统晶振采用12MHz高精度的晶振,以获得较单片机用P2.7端口输出超声波换能器所需的40kHz的方波信号,P3.5端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码输出端口为单片机的P2口,位码输出端口分别为单片机的P3.4、P3.2、P3.3口,数码管位驱运用PNP三极管S9012三极管驱动。3.1 超声波测距系统构成本系统由单片机AT89S51控制,包括单片机系统、发射电路与接收放大电路和显示电路几部分组成,如图3-1 。硬件
13、电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路三部分。单片机采用AT89S51。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P2.7端口输出超声波换能器所需的40kHz的方波信号,P3.5端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码输出端口为单片机的P2口,位码输出端口分别为单片机的P3.4、P3.2、P3.3口,数码管位驱运用PNP三极管S9012三极管驱动。超声波接收模超声波发射模单片机控制统(AT89S51)显示模块键盘模块供电单元图3-1:系统设计框超声波接收头接收到反射的回波后,经过接收电路
14、处理后,向单片机P3.5输入一个低电平脉冲。单片机控制着超声波的发送,超声波发送完毕后,立即启动内部计时器T0计时,当检测到P3.5由高电平变为低电平后,立即停止内部计时器计时。单片机将测得的时间与声速相乘再除以2即可得到测量值,最后经3位数码管将测得的结果显示出来。3.2 单片机系统及显示电路1. 单片机系统单片机采用89S51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机用P1.0端口输出超声波转化器所需的40KHz方波信号,利用外中断0口检测超声波接受电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS245驱动,位码用P
15、NP三极管驱动。单片机系统如下图所示图3-2:单片机系统2. 显示电路原理通过单片机的P0.0P0.7、RST、P3.0P3.7、X1、X2、GND与跳线帽连接控制液晶显示器的显示。12864液晶显示器可显示32个汉字或64个字母可满足要求输出的内容。显示电路原理图如下所示:图3-3:显示电路3.3 串口通信模块串口通信电路是TTL和RS232电平互换的电路,串口通信电路是使用MAX232芯片实现,该芯片有电源接口和两组串口通信转换端口。C4、C5、C7、C8组成电荷泵,提供单片机内部升压;C6是滤波电容,其作用是滤除电路的杂波是芯片工作稳定及防止外部电源不稳定烧坏单片机。MAX232芯片的作
16、用是将单片机输出的TTL电平转换成PC机能接受的RS232电平。5、6引脚的功能是为了产生正负12V的电源,提供给MAX232的点评需要,7、8、9、10、11、12、13、14构成两个数据通道。图3.4 超声波发射电路3.4 超声波发射电路单片机P36端输出的40kHZ方波信号一路经一级反向器后送到超声波换能器的一个电极。另一级经过两级反向器送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端。可以提高超声波发射强度。输出端采用两个反向器并联。用以提高驱动能力。上拉电阻R27、R30一方面提高反向器74HC04输出高电平的驱动能力。另一方面可以增加超声波换能器的阻尼效果
17、缩短其自由振荡的时间。如图图3.5 超声波发射电路3.5 超声波接收电路CX20106A是采用一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38Hz与测距的超声波频率40Hz较为相近所以可以利用它来制作超声波检测接收电路。J31中插入CX20106A,使用CX20106A集成电路对接收探头收到的信号进行放大、滤波。其总放大增益为80db。图3.6 超声波接收电路3.6 语音播报模块WT588D有三种控制模式,分别是按键控制模式、一线串口控制模式及三线串口控制模式,按键控制模式触发方式灵活,可随意设置任意按键为脉冲可重复触发、脉冲不可重复触发、无效按键、电
18、平保持不可循环、电平保持可循环、电平非保持可循环、上一曲不循环、下一曲不循环、上一曲可循环、下一曲可循环、音量+、音量-、播放/暂停、停止、播放/停止等 15 种触发方式。一线串口控制模式及三线串口控制模式可通过单片机来控制WT588D的语音播放、停止、循环播放和音量大小,或者直接触发 0219 地址位的任意语音。图3.7 语音播报第四章 系统软件设计4.1 编程软件及语言的选择51编程软件可以使用Keil uVision3或Keil uVision4进行程序编程及仿真。Keil C 51软件是众多单片机应用开发的优秀软件之一。它集编辑,编译,仿真于一体。支持汇编,PLM语言和C语言的程序设计
19、,界面友好,易学易用,具体用法在实训过程中已详细讲述及学习。编程语言一般都是用C语言编程。C语言是编译型程序设计语言,兼顾高级语言的特点,并具备汇编语言的功能。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构。C语言执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。基于C语言的众多优点本设计选择此语言来编程。此外,还可以使用汇编语言,C+等语言来进行编程。4.2 程序设计超声波测距的软件设计主要
20、由主程序、超声波发生子程序、超声波接收程序及显示子程序组成。超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言编程。主程序首先是对系统环境初始化,设定时器0为计数,设定时器1定时。置位总中断允许位EA。进行程序主程序后,进行定时测距判断,当测距标志位ec=1时,测量一次,程序设计中,超声波测距频度是4-5次/秒。测距间隔中,整个程序主要进行循环显示测量结果。超声波测距器的制作和调试都较为简单,其中超声波发射和接收采用15的超声波换能器TCT4010F1(T发射)和TCT4010S1(R接收),中心频率为40KHz,安装时应保持两
21、换能器中心轴线平行并相距48cm,其余元件无特殊要求。若能将超声接收电路用金属壳屏蔽起来,则可提高抗干扰性能。根据测量范围要求不同,可适当地调整与接收换能器并接的滤波电容C4的大小,以获得合适的接收灵敏度和抗干扰能力。硬件电路制作完成连接并调试好后,便可用Keil uVision3将程序编译好下载到单片机试运行。根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参数和程序,测距仪能测的范围为0.105.00m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要
22、求。当调用超声波测距子程序后,首先由单片机产生4个频率为38.46kHz超声波脉冲,加载的超声波发送头上。超声波头发送完送超声波后,立即启动内部计时器T0进行计时,为了避免超声波从发射头直接传送到接收头引起的直射波触发,这时,单片机需要延时约1.5 -2ms时间(这也就是超声波测距仪会有一个最小可测距离的原因,称之为盲区值)后,才启动对单片机P3.5脚的电平判断程序。当检测到P3.5脚的电平由高转为低电平时,立即停止T0计时。由于采用单片机采用的是12 MHz的晶振,计时器每计一个数就是1s,当超声波测距子程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(2)计算
23、,即可得被测物体与测距仪之间的距离。其中当障碍物与超声波模块的距离S2000cm时,语音播报提示为“安全距离”,当500S1000cm时,语音播报提示为“保持距离”,当100S500cm时,语音播报提示为“请注意”,当S100时,语音播报提示为“危险距离”。开始系统初始化发送超声波等待反射计算距离S属于m语音播报液晶显示结束y图4.1主程序图开始初始化检查忙函数yn写命令函数写数据函数延时结束图4.2 1602显示程序开始获取语音数据WT588D初始化开始播报全部播报完结束ny图4.3 语音播报第五章 系统调试首先检测串口能否通,先串口线或者USB转串口线插到计算机上,再打开串口调试助手,接着
24、选择串口,串口线和USB转串口的端口号查看路径:计算机右键设备管理器端口(COM和LPT),点开查看即可。接着设置串口调试助手,选择端口号,发送的字符/数据中随便输入2位数字,其余设置默认,短接串口线或者USB转串口线9针中的2和3,短接完毕后,用鼠标左键点击串口调试助手中的手动发送,每点击一次可以收到一次数据,说明串口和串口线正常。调好后再下载已经编写好的程序,然后在超声波发射接口放置障碍物,通过1602液晶显示屏可以观察到所测的距离。同时通过移动障碍物,改变距离,此时超过一定距离时,会通过语音来提示此时的距离是否处于安全距离,从而达到警戒作用。实物图如下:图5.1 超声波测距系统实物图第六
25、章 结 论本次设计使我学会了单片机的一些实际应用实例。我们广泛借鉴了各种实际的优点,充分考虑了整个设计中的各个环节。包括产生40KHZ的方波,在接收电路中,对所接收方波进行滤波、放大、整形等步骤。在我们为期二周的设计中,我们用到了以前学到的很多知识,比如电工、单片机、和C语言等。这使我意识到,任何一件产品的产生,都不是单一知识所能实现的。而且在电路板焊接过程中,出现一些意想不到的错误,这让我措手不及,有些其实很容易避免。但这让我受益匪浅。这次单片机课程设计时长2个星期时间非常充足,第一周主要熟悉并且会使用一些画图软件及程序编程仿真软件。自己亲自用DXP2004软件把主系统图和功能电路图画出来,
26、并且用Keil uVision3编写程序及仿真。第二周我们主要进行焊接51单片机电路板及超声波测距系统电路板并调试。通过这两周的课程设计,我学到了很多在课堂上学不到的东西即动手能力。对于我们这个电子信息工程专业的学生来说,动手实际操作能力是非常重要的,很多在课堂上学的理论都是要靠我们做实验来验证的,而做实验就是锻炼我们的实际操作能力。在画电路图的过程中,遇到了很多阻碍。一开始DXP2004画图软件不会用(大二学过的,但时间长了又忘了),后来又重新学了一遍,付出很多时间。所以我们学过的东西要经常拿出来用,学以致用。电路图画好后,又用keil软件编写一些简单的程序并调试,练习使用软件。在这次实习中
27、学到了很多知识,比如电工,51单片机,汇编语言等。这使我们意识到,任何一件产品的产生,都不是单一知识所能实现的。而且在电路的设计和程序的编程过程中,出现了很多意想不到的错误,让我们措手不及,有些甚至是一些非常低级的错误,但是这些错误也同样让我们获益非浅,它使我们意识到,研究是一个非常严肃的过程,来不得半点马虎。必须有一个严谨的态度,加上100的努力才有可能获得成功的喜悦总之,在本课题的设计过程中在老师的指导和帮助下少走了很多弯路,但还是学到了不少知识。了解了超声波传感器的原理,学会了电路板焊接技能、和各种电路的设计与分析。动手能力与自学能力得到了锻炼与提高。理论总是不开实践的,设计制作过程中,
28、盲目的追求理论知识根本不足以解决任何问题,一味的死研究课本是不会真正掌握单片机的。只有实际去真正动手做才能发现问题,解决问题,提高自身能力。附录一: 单片机超声波测距系统原理图附录二: PCB图附录三: 单片机超声波测距系统C语言原程序超声波测距系统程序设计/*包含头文件*/#include#include#define NOP _nop_();_nop_();_nop_()#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/*位定义*/sbit csb=P34;sbit green=P
29、23;sbit yellow=P24;sbit red=P25;bit flag_1=0; uchar vo_vo=0xe7;uint speed=340;#includedelay.c#includesound.c#include12864.c#includedisplay.c#includeDS18B20.c#includeSOUND.c#definenop_nop_()float distance;uint count=0;uchar high_time,low_time,flag=0,tc=2;uchar flag_2=0; uchar tc_say=0; ulong dis,dis_
30、43;/*函数名:float Distance_count()功能:距离计算函数*/float Distance_count()float temp;temp=high_time*256+low_time;temp=(temp*10/9216)/2; temp*=speed;return temp;/*函数名:ulong do_s(ulong dis_1)功能:距离补偿*/ulong do_s(ulong dis_1)uchar n;if(dis_170)&(dis_10;i-)csb=!csb;nop;nop;nop;nop;nop;nop;nop;nop;nop;csb=1;delay_m
31、s(2);EX1=1;delay_ms(30);if(flag=1) distance=Distance_count();dis=(ulong)distance ;flag=0;else dis=0;void tran1()uchar i;TH0=0;TL0=0;TR0=1;for(i=8;i0;i-)csb=!csb;nop;nop;nop;nop;nop;nop;nop;nop;nop;csb=1;delay_ms(2);EX1=1;delay_ms(30);if(flag=1) distance=Distance_count();dis=(unsigned long)distance;f
32、lag=0; else dis=0;void tran2()uchar i;TH0=0;TL0=0;TR0=1;for(i=16;i0;i-)csb=!csb;nop;nop;nop;nop;nop;nop;nop;nop;nop;csb=1;delay_ms(2);EX1=1;delay_ms(40);if(flag=1) distance=Distance_count();dis=(unsigned long)distance;flag=0; else dis=0;/*函数名:void dis_all(ulong dis_s)功能:控制LED指示灯和语音播报*/void dis_all(u
33、long dis_s)show(dis_s); if(dis_s2000) show_one(DIS4,2); green=0;red=1;yellow=1; if(flag_2!=1) send_oneline(12);/安全距离 delay_nms(50); while(!busy); flag_2=1; else if(dis_s500)&(dis_s100)&(dis_s500) show_one(DIS6,2); green=1;red=0;yellow=1; if(flag_2!=3) send_oneline(15);/请注意delay_nms(50);while(!busy);
34、 send_oneline(13);/危险距离 delay_nms(50); while(!busy); flag_2=3; else show_one(DIS8,2); yellow=1; if(dis_sdis) dis=dis_40;if(dis_41dis) dis=dis_41;/*函数名:void main(void)功能:主函数*/void main(void) ulong data time;uchar i,j;P0 = 0xFF;P1 = 0xff;P2 = 0xff; TMOD=0x01;TH0=0;TL0=0; EA=1;IE=0x80;displayall(); whi
35、le(1)lcd_pos(4,0); /设置显示位置为第三行 for(i=0;i16;i+) write(1,DIS10i);/lcd_wdat(DIS3i); delay(2); for(i=0;i3;i+) tran();if(dis=0)tran1(); if(dis=0) tran2(); dis=do_s(dis); dis_4i=dis;fit_1();if(dis4000) time=time-1000;elseif(time-dis)2500) time=dis;else time=time-100; elsetime=dis; dis_all(time); if(tc_say=4) soundplay(time); tc_say=0; tem
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100