《2022年计算机控制课程设计方案超声波测距仪》由会员分享,可在线阅读,更多相关《2022年计算机控制课程设计方案超声波测距仪(28页珍藏版)》请在金锄头文库上搜索。
1、个人资料整理仅限学习使用目录绪论 2 I.1课题设计的目的及其意义2I.2超声波测距仪的设计思路3I.3课题设计的任务和要求4第1章课题的方案设计与论证 51.1系统整体方案的设计51.2系统整体方案的论证5第2章系统的硬件结构设计62.1单片机的功能特点及测距原理 6 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 28 页个人资料整理仅限学习使用2.2超声波发射电路82.3超声波检测接收电路9 2.4超声波测距单片机最小系统设计 1 0 第3章系统软件的设计113.1超声波测距仪的算法设计113.2主程序流程图123 .3超 声波
2、发生子 程序与 超声 波接受 中断 程序 1 4 第4章系统的软硬件的调试 15总结 1 8参考文精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 28 页个人资料整理仅限学习使用献 1 9附录 A超声波测距电路原理图附录 B程序清单绪 论.1 课题设计目的及意义.1.1 设计的目的随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,
3、它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。.1.2 设计的意义随着科技的发
4、展,人们生活水平的提高,城市发展建设加快,城市给排水系精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 28 页个人资料整理仅限学习使用统也有较大发展,其状况不断改善。但是,由于历史原因合成时间住的许多不可预见因素,城市给排水系统,特别是排水系统往往落后于城市建设。因此,经常出现开挖已经建设好的建筑设施来改造排水系统的现象。城市污水给人们带来了困扰,因此箱涵的排污疏通对大城市给排水系统污水处理,人们生活舒适显得非常重要。而设计研制箱涵排水疏通移动机器人的自动控制系统,保证机器人在箱涵中自由排污疏通,是箱涵排污疏通机器人的设计研制的核心部分
5、。控制系统核心部分就是超声波测距仪的研制。因此,设计好的超声波测距仪就显得非常重要了。这就是我设计超声波测距仪的意义。.2 超声波测距仪的设计思路.2.1 超声波测距原理 1 ,2发射器发出的超声波以速度在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由 s=vt/2即可算出被测物体的距离。由于超声波也是一种声波,其声速v 与温度有关,下表列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。表 1-1 超声波波速与温度的关系表温度 )-30 -20 -10 0 10 20 30 100
6、声 速 . 了解超声波测距原理。(2. 根据超声波测距原理,设计超声波测距器的硬件结构电路。设计一超声波测距仪,要求:(1. 设计出超声波测距仪的硬件结构电路。(2. 对设计的电路进行分析能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。(3. 对设计的电路进行分析。(4. 以数字的形式显示测量距离。超声波发射器放大电路超声波接收器放大电路锁相环检波电路定时器单片机控制显示器精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 28 页个人资料整理仅限学习使用第 1 章课程的方案设计与论证1.1 系统整体方案的设
7、计由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简 单 , 并 且 在 测 量 精 度 方 面 也 能 达 到 农 业 生 产 等 自 动 化 的 使 用 要 求 。超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率、和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面常用的是压电式超声波换能器。根据设计要求并综合各方面因素,本文采用AT89C51单片机作为控制器,用动
8、态扫描法实 现LED数 字 显 示 , 超 声 波 驱 动 信 号 用 单 片 机 的 定 时 器 。1.2 系统整体方案的论证精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 28 页个人资料整理仅限学习使用超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的 反 射 波 方 式 , 适 用 于 测 距 仪 。 此 次 设 计 采 用 反 射 波 方 式 。测距仪的分辨率取决于对超声
9、波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。第2章 系统的硬件结构设计2.1 51系列单片机的功能特点及测距原理硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0 端口输出超声波换能器所需的40kHz 的方波信号,利用外中断0 口监测超声波接收电路输
10、出的返回信号。显示电路采用简单实用的4 位共阳 LED数码管,段码用74LS244驱动,位码用 PNP三极管 8550 驱动。2.1.1 51系列单片机的功能特点5l系列单片机中典型芯片 (AT89C51 采用 40 引脚双列直插封装 (DIP形式,内部由 CPU ,4kB的 ROM ,256 B 的 RAM ,2 个 16b 的定时计数器 TO和 T1,4 个8 b 的工 O 端 I :IP0,P1,P2,P3,一个全双功串行通信口等组成。特别是该精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 28 页个人资料整理仅限学习使用系列单片
11、机片内的Flash 可编程、可擦除只读存储器(EPROM,使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。该系列单片机引脚与封装如图2-1 所示。图 2-1 89C52 原理图5l 系列单片机提供以下功能:4 kB 存储器; 256 BRAM ;32 条工 O线;2 个 16b定时计数器; 5 个 2 级中断源; 1 个全双向的串行口以及时钟电路。空闲方式: CPU 停止工作,而让RAM 、定时计数器、串行口和中断系统继续工作。掉电方式:保存 RAM 的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。5l 系列单片机为许多控制提供了高度灵活和低成
12、本的解决办法。充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的超声波测距系统。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 28 页个人资料整理仅限学习使用2.1.2 单片机实现测距原理单片机发出超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差tr ,然后求出距离SCt2,式中的 C为超声波波速。限制该系统的最大可测距离存在4 个因素:超声波的幅度、反射的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。为了增加所测量的
13、覆盖范围、减小测量误差,可采用多个超声波换能器分别作为多路超声波发射接收的设计方法。由于超声波属于声波范围,其波速C与温度有关。2.2 超声波发射电路超声波发射电路原理图如图2-2 所示。发射电路主要由反相器74LS04和超声波发射换能器 T 构成,单片机 P1.0 端口输出的 40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1O 、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可
14、以增加超声波换能器的阻尼效果,缩短其自由振荡时间。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 28 页个人资料整理仅限学习使用图2-2 超声波发射电路原理图压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能
15、器在结构上稍有不同,使用时应分清器件上的标志。2.3 超声波检测接收电路集成电路 CX20186A 是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38 kHz与测距的超声波频率 40 kHz较 为 接 近, 可以 利 用 它制 作超声 波检 测接 收 电 路( 如 图 2-3 。实 验证 明 用CX20186A 接收超声波 ( 无信号时输出高电平 ,具有很好的灵敏度和较强的抗干扰能力。适当更改电容 C4 的大小,可以改变接收电路的灵敏度和抗干扰能力。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,
16、共 28 页个人资料整理仅限学习使用图2-3 超声波检测接收电路2.4 超声波测距单片机最小系统设计本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用AT89C51 ,经济易用,且片内有4K的ROM ,便于编程。电路原理图如图 2-4所示。其中只画出前方测距电路的接线图,左侧和右侧测距电路与前方测距电路相同,故省略。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 28 页个人资料整理仅限学习使用图 2-4 单片机最小系统电路原理图第 3 章 系统软件的设计超声波测距仪的软件设计主要由主程序、超声波
17、发生子程序、超声波接收中断程序及显示子程序组成。我们知道C 语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算计算距离时),又要求精细计算程序运行时间/21)其中, d 为被测物与测距仪的距离,s为声波的来回的路程, c 为声速, t 为声波来回所用的时间。在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0 或 INT1 端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间
18、差,计算距离。其部分源程序如下:RECEIVE0 :PUSH PSW PUSH ACC CLR EX0 ;关外部中断 0 ? MOV R7, TH0 ;读取时间值MOV R6, TL0? CLR C MOV A, R6 SUBB A, #0BBH ;计算时间差MOV 31H, A ;存储结果MOV A, R7 SUBB A, #3CH 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 28 页个人资料整理仅限学习使用MOV 30H, A? SETB EX0 ;开外部中断 0 POP ACC? POP PSW RETI 3.2 主程序流程
19、图软件分为两部分,主程序和中断服务程序,如图3-1a ) 所示。主程序完成初始化工作、各路超声波发射和接收顺序的控制。定时中断服务子程序完成三方向超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 28 页个人资料整理仅限学习使用主程序首先是对系统环境初始化,设置定时器T0 工作模式为 16 位定时计数器模式。置位总中断允许位EA并给显示端口 P0和 P1清 0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射
20、波触发,需要延时约0.1 ms这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0 接收返回的超声波信号。由于采用的是12 MHz 的晶振,计数器每计一个数就是1s,当主程序检测到接收成功的标志位后,将计数器 T0 中的数 即超声波来回所用的时间)按式/2=172T 0/10000cm(2 其 中 , T0 为 计 数 器T0 的 计 算 值 。测出距离后结果将以十进制BCD 码方式送往 LED显示约 0.5s ,然后再发超声波脉冲重复测量过程。为了有利于程序结构化和容易计算出距离,主程序采用C语 言 编 写 。3.3超 声 波 发 生 子 程 序 和 超 声 波 接 收 中 断
21、 程 序精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 28 页个人资料整理仅限学习使用超声波发生子程序的作用是通过P1.0 端口发送 2 个左右超声波脉冲信号 频率约 40kHz 的方波),脉冲宽度为12s 左右,同时把计数器T0 打开进行计时。超声波发生子程序较简单,但要求程序运行准确,所以采用汇编语言编程。超声波测距仪主程序利用外中断0 检测返回超声波信号,一旦接收到返回超声波信号 即 INT0 引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器 T0 停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到
22、超声波返回信号,则定时器T0 溢出中断将外中断0 关闭,并将测距成功标志字赋值 2 以表示此次测距不成功。前方测距电路的输出端接单片机INT0 端口,中断优先级最高,左、右测距电路的输出通过与门IC3A 的输出接单片机INT1 端口,同时单片机P1.3 和 P1.4 接到 IC3A 的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。部分源程序如下:receive1 :push psw push acc clr ex1 ;关外部中断 1 jnb p1.1, right ;P1.1 引脚为 0, 转至右测距电路中断服务程序jnb p1.2, left ;P1.2 引脚为 0, 转至左测
23、距电路中断服务程序return :SETB EX1 ;开外部中断 1 pop? acc pop? psw reti right : .? ;右测距电路中断服务程序入口? ajmp? return left:. ;左测距电路中断服务程序入口? ajmp? return 第 4 章 系统的软硬件的调试精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 28 页个人资料整理仅限学习使用超声波测距仪的制作和调试都比较简单,其中超声波发射和接收采用15的超声波换能器 TCT40-10F1T 发射)和 TCT40-10S1,具有很好的灵敏度和较强的抗
24、干扰能力。适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。我们知道C 语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算计算距离时),又要求精细计算程序运行时间超声波测距时),所以控制程序可采用C 语言和汇编语言混合编程。主超声波测距仪主程序利用外中断0 检测返回超声波信号,一旦接收到返回超声波信号.武汉:华中理工大学出版社, 1999.4 6 徐淑华,程退安,姚万生. 单片机微型机原理及应用. 哈尔滨:哈尔滨工业大
25、学出版社, 1999. 6.7 苏长赞 . 红外线与超声波遥控 . 北京:人民邮电出版社, 1993.7 8 张谦琳 . 超声波检测原理和方法 . 北京:中国科技大学出版社,1993.10 9 九州. 放大电路实用设计手册 . 沈阳:辽宁科学技术出版社,2002.5 10 樊昌元,丁义元 . 高精度测距雷达研究 . 电子测量与仪器学报, 2000.10 11 苏伟,巩壁建 . 超声波测距误差分析 . 传感器技术, 2004. 12 永学等 .1-Wire总线数字温度传感器DS18B20及应用 . 电子产品世界,2003.12 13 胜全.D18B20 数字温度计在微机温度采集系统中的序编制.
26、南京:南京大学出版社 1998. 314 恒清,张靖. 加强单片机系统抗干扰能力的方法. 通化师范学院学报,2004 .10 15 晗晓,袁慧梅. 单片机系统的印制板设计与抗干扰技术. 电子工艺技术,2004 .6 附录 A超声波测距电路原理图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 28 页个人资料整理仅限学习使用附录 B 程序清单精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 28 页个人资料整理仅限学习使用#include #define k1 P3_4 #def
27、ine csbout P3_5 / 超声波发送#define csbint P3_7 / 超声波接收#define csbc=0.034 #define bg P3_3 unsigned char csbds,opto,digit,buffer3,xm1,xm2,xm0,key,jpjs 。/显示标识unsigned char convert10=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
28、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。pto=0x
29、ff 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 28 页个人资料整理仅限学习使用jpjs=0。sj1=45。sj2=200。sj3=400。k4cl(。TR1=1。while(1 keyscan( 。if(jpjs csbcj(。 if(ssj3 buffer2=0x76 。buffer1=0x76 。buffer0=0x76 。 else if(s buffer2=0x40 。buffer1=0x40。buffer0=0x40。 else timeToBuffer(。 else timeToBuffer(。 /将值转换成 L
30、ED 段码offmsd(。scanLED(。 /显示函数if(s bg=0。bg=1。 void scanLED( /显示功能模块 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 28 页个人资料整理仅限学习使用digit=0x04。for( i=0。 i /3 位数显示 P3=digit&opto 。 /依次显示各位数P1=buffer。 /显示数据送 P1口delay(20。 /延时处理P1=0xff。 /P1口置高电平 =0 / 判断 3 位是否显示完key=0。digit=1。 /循环右移 1 位 void timeToBuf
31、fer( /转换段码功能模块 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 2 TH1=0x9E。TL1=0x57。csbds+。if(csbds=40 csbds=0。 cl=1。 void csbcj( 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -
32、第 25 页,共 28 页个人资料整理仅限学习使用 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 / 判断开关是否按下精选学习资料 - - - - - - - - - 名师归纳
33、总结 - - - - - - -第 26 页,共 28 页个人资料整理仅限学习使用 delay(400。 /延时去抖动if(k1!=1 / 判断开关是否按下 while(!k1 delay(30。xx+。 if(xx2000 jpjs+。if(jpjs4 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(sj1100 sj1=30。s=sj1。 void k2cl( sj2=sj2+5。if(sj2500 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 27 页,共 28 页个人资料整理仅限学习使用sj2=40。s=sj2。 void k3cl( sj3=sj3+10。if(sj3500 sj3=100。s=sj3。 void k4cl( sx1=sj1-1。sx1=sx1/csbc 。mqs=sx1/4.5。 void offmsd( if (buffer0 = 0x3f buffer0 = 0x00。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 28 页,共 28 页