基于AT89S51的超声波测距系统的.doc_第1页
基于AT89S51的超声波测距系统的.doc_第2页
基于AT89S51的超声波测距系统的.doc_第3页
基于AT89S51的超声波测距系统的.doc_第4页
基于AT89S51的超声波测距系统的.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计 学号毕毕业业论论文文 题 目 基于 AT89S51 的超声波测距系统的 设计与实现 作 者向杰届 别 2012 学 院物理与电子学院专 业电子科学与技术 指导老师梅孝安职 称副教授 完成时间 2012 05 毕业设计 I 摘要 超声波是指频率在 20kHz 以上的声波 它属于机械波的范畴 随着科技水平的不断 提高 超声波测距技术被广泛应用于人们日常工作和生活之中 本系统采用以AT89s51单片机为核心的低成本 高精度 微型化数字显示超声波测 距仪的硬件电路 整个电路采用模块化设计 由信号发射和接收 供电 温度测量 显示等模块组成 超声波经放大后发射出去 单片机的计时器开始计时 当超声波被 反射原路返回后 再经过放大 滤波 整形等环节 被单片机接收 计时器停止计时 用时间乘以速度就得到了测量距离 本系统设有DSl8b20数字温度传感器 能测量环境 的温度 以此来校正超声波的速度 使测量结果更准确 本系统硬件和软件设计科学 合理 实际测量误差小于3 关键词 关键词 AT89S51 超声波测距 DS18b20 温度检测 毕业设计 II 目录 摘要摘要 I I ABSTRACTABSTRACT IIII 第一章第一章 绪论绪论 1 1 1 1 研究背景及意义 1 1 2 超声波测距的原理概述 1 1 3 研究内容及论文结构 2 第二章第二章 系统总体设计系统总体设计 4 4 2 1 方案设计及论证 4 2 1 1控制器的选择 4 2 1 2超声波传感器选择 4 2 1 3测温传感器选择 5 2 1 4显示子系统选择 5 2 2 系统总体设计 5 第三章第三章 系统硬件设计系统硬件设计 7 7 3 1 单片机控制电路设计 7 3 2 超声波发射及接收电路设计 8 3 2 1 超声波发射电路的设计 8 3 2 2 超声波接收电路的设计 10 3 3 温度检测电路设计 10 3 4 LED 数码管显示电路设计 11 3 5 电源电路设计 12 第四章第四章 系统软件设计系统软件设计 1313 4 1 系统的算法设计 13 4 2 主程序设计 13 4 3 定时器 T1 中断服务子程序设计 14 4 4 外部中断 INT0 中断服务子程序的设计 16 4 5 DS18B20 测温程序设计 16 4 6 显示程序设计 20 第五章第五章 硬件测试及误差分析硬件测试及误差分析 2121 第六章第六章 总结总结 2323 参考文献参考文献 2424 附录附录 1 1 硬件电路原理图 硬件电路原理图 2626 附录附录 2 2 源程序源程序 2727 毕业设计 1 第一章 绪论 1 1 研究背景及意义 随着科技发展 电子测量技术应用越来越广泛 而超声波测量精确高 成本低 性 能稳定则备受青睐 超声波是指频率在20kHz以上的声波 它属于机械波的范畴 超声 波也遵循一般机械波在弹性介质中的传播规律 如在介质的分界面处发生反射和折射 现象 在进入介质后被介质吸收而发生衰减等 正是因为具有这些性质 使得超声波 可以用于距离的测量中 随着科技水平的不断提高 超声波测距技术被广泛应用于人 们日常工作和生活之中 一般的超声波测距仪可用于固定物位或液位的测量 适用于 建筑物内部 液位高度的测量等 由于超声测距是一种非接触检测技术 不受光线 被测对象颜色等的影响 较其它 仪器更卫生 更耐潮湿 粉尘 高温 腐蚀气体等恶劣环境 具有少维护 不污染 高可靠 长寿命等特点 因此可广泛应用于纸业 矿业 电厂 化工业 水处理厂 污水处理厂 农业用水 环保检测 食品 酒业 饮料业 添加剂 食用油 奶制品 防汛 水文 明渠 空间定位 公路限高等行业中 可在不同环境中进行距离准确度 在线标定 可直接用于水 酒 糖 饮料等液位控制 可进行差值设定 直接显示各 种液位罐的液位 料位高度 因此 超声在空气中测距在特殊环境下有较广泛的应用 利用超声波检测往往比较迅速 方便 计算简单 易于实现实时控制 并且在测量精 度方面能达到工业实用的指标要求 因此为了使移动机器人能够自动躲避障碍物行走 就必须装备测距系统 以使其及时获取距障碍物的位置信息 距离和方向 因此超声 波测距在移动机器人的研究上得到了广泛的应用 同时由于超声波测距系统具有以上 的这些优点 因此在汽车倒车雷达的研制方面也得到了广泛的应用 实际的工作环境对超声波的影响很大 如空气的温度对超声波的速度影响 及供电 电源的稳定也会使测量产生很大的误差 本系统通过采用 DS18b20 对声波的速度进行 温度补偿 将温度影响降到最低 而系统的电源是 9V 电先通过三端稳压芯片 7805 然 后提供的稳定 5V 电压 测试表明本系统的精度较高 在厘米级别 1 2 超声波测距的原理概述 发射器对某一方向发射超声波 在发射 超声波的同时开始计时 超声波在空 气中进行传播 途中如果遇到障碍物就立即返回来 超声波 探头收到反射波就立 即停止计时 以室温为例 超声波在大气中的传播速度为 340m s 计时器记录的 时间为 t 就可以计算出发射 端到距障碍物的距离 s 即 s 340t 2 毕业设计 2 由于超声波是一种声波 其声速 V 与温度 T 有关 在使用时 如果传播介质的温 度变化不是很大 则可以认为超声波速度在介质的传播过程中是近似不变的 如果对 检测精度要求很高 则可以通过温度补偿的方法对测量结果加以校正 先确定声速 然后只需要测得超声波在介质中传播的时间 即可求得距离 这就是超声波测距仪的 基本原理 tA 超声波发射 障碍物 S S H H 超声波接收 图 1 1 超声波的测距原理 cosSH 1 1 H L arctg 1 2 式中 L 两超声波传感器之间中心距离的一半 又知超声波传播的距离公式为 vtS 2 1 3 式中 v 超声波在介质中的传播速度 t 超声波从发射出去到接收所经过的时间 将后 1 2 和 1 3 代入 1 1 可得 cos 2 1 H L arctgvtH 1 4 其中 超声波速度 v 在一定的温度下为一个常数 例如在温度 T 30 度时 V 349m s 当 要测量距离 H 远远大于 L 时 则上式变为 vtH 2 1 1 5 所以 只需要测量出超声波传播的时间 t 就可以通过公式计算出距离 H 1 3 研究内容及论文结构 本文设计的超声波测距系统通过温度补偿计算出当时声波速度 能较准确的测量出 距离 经过单片机综合处理后 能显示距离 温度 声速 它包括了控制单元89S51 毕业设计 3 超声波测距模块 温度测量模块 显示模块 电源模块等 论文构成主要由以下部分组成 第 1 章 包括研究背景和意义 并介绍本系统对误差做出的措施 第 2 章 系统总体方案设计 首先介绍测距系统的设计要求 介绍测距系统传感器 的选择 温度测量系统 显示系统的方案设计 然后提出本系统总的方案设计 第 3 章 系统硬件设计 首先分析超声波传感器的工作原理 然后具体讨论测距模 块中的超声波发射电路和超声波接收电路以及测距模式电路的硬件设计 然后介绍温 度测量模块的设计 最后介绍了系统显示报警模块电路的设计 第 4 章 系统软件设计 在软件设计中采用模块化设计思想 分别对系统的主程序 模块 测距模块 中断检测模块 温度检测模块和显示模块的程序进行了软件设计 第 5 章 硬件测试及性能分析 首先对系统进行硬件测距测试 然后对系统性能误 差进行讨论 第 6 章 总结 对全文进行总结 指出不足之处 对超声波测距系统的发展前景进 行展望 毕业设计 4 第二章 系统总体设计 2 1方案设计及论证 要实现超声波测距 需要多方面的知识相互结合 主要解决的部分有控制芯片的选 择 距离的测量 温度的测量 距离的显示等等 从技术手段这方面来看 本设计中 最主要的是距离测量 其他方面都是围绕着距离测量所展开来的 距离测量首先要选 择好适当的传感器 在选择好了传感器后再经由恰当的核心芯片处理即能达到所需精 度 下面就对控制器 传感器 显示方案选择做以下论述 2 1 1控制器的选择 本文选用的核心芯片是AT89S51单片机 AT89S51是一款功耗低并且性能高的 CMOS 8位单片机 片内含4k Bytes ISP In system programmable 的可反复擦写大约1000 次的只读程序存储器Flash 设计上采用了ATMEL公司的高密度 非易失性储存技术 兼容标准MCS 51指令系统及80C51引脚结构 芯片内集成了通用8位CPU和ISP Flash存 储单元 AT89S51在众多嵌入式实际应用系统中得到非常广泛的应用 简而言之 AT89S51有操作简单 体积较小 编译和调试安装简易 成本较低廉等 特点 此外考虑到我自己对于单片机的掌握程度 我选择AT89S51作为系统控制器 2 1 2超声波传感器选择 能够完成超声波发送和超声波接收这种功能的装置被称为超声波传感器 或者称 为超声波换能器 或超声波探头等 超声波探头主要组成部分是压电晶片 不仅可以 发射超声波 还可以接收超声波 小功率超声探头有许多不同的结构 可分直探头 表面波探头 斜探头 双探头 兰姆波探头等 超声传感器的核心部件是塑料外壳或者金属外壳中的一块压电晶片 晶片的材料 有许多种 由于晶片的直径和厚度各不相同 从而使每个探头有不同的性能 我们使 用前需要了解清楚不同探头的性能参数 超声波传感器的主要性能指标有 1 工作频率 工作频率就是压电晶片的共振频率 当探头两端电压的频率和晶 片的共振频率相等时 探头发射能量最大 灵敏度最高 2 工作温度 由于压电材料的居里点一般比较高 同时超声波探头使用时功率 较小 所以工作温度比较低 可以长时间的工作而不失效 但是医疗用途的超声探头 的工作环境的温度比较高 需要单独的制冷设备 3 灵敏度 主要取决于制造晶片本身 机电耦合系数大 灵敏度高 本设计选用压电式超声波传感器 工作频率是 40KHz 工作温度 20 70 灵 敏度在 5 米以内 探头常用材料是压电晶体和压电陶瓷 利用压电效应来进行工作的 毕业设计 5 逆压电效应的过程是将高频率的电振动转换成高频率的机械振动 从而产生超声波 可制作发射探头 而通过正压电效应 将振动的机械波转换成电信号 可作为接收探 头 2 1 3测温传感器选择 超声波测距的关键是已知声速 通过距离公式求出声波所跑路程 从而求出距离 但声波的传播速度受温度影响较大 不同的温度下声速不同 从而造成误差 所以通 过测量温度 求出当时的准确声速能有效的减小误差 本文采用的是DSl8b20数字温度 计来测量温度 DS18b20 具有独特的一线接口 只需要有一条口线即可通信 多点能力 简化了分 布式温度传感的应用 不需要外部元件 可用数据总线直接供电 电压范围为 3 0 V 至 5 5 V 无需备用电源 测量温度范围为 55 C 至 125 范围内精度为 0 5 C 温度传感器通过编程可以设置两种分辨率 9位和12位 温度转换为12位数字格式 温度转换所需时间为750毫秒 应用范围包括热敏感系统 恒温控制 消费电子产品温 度计 或工业系统中 2 1 4显示子系统选择 显示器是一个典型的输出设备 而且其应用是极为广泛的 最简单的显示器可以用 LED数码管 设计简单 易于安装 成本只要几元 从能够实现显示功能以及个人设计 简单方便方面考虑 本设计中采用 LED数码管实现显示功能 LED数码管实际上是由七个发光二级管以8字形结构组成的 加上小数点就是8个 这些段通过字母a b c d e f g dp来表示 当数码管特定的段加上电压后 这个特定 的段就会发亮 来形成我们所需的字样 2 2 系统总体设计 按照系统所需功能 系统硬件结构可以划分为五大主要模块 控制模块 超声波发 射模块 超声波接收模块 温度检测模块和数据显示模块 系统总体结构框图如图2 1 所示 障 碍 物 超声波发射 超声波接收 89S51 单片机 温度测量 LED 显示 毕业设计 6 图 2 1 系统总体框架图 其中测距系统有超声波发射 接收子系统构成 控制部分以 89S51 单片机为核心 其 P1 0 口控制超声波发射电路产生 40KHz 的超声波 利用外部中断监测超声波接收 电路输出的返回信号 其中显示系统采用简单实用的 4 位共阳 8 段 LED 数码管 毕业设计 7 第三章 系统硬件设计 超声波测距系统由超声波传感器 俗称探头 MCU 和 4 位数码管 DS18B20 电源 等部分组成 在控制器的控制下由传感器发射超声波信号 当遇到障碍时 产生回波 信号 传感器接收到回波信号后经控制器进行数据处理 判断出障碍物的位置 由显 示器显示距离 3 1 单片机控制电路设计 单片机这一词最初源于 Single Chip Microcomputer 简称 SCM 单片机也 可以称为 微控制器 或 嵌入式微控制器 它不仅仅是完成某一个逻辑功能的芯 片 而是将一个微型计算机的系统集成到一个芯片上 这就相当于 一块芯片就成了 一台计算机 它体积小 质量轻 价格便宜 为学习 应用和开发提供了便利条件 本设计采用 AT89S51 作为系统控制芯片 它是美国 ATMEL 公司生产的一款功耗低 性能高的 8 位单片机 完美的兼容了标准 8051 的指令系统和引脚 图 3 1 单片机最小系统 单片机最小系统是指能让单片机工作的最简单的电路 包括电源电路 振荡电路 毕业设计 8 复位电路 如图 3 1 单片机正常工作电压为 5V 通过 40 引脚接电源正极 20 引脚接电源负极来实现供 电 时钟被称为单片机的心脏 单片机各个功能部件的执行都是以始终的频率为基准的 始终的频率能够直接影响单片机的速度 它的质量也影响着单片机的稳定性 常用的 时钟有两种方式 内部时钟和外部时钟 51 单片机的内部有用作构成一个振荡器的高 增益反相放大器 它的输入端和输出端分别为芯片的 XTAL1 引脚和 XTAL2 引脚 这两 个引脚接晶振和微调电容 这样就能够形成一个稳定的自激振荡器 51 单片机晶振的 频率一般为 6MHz 12MHz 24MHz 高速的单片机能达到 40MHz 的始终频率 复位就是对单片机进行初始化操作 只要给 RESET 引脚两个机器周期以上的高电平 就可以完成单片机的初始化复位 复位其实就是将 PC 程序计数器初始化为 0000H 是 单片机重新从 0000H 开始执行程序 复位电路分为两种 上电复位和按键复位 本文 采用的上电复位 上电自动复位就是利用外部的复位电路中的电容充电来实现 在电 路图中 电容的的大小是 10uF 电阻的大小是 10K 电容充电到电源电压的 0 7 倍 需要的时间是 10K 10uF 0 1S 也就是说在单片机启动的 0 1S 内 电容两端的电压是 在 0 3 5V 增加 这个时候 10K 电阻两端的电压为从 5 1 5V 减少 所以在 0 1S 内 RST 引脚所接收到的电压是 5V 1 5V 在 5V 正常工作的 51 单片机中小于 1 5V 的电压 信号为低电平信号 而大于 1 5V 的电压信号为高电平信号 所以在开机 0 1S 内 单 片机系统自动复位 3 2 超声波发射及接收电路设计 测距时通过超声波传感器的发送端和接收端实现超声波的发射和接收 通过单片机 的定时器进行计时 首先 在发送端向障碍物发送超声波的同时启动单片机的计时器 进行计时 超声波在传播过程中遇到障碍物会被反射回来 当探头接收回波信号后马 上启动外部中断 定时器的计时停止 这样 单片机的计时器就记录了超声波传播整 个过程的时间 当在室温下进行时 超声波在大气中的传播速度大约为 340m s 所以 发射端距障碍物间的距离为 S 340 t 2 170 t 3 1 当单片机晶振为 12MHz 时 单片机定时器最小定时间隔 T 为 1 s 计数为 N 则有 T 12 fosc 1 s t NT 3 2 S 170 N T 3 3 即 S 17 N 1000 0 017 N cm 3 4 3 2 1 超声波发射电路的设计 发射电路是为了驱动传感器探头内的压电晶片 使之振动并发出超声波 而且要使 发射出的超声波有足够的能量 尽量传播较远的距离 能更好的达到测量的目的 当 毕业设计 9 施加在探头上脉冲的频率与探头中心频率一致并且足够大的能量即可完成探头的驱动 发射端所需的一串脉冲可以由单片机提供 本系统采用的是由单片机的 P1 0 端口发出 40kHz 的脉冲波 一路脉冲信号经过一级反向器后被送到传感器的一个电极 另一路脉 冲信号经两级反向器后被送到传感器的另一个电极 用这种推挽方式将脉冲信号加到 超声波传感器两端 可以提高超声波信号的发射强度 输出端通过采用两个反向器的 并联 可以提高驱动的能力 图中的上拉电阻有两个作用 一方面能够增强超声波换 能器的阻尼效果 缩短换能器自由振荡所需的时间 另一个方面能够增强反向器 74HC04 输出高电平的驱动能力 原理图如图 3 2 图 3 2 发射电路原理图 1 实际中采用的 74HC04 是内含 6 组相同的反相器 电路图如图 3 3 毕业设计 10 图 3 3 发射电路原理图 2 3 2 2 超声波接收电路的设计 由于在距离较远的情况下 超声波的回波很弱 因而转换为电信号的幅值也较小 为此要求将信号放大 集成电路 CX20106A 是一款常用于红外线的检波接收专用芯片 其灵敏度高 抗干扰能力强 由于红外遥控常用的频率为 38 kHz 和发射出的超声波频 率 40 kHz 很接近 所以可以使用它来制作超声波的检波接收电路 图 3 5 接收电路原理图 如图 3 5 1 引脚为检波信号的输入端 2 引脚的 RC 串联电路与地相连 能够影响 前置放大电路的频率特性和增益 3 引脚连接检波电容 5 引脚连接电阻与电源相连 用来设置中心频率 阻值越小 中心频率越大 6 引脚连接积分电容与地相连 电容的 大小能够影响探测距离 7 引脚为命令输出端 需接上拉电阻 工作时 换能器将所接收到的微弱声波振动信号转化成为电信号 送给 CX20106A 的输入端 1 当 CX20106A 接收到信号进行放大 滤波 检波等一系列的处理后 7 脚就会输出一个低电平 可用于单片机的中断信号源 当单片机接收到中断信号时 说明检测到了反射回来的超声波 单片机就进入中断处理程序 开始进行距离计算 3 3 温度检测电路设计 由于超声波也是一种声波 其声速V跟温度有关 表1列出了几种不同温度下的声速 毕业设计 11 在使用时 如果温度的变化不是很大 则可以近似认为超声波的传播速度是不变的 在 室温下声波在大气中的传播速度是334 米 秒 但温度对声波传播速度的影响很大 如 果温度升高1 声波传播速度就会增加大约0 6米 秒 采用温度补偿的方法能使测 量的精度提高 声速与温度之间的关系式如下 V 331 45 0 607T 3 5 表一 声速与温度关系表 温度 30 20 100102030100 声速 m s 313319325332338344349386 本文采用的是 DSl8b20 数字温度计来测量温度 提供可选择的二进制 12 位温度读 数来表示温度信息 经过单线接口与单片机进行数据交互 DSl8B20 的电源甚至可以由 数据线本身来提供从而不需要再接外部电源 温度传感器 DSl8B20 的测温范围从 55 摄 氏度到 125 摄氏度 精度为 0 5 可在 l s 典型值 内把温度变换成数字量 因此采用 DS18B20 实现温度补偿电路的设计 电路连接如图 3 6 图 3 6 DS18b20 电路图 3 4 LED数码管显示电路设计 LED 是发光二极管的缩写 LED 数码管里面有 8 只发光二极管 分别记作 a b c d e f g dp 其中 dp 为小数点 每一只发光二极管都有一根电极引到 外部引脚上 而另外一只引脚就连接在一起同样也引到外部引脚上 记作公共端 毕业设计 12 51 系列单片机的输出方式为强下拉 弱上拉 高电平输出电流很小 所以数码管会 很暗 一般阴数码管的驱动要加到段选的那一段 共阳数码管要加到位选的那一端 本文选用的 4 位共阳数码管 使用三极管驱动 显示电路如图 3 7 图 3 7 显示电路图 三极管起到电流放大 开关控制的作用 单片机的 I O 口驱动能力有限 当三 极管工作在饱和状态时 它的作用就是个开关了 I O 0 时导通 深度饱和时三极管 Uce 0V 此时集电极电流达到最大 电阻用来限流 并确定了三极管的静态工作点 即工作在深度饱和状态 3 5电源电路设计 本系统设计时考虑到便于携带问题 采用 9V 电池供电 由于单片机的工作压是 5V 采用 78L05 三端稳压电源调整器来稳定的输出 5V 电压 电路如图 3 8 毕业设计 13 图 3 8 电源稳压电路图 第四章 系统软件设计 4 1 系统的算法设计 根据超声波测距的原理 即超声波发生器 T 在某一时刻发出超声波脉冲信号 超 声波遇到被测物体后反射回来 被超声波接收器 R 接收到 这样只要计算出从发出超 声波信号到接收到返回信号所用的时间 就可算出超声波发生器与反射物体的距离 距离的计算公式为 S Vt 2 4 1 其中的 S 为被测物体与测距器之间的距离 V 为声速 t 为声波来回所用的时间 例如 20 时的声速为 344m s 所以 只要测出超声波往返的时间 即可求得距离 由于超声波也是一种声波 其声速C与温度有关 在使用时 如果温度变化不大 则可认为声速是基本不变的 在本系统的设计中利用DS18b20测得环境的温度值T 再 由公式V 331 45 0 607T 计算得到准确的声波速度 4 2 主程序设计 系统初始化后首先启动 DS18b20 检测当时温度值 计算出实时的声速 然后启动 定时器 T1 进行 12 5us 的计时 在 T1 中断服务子程序中将会在 P1 0 产生 40KHz 的矩 形波 在等待超声波脉冲串发送后关闭计时器 T1 同时打开计时器 T0 对声波传播的时 间进行计时 为了避免声波直接从发射端到接收端 需要延迟 0 1 ms 后再打开 INT0 中断允许 INT0 中断允许打开后 若 P3 2 INT0 引脚有低电平信号则代表收到了回波 信号 程序将进入 INT0 中断服务子程序 在 INT0 中断服务子程序中计数器 T0 将停止 计数 读取计数器的值 单片机再调用距离计算子程序进行计算 计算出传感器到目 标物体之间的距离 此后主程序调用显示子程序进行显示 主程序的流程图如图 4 1 所示 毕业设计 14 在系统初使化的过程中 主要是设置定时器 同时还要打开总中断等 当 P1 0 发 出脉冲串后 同时打开定时器进行计时 当超声波接收到回波信号后 会产生一个低 电平给 INT0 之后进入中断处理程序 在主程序中又会恢复定时器的初值等 依此进 行循环 毕业设计 15 开始 系统初始化 温度检测计算声速 启动 T1 产生 40KHz 矩形脉冲串 启动 T0 开始计时 开放外部中断 回波接收成功 进入外部中断 子程序 得出传播时间 计算距离 显示距离 图 4 1 主程序设计流程图 4 3 定时器T1中断服务子程序设计 本设计中 40 kHz 方波的产生采用软件方式实现 控制 P1 0 口输出 12 5 s 的高 电平 再输出 12 5 s 的低电平 这样得到一个周期为 40 kHz 的脉冲 再循环发送 5 次 超声波发生子程序用定时器 T1 中断程序产生超声波 定时器 T1 中断服务程序流 程图如图 4 2 所示 毕业设计 16 连续发射 5 个 40kHz 的超声波 计数器 T0 清零并启动 计数器 T0 开中断允许 EA 延时 0 1ms 以避免 虚假发射波 开外部中断 INT0 返 回 定时器 T1 中断服务子程序入口 图 4 2 T1 中断服务子程序流程图 主要程序如下 TR1 1 启动定时器 1 发送信号 while cshu 10 等待脉冲串 发送完 TR1 0 定时器用于发送脉冲 发完一次后关闭 TR0 1 启动定时器 0 脉冲串发完后 开始记时 delay 12 0 1s 延时 EX0 1 void CTC1 INT interrupt 3 12 5us 中断一次 用于发射脉冲 VOLCK VOLCK cshu 毕业设计 17 4 4 外部中断INT0中断服务子程序的设计 本设计利用外中断 0 检测返回超声波信号 一旦接收到返回超声波信号 即 INT0 引脚出现低电平 立即进入中断程序 进入中断后就立即关闭计数器 T0 停止计数 外部中断 INT0 中断服务子程序流程图如图 4 3 所示 关中断允许 停止计数器 T0 计数 并读取 T0 计数值存储 调用距离计算子函数 返 回 外部中断 INT0 中断 服务子程序入口 图 4 3 INT0 中断服务子程序 主要程序如下 void serve INT0 interrupt 0 EX0 0 关中断 TR0 0 关闭定时器 0 time long TL0 time long TH0 256 time time 120 Timetojuli TH0 0 TL0 0 4 5 DS18b20测温程序设计 DS18b20 测温程序总体上包括两部分 启动温度转换和读取温度 启动温度转换有 三个步骤 复位 18B20 发出 Skip ROM 命令 CCH 发出 Convert T 命令 44H 读取温度包括五个步骤 复位 DS18B20 发出 Skip ROM 命令 CCH 发出 Read 命令 毕业设计 18 BEH 读两字节的温度温 度格式转换 DS18b20 采用的单总线数据传输模式 复位 写数据 读数据都有不同的时序 从 应用手册上能找出相应的时序 图 4 4 18b20 复位时序 单片机 t0 时刻发送一复位脉冲 最短为 480us 的低电平信号 接着在 tl 时刻释放 总线并进入接收状态 DS18B20 在检测到总线的上升沿之后 等待 15 60us 接着 DS18B20 在 t2 时刻发出存在脉冲 低电平持续 60 240us 如图中虚线所示 换句话说如果 t2 t3 之间信号电平如果为低 则说明 DS18B20 复位成功 否则失 败 复位程序如下 void DS18b20 reset void bit flag 1 while flag while flag DQ 1 delay 1 DQ 0 delay 50 550us DQ 1 delay 6 66us flag DQ delay 45 延时 500us flag DQ DQ 1 毕业设计 19 图 4 5 18b20 写入时序 当单片机将总线 t0 时刻从高拉至低电平时 就产生写时间隙 见上图 从 t0 时刻 开始 15us 之内应把所要写入的位送到总线上 DS18B20 在 t0 后 15 60us 间对总线进 行采样 若低电平写入的位则是 0 若高电平 写入的位则是 1 连续两次位写入的间 隙需大于 1us 写数据程序如下 void write byte uint16 val uint8 i for i 0 i 1 右移一位 DQ 1 delay 1 图 4 6 18b20 读字节时序 当单片机将总线 t0 时刻从高电位拉至低电位时 只须将总线保持低电平 4us 之后 在 t1 时刻将总线拉到高电平 产生读的时间间隙 读时间在 t1 时刻后 t2 时刻前有效 t2 距 t0 为 15us 也就是说 t2 时刻前主机必须完成读位 并在 t0 后的 60us 120us 内 释放总线 毕业设计 20 读数据程序如下 uint8 read byte void uint16 i value 0 for i 0 i 1 DQ 0 nops 4us DQ 1 nops 4us if DQ value 0 x80 delay 6 66us DQ 1 return value 通过是复位 读 写程序的调用 启动温度转换和读取温度只需按步骤调用程序即 可读出温度数值 启动转换和读取温度程序如下 void start temp sensor void DS18b20 reset write byte 0 xCC 发 Skip ROM 命令 write byte 0 x44 发转换命令 int16 read temp void uint8 temp data 2 读出温度暂放 DS18b20 reset 复位 write byte 0 xCC 发 Skip ROM 命令 write byte 0 xBE 发读命令 temp data 0 read byte 温度低 8 位 temp data 1 read byte 温度高 8 位 temp temp data 1 temp 4 return temp 毕业设计 21 4 6显示程序设计 本系统设计时开机就会自动检测温度先显示三次实时温度值再显示测量距离 中途 可以通过按键来显示温度和声速 下面以距离显示为例说明显示程序 本系统用动态扫描法实现 LED 数字显示 位选 I O 口等于 0 时选通相应数码管 而 位码则通过对数值的取整和取余运算分别求出个 十 百位的数值 小数点则通过与 上 0 x7f 使第二位一直显示显示小数点 距离显示子程序如下 void display void 显示 5 位数据 P0 table number 4 S1 0 delay 200 S1 1 P0 table number 3 S2 0 delay 200 S2 1 P0 table number 2 S3 0 delay 200 S3 1 P0 table number 1 S4 0 delay 200 S4 1 毕业设计 22 第五章 硬件测试及误差分析 超声波测距时需要测的是从开始发射到接收回波信号的声波往返时间差 由于我们 需要检测的有效信号为反射的回波信号 故要尽量避免检测到余波信号 余波干扰也 是超声波检测中存在最小测量盲区的主要原因 理论上本设计存在的盲区约为 20cm 超声波测距所能测的距离大小与传感器的驱动功率 测量方法有很大关系 本设计理 论上测量距离范围为 0 2 2 5m 误差比较稳定 能够精确到 1cm 基本满足设计要求 图 5 1 超声波测距系统实物图 表二 距离测试及误差计算 实际距离 cm 20304050607090100 测量结果 cm 19294049606991100 误差 53 330201 431 110 实际距离 cm 110120140160180200220240 测量结果 cm 111120140161182201222243 误差 0 9000 61 10 50 91 2 表二是利用本文的测距仪进行实际测量的结果 由表中数据可见 在20 150cm 范 围内误差相对较小 小于20cm 范围内误差较大 这是因为超声波距离测量存在一定范 围的盲区 盲区的出现是因为发出信号必须有一个上升时间 当距离太近时计算机系统 已不能处理迅速返回的反射波信号 所以距离小于0 2米测量误差明显增加 毕业设计 23 200cm以后的数据误差增大 这是由于发射功率不够大 接收到的信号很微弱 引 入了一些干扰因素 但电路引入温度补偿电路后总的实验结果误差在厘米级 基本上可 以满足测量要求 系统在设计 计算过程中必定会产生一定的误差 这是允许的 但是我们要尽量 减小误差 以下就可能产生误差的原因进行分析 1 环境温度引起的误差 这是在不同的气候条件下引起大误差的主要原因 声速 v 随着环境温度变 化的近似计算公式 V 335 5 0 607T m s 5 1 根据以上计算公式 再根据本设计中硬件处理的时间计算 在温差30 左右时前后 的误差大概在18cm 前后相差较大 在本设计中采用了温度补偿的方法 能有效的减 小温度带来的误差 2 反射物体表面材料的介质引起的误差 反射物体表面光滑的介质比之粗糙的介质测量结果要好 如果反射物体的表面比较 粗糙会引起回波信号的减弱 测量结果误差增大 3 超声波波束的入射角的影响 障碍物 探头两者之间存在一个几何角度 即反射波入射到探头的角度 当这个角 度不是与障碍物垂直时 系统测量到的距离不是垂直距离 这就会造成测量误差 尤 其在障碍物的距离较小的时候这个误差就会成为距离测量的主要误差来源 只需摆正 好测距仪 这种误差是可以尽量减小的 4 直达波的影响 有一部分声波从发射探头直接转到接收探头 这部分信号直接加到回波信号中干扰 回波信号的检测 这干扰能够通过软件算法进行处理 消除直达波的干扰 芯片一旦 判定收到的超声波信号是声波衍射返回的信号时则自动忽略结果 继续等待在该工作 周期内是否为有效反射波 有则尽心处理 没有则进行新的一次测量 毕业设计 24 第六章 总结 本文借助于模数电技术和单片机技术的结合 解决了超声波测距的一些文题 本毕 业设计以AT89S51为核心 灵活的运用超声波换能集成电路作为超声波的接收电路 在 讨论了超声波测距原理 硬件电路实现和软件设计方法基础上 基本完成了超声波测 距的设计要求 而且本系统具有温度补偿系统 具有测量精度高 抗干扰能力强 反 应速度快等特点 可适用于各种水文液位测量 障碍物的识别以及车辆自动导航等领域 因 此具有广阔的应用前景 不过 本设计尚可以在以下几个方面进行改善 从而使得本设计的测距仪功能更加 完美 1 由于探头的限制 在高温高压等恶性环境下测量误差大 根据实际情况更换合 适的探头 2 系统动态性能不高 在被测表面移动速度很小时 可以实现跟踪测量 但是若 其移动速度过大则误差随之增大 毕业设计 25 参考文献 1 胡汉才 单片机原理及接口技术 M 北京 清华大学出版社 2004 2 房小翠 单片微型计算机与接口技术 M 北京 国防工业出版社 2003 3 童诗白 模拟电子技术基础 第 3 版 M 北京 高等教育出版社 2003 4 阎石 数字电子技术基础 第 5 版 M 北京 高等教育出版社 2004 5 康华光 电子技术基本 模拟部分 M 北京 高等教育出版社 2004 6 康华光 电子技术基本 数字部分 M 北京 高等教育出版社 2004 7 李丽娟 C语言程序设计 M 北京 中国铁道铁道出版社 2006 8 张毅刚等 MCS 51 单片机应用设计 M 哈尔滨 哈工大出版社 2004 9 赵负图 传感器集成电路手册 M 北京 化学工业出版社 2003 10 何立民 单片机高级教程 M 北京 北京航空航天大学出版社 2000 11 Harvey L Coles G S V Watson J The development of an environment chamber for the characterization of gas sensors J Sensors and Actuators 1989 16 393 405 12 Nordic VLSI ASA Inc 2 4GHz wireless audio st reamern RF24Z1 2006 11 毕业设计 26 附录1 硬件电路原理图 附录 2 源程序 include include include 定义数据类型 typedef unsigned char uint8 typedef unsigned int uint16 typedef char int8 typedef int int16 端口定义 sbit DQ P1 4 温度输入口 sbit VOLCK P1 0 声波发射 sbit key P2 0 sbit S1 P2 4 位选 毕业设计 27 sbit S2 P2 5 sbit S3 P2 6 sbit S4 P2 7 sbit K1 P1 5 中断显示灯 sbit K2 P1 6 定义系统常数 int16 temp 温度返回值 float V 声波速度 long int time 时间 bit CLflag 测量标志 char cshu 串数 显示段码位码 char code table 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 数字0 9的编码 char weima 2 0 char idata number 9 显示数据 char weima V 9 define nops nop nop nop nop 定义空指令 延时子程序 void delay int j int i for i 0 i j i void delay ms int x int i j for i 0 i x i for j 0 j 120 j void display void 显示5位数据 P0 table number 4 S1 0 delay 200 S1 1 P0 table number 3 S2 0 毕业设计 28 delay 200 S2 1 P0 table number 2 S3 0 delay 200 S3 1 P0 table number 1 S4 0 delay 200 S4 1 void Timetojuli void 将测量的时间转换为距离 long int s s time V 2 单位为微米 number 4 s 10000000 十米 number 3 s 1000000 10 米 number 2 s 100000 10 分米 number 1 s 10000 10 厘米 number 0 s 1000 毫米 初始化定时器 CTC0 CTC1用于定时 void init CTC void TMOD 0 x21 设CTC1工作于模式2 定时器 CTC0 工作在方式1 ET0 0 不允许CTC0中断 void init INT 外部中断初始化为高优先级 并开中断 IP 0 x01 置外部中断INT0优先级为高 TCON 0 设置外部中断0的中断方式为电平触发 18B20 18B20复位函数 void DS18b20 reset void bit flag 1 毕业设计 29 while flag while flag DQ 1 delay 1 DQ 0 delay 50 550us DQ 1 delay 6 66us flag DQ delay 45 延时500us flag DQ DQ 1 18B20写1个字节函数 向1 WIRE总线上写一个字节 void write byte uint16 val uint8 i for i 0 i 1 右移一位 DQ 1 delay 1 18B20读1个字节函数 从1 WIRE总线上读取一个字节 毕业设计 30 uint8 read byte void uint16 i value 0 for i 0 i 1 DQ 0 nops 4us DQ 1 nops 4us if DQ value 0 x80 delay 6 66us DQ 1 return value 启动温度转换 void start temp sensor void DS18b20 reset write byte 0 xCC 发Skip ROM命令 write byte 0 x44 发转换命令 读出温度 int16 read temp void uint8 temp data 2 读出温度暂放 DS18b20 reset 复位 write byte 0 xCC 发Skip ROM命令 write byte 0 xBE 发读命令 temp data 0 read byte 温度低8位 temp data 1 read byte 温度高8位 毕业设计 31 temp temp data 1 temp 4 return temp 显示 display 18b20 weima 0 temp 10 weima 1 temp 10 P0 table weima 0 S1 0 delay 10 S1 1 P0 table weima 1 S2 0 delay 10 S2 1 void display V void int v v int V 0 5 weima V 0 v 100 weima V 1 v 10 10 weima V 2 v 10 P0 table weima V 0 0 xb0 S1 0 delay 10 S1 1 P0 table weima V 1 S2 0 delay 10 S2 1 毕业设计 32 P0 table weima V 2 S3 0 delay 10 S3 1 主函数 void main int i j for j 0 j 3 j start temp sensor read temp delay ms 1000 for i 0 i 1000 i display 18b20 V 332 0 607 temp init CTC 初始化定时器 init INT 初始化外部中断 cshu 0 串数 delay 200 延时 EA 1 开总中断 ET1 1 定时器溢出中断 开放 ET0 1 TR1 0 禁止计时 TR0 0 while 1 cshu 0 EA 1 EX0 0 禁止外部中断0 TH1 0 xf4 12us 初值 毕业设计 33 TL1 0 xf4 TH0 0 定时器0的初始时间 TL0 0 VOLCK 0 TR1 1 启动定时器1 发送信号 while cshu 10 等待脉冲串 发送完 TR1 0 定时器用于发送脉冲 发完一次后关闭 TR0 1 启动定时器0 脉冲串发完后 开始记时 delay 12 EX0 1 外部中断 打开 display delay ms 6 while key 0 EA 0 start temp sensor read temp V 332 0 607 temp delay ms 1000 for i 0 i 1000 i display 18b20 delay ms 800 for i 0 i 500 i display V 中断服务程序 void CTC1 INT interrupt 3 T 1 12 5us 中断一次 用于发射 毕业设计 34 VOLCK VOLCK cshu void serve INT0 interrupt 0 X0 TR0 0 关闭定时器0 EX0 0 关中断 time long TL0 time long TH0 256 time time 120 Timetojuli TH0 0 TL0 0 K1 K1 void CTC0 INT interrupt 1 T0 TR0 0 关闭计时器 ET0 0 定时溢出中断 关闭 K2 K2 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇

温馨提示

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

评论

0/150

提交评论