基于单片机的超声波测距仪的设计毕业设计.doc_第1页
基于单片机的超声波测距仪的设计毕业设计.doc_第2页
基于单片机的超声波测距仪的设计毕业设计.doc_第3页
基于单片机的超声波测距仪的设计毕业设计.doc_第4页
基于单片机的超声波测距仪的设计毕业设计.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

目目 录录 1 引言 1 1 1 设计的应用前景 1 1 2 单片机应用系统概述 1 1 3 超声波测距系统概述 2 1 4 本设计任务主要要求 3 2 超声波测距原理 3 2 1 超声波的基本理论 3 2 2 超声波测距系统原理 4 3 系统主要硬件电路设计 5 3 1 超声波测距系统电路总体设计方案 5 3 2 超声波发射和接收电路的设计 6 3 3 单片机主机系统电路 8 4 系统软件设计 12 4 1 系统程序的结构 12 4 2 系统主程序 13 4 3 40KHZ 超声波发送子程序 14 4 4 DS18B20 温度采集程序 15 4 5 距离计算子程序 15 4 6 数据转换子程序 15 4 7 LCD 显示子程序 16 4 8 基于 PROTEUS 的软件仿真 17 5 后续研究工作 18 5 1 超声波发射波形的改进 18 5 2 样机的制作 18 5 3 进一步研究系统的抗干扰性能 18 致谢 19 参考文献 19 附录 21 1 基于单片机的超声波测距仪的设计 摘要摘要 利用超声波测距原理 出于低成本 高精度的目的 提出了一种基于 AT89S52 的超声波倒车雷达系统的设计方案 硬件部分采用 AT89S52 单片机作为 控制器 主要有超声波发射电路 超声波接收电路 温度检测电路 LCD 显示电 路和报警电路 在分析超声波测距原理的基础上 给出了实现超声波倒车雷达系 统的硬件设计电路图和软件设计流程图 该系统测量精度为 1cm 测量范围为 0 50 4 00m 完全能够满足汽车倒车系统的设计要求 关键字关键字 单片机 超声波 温度补偿 测距 LCD 显示 角度补偿 1 引言 1 1 设计的应用前景 目前国内一般使用专用集成电路设计超声波测距仪 但是专用集成电路的 成本很高 并且显示距离也比较困难 操作使用也不是很方便 而本设计研究 的测距仪成本低廉 性能优良 市场前景极为广阔 在整个倒车过程中自动测 量车尾到最近障碍物的距离 并用数字显示出来 在倒车到极限距离时会发出 警告声 提醒驾驶员注意刹车 本设计可望成为驾驶员特别是货车以及公共汽 车驾驶员的好帮手 可有效的减少和避免那些视野不良的大型汽车 如集装箱 车 载货车 公共汽车等倒车交通事故 1 2 单片机应用系统概述 单片机的出现及发展使计算机技术从通用型数值计算领域进入到智能化的 控制领域 从此 计算机技术在两个重要领域 通用计算机领域和嵌入式计 算机领域都得到了极其重要的发展 并正在深深地改变着我们的社会 单片机应用系统的设计包括单片机基本扩展 外围电路设计和程序设计 单片机应用系统开发环境 系统可靠性设计 电磁兼容性设计等内容 通常开 发一个单片机系统的步骤如下 图 1 技术路线 2 1 3 超声波测距系统概述 随着社会的发展 人们对距离或长度测量的要求越来越高 目前测量距离 可以采用波在介质中的传播速度和时间关系进行测量 常用的技术主要有激光 测距 微波雷达测距和超声波测距三种 激光和雷达测距仪造价偏高 不利于 广泛的普及应用 在某些应用领域有其局限性 超声波测距由于其能进行非接 触测量和相对较高的精度 越来越被人们所重视 展望未来 超声波测距仪作 为一种新型的非常有用的工具在各方面都将有很大的发展空间 它将朝着更高 定位 更高精度的方向发展 以满足日益发展的社会需求 由于超声波具有指向性好 能量损耗低 传播距离较远 不易受外界环境 影响和对被测目标无损害等特点 利用超声波测量距离就可以解决传统测量方 法中遇到的问题 利用超声波检测往往比较迅速 方便 计算简单 易于做到 实时控制 并且在测量精度方面能达到工业实用的要求 因此超声波测量距离 技术在工业控制 勘探测量 机器人定位和安全防范等领域得到了广泛的应用 超声波测距电路可以由传统的模拟或者数字电路构建 但是基于这些传统 电路构建的系统往往可靠性差 调试困难 可扩展性差 所以基于单片机的超 声波测距系统被广泛的应用 通过简单的外围电路发生和接收超声波 单片机 通过采样获取到超声波的传播时间 用软件来计算出距离 并且可以采集环境 温度进行测距补偿 其测量电路小巧 精度高 反映速度快 可靠性好 超声波测距适用于高精度的中长距离测量 超声波在标准空气中的传播速 度为 331 45m s 由单片机计时 单片机使用 12 0MHz 晶振 所以此系统的测 量精度在理论上可以达到毫米级 本文设计的倒车雷达系统就是利用超声波的 上述特性做到对倒车距离实时和高精度的检测 同时 此系统成本低 设计简 单 精度和稳定性好 有望得到广泛的应用 从而减少交通事故的发生 1 4 本设计任务主要要求 1 设计一个以单片机为核心的超声波测距仪 可以应用于汽车倒车 工 业现场的位置监控 2 测量范围在 0 50 4 00m 测量精度 1cm 3 测量时与被测物无直接接触 能够清晰稳定地显示测量结果 2 超声波测距原理 2 1 超声波的基本理论 超声波技术是一门以物理 电子 机械 以及材料科学为基础的 各行各 业都可使用的通用技术之一 超声波技术是通过超声波的产生 传播以及接收 3 的物理过程完成的 该技术在国民经济中 对提高产品质量 保障生产安全和 设备安全运作 降低生产成本 提高生产效率特别具有潜在能力 因此 我国 对超声波的研究特别活跃 2 2 1 11 1 超声波的三种形式超声波的三种形式 超声波在介质中可以产生三种形式的振荡波 横波 质点振动方向垂直于 传播方向的波 纵波 质点振动方向与传播方向一致的波 表面波 质点振动 介于纵波和横波之间 沿表面传播的波 横波只能在固体中传播 纵波能在固 体液体中和气体中传播 表面波随深度的增加其衰减很快 为了测量各种状态 下的物理量多采用纵波形式的超声波 2 1 22 1 2 超声波的物理性质超声波的物理性质 1 超声波的反射和折射 当超声波传播到两种特性阻抗不同介质的平面分界面上时 一部分超声波 被反射 另一部分透射过界面 在相邻介质内部继续传播 这样的两种情况称 之为超声波的反射和折射 2 超声波的衰减 超声波在一种介质中传播 其声压和声强按指数函数规律衰减 3 超声波的干涉 如果在一种介质中传播几个声波 于是产生波的干涉现象 由于超声波的 干涉 在辐射器的周围形成一个包括最大最小的扬声场 2 1 32 1 3 超声波对声场产生的作用超声波对声场产生的作用 1 机械作用 超声波传播过程中 会引起介质质点交替的压缩与伸张 构成了压力的变 化 这种压力的变化将引起机械效应 超声波引起质点的运动 虽然位移和速 度不大 但是与超声波振动的频率的平方成正比的质点的加速度却很大 有时 足以达到破坏介质的程度 2 空化作用 在流体动力学指出 存在于液体中的微气泡在声场的作用下振动 当声压 达到一定的值时 气泡将迅速膨胀 然后突然闭合 在气泡闭合时产生冲击波 这种膨胀 闭合 振动等一系列动力学过程称为空化 3 热学作用 如果超声波作用于介质时被介质所吸收 实际上也就是有能量吸收 同时 由于超声波的振动 使介质产生强烈的高频振荡介质相互摩擦产生热热量 这 种能量使介质温度升高 4 2 2 超声波测距系统原理 2 2 12 2 1 超声波传感器超声波传感器 总体上讲 超声波发生器可以分为两大类 一类是用电气方式产生超声波 一类是用机械方式产生超声波 电气方式包括压电型 磁致伸缩型和电动型等 机械方式有加尔统笛 液哨和气流旋笛等 他们所产生的超声波的频率 功率 和声波特性各不相同 因而用途也各不相同 目前较为常用的是压电式超声波 发生器 压电式超声波发生器实际上是利用压电晶体的谐振来工作的 它有两个压 电晶片和一个共振板 当它的两极外加脉冲信号 其频率等于压电晶片的固有 振荡频率时 压电晶片将会发生共振 并带动共振板振动 便产生超声波 反 之 如果两极间未外加电压 当共振板接收到超声波时 将压迫压电晶片作振 动 将机械能转换为电信号 这时它就成为超声波接收器了 超声波传感器结 构如下 图 2 超声波传感器外部结构 图 3 超声波传感器内部结构 2 2 22 2 2 超声波测距的方案超声波测距的方案 超声波测距方法主要有三种 1 相位检测法 精度高 但检测范围有限 2 声波幅值检测法 易受反射波的影响 3 渡越时间法 工作方式简单 直 观 在硬件控制和软件设计上都容易实现 其原理为 检测从发射传感器发射 的超声波经气体介质传播到接收传感器的时间 t 这个时间就是渡越时间 然 后求出距离 l 设 l 为测量距离 t 为往返时间差 超声波的传播速度为 c 则 有 l ct 2 综合以上分析 本设计将采用渡越时间法 图 4 测距原理 5 由于超声波也是一种声波 其声速 c 与空气温度有关 一般来说 温度每 升高 1 摄氏度 声速增加 0 6 米 秒 表 1 列出了几种温度下的声速 表 1 声速与温度的关系表 温度 摄氏度 30 20 10 0102030100 声速 米 秒 313319325323338344349386 在使用时 如果温度变化不大 则可认为声速 c 是基本不变的 计算时取 c 为 340m s 如果测距精度要求很高 则可通过改变硬件电路增加温度补偿电 路的方法或者在硬件电路基本不变的情况下通过软件改进算法的方法来加以校 正 在本系统中利用 AT89S52 中的定时器测量超声波传播时间 利用 DS18B20 测量环境温度 从而提高测距精度 空气中声速与温度的关系可表示为 6 04 331 16 273 16 273 45 331smT T c 声速确定后 只要测得超声波往返的时间 即可求得距离 l 1 2 331 4 0 6T t 系统中应用该式进行温度补偿 如果为了进一步提高测量精度 本设计中将根据需要利用软件方式增加角 度补偿的设计 系统中应用该式进行角度补偿 222 slh 3 系统主要硬件电路设计 3 1 超声波测距系统电路总体设计方案 本系统硬件部分由 AT89S52 控制器 超声波发射电路及接收电路 温度测 量电路 声音报警电路和 LCD 显示电路组成 汽车行进时 LCD 显示环境温度 当倒车时 发射和接收电路工作 经过 AT89S52 数据处理将距离也显示到 LCD 上 如果距离小于设定值时 报警电路会鸣叫 提醒司机注意车距 超声波测 距器的系统框图如下图所示 图 5 系统设计总框图 由单片机 AT89S52 编程产生 10us 以上的高电平 由指定引脚输出 就可以 6 在指定接收口等待高电平输出 一旦有高电平输出 即在模块中经过放大电路 驱动超声波发射探头发射超声波 发射出去的超声波经障碍物反射回来后 由 超声波接收头接收到信号 通过接收电路的处理 指定接收口即变为低电平 读取单片机中定时器的值 单片机利用声波的传播速度和发射脉冲到接收反射 脉冲的时间间隔计算出障碍物的距离 并由单片机控制显示出来 由时序图可以看出 超声波测距模块的发射端在 T0 时刻发射方波 同时启 动定时器开始计时 当收到回波后 产生一负跳变到单片机中断口 单片机响 应中断程序 定时器停止计数 计算时间差 即可得到超声波在媒介中传播的 时间 t 由此便可计算出距离 图 6 时序图 3 2 超声波发射和接收电路的设计 分立元件构成的发射和接收电路容易受到外界的干扰 体积和功耗也比较 大 而集成电路构成的发射和接收电路具有调试简单 可靠性好 抗干扰能力 强 体积小 功耗低的优点 所以优先采用集成电路来设计收发电路 3 3 2 2 1 1 超声波发射电路超声波发射电路 超声波发射电路包括超声波产生电路和超声波发射控制电路两部分 可采 用软件发生法和硬件方法产生超声波 在超声波的发射电路的设计中 我们采 用电路结构简单的集成电路构成发射电路 图 7 由反相器构成的超声波发射电路 图 7 是由反相器 74HC04 构成的发射电路 用反相器 74HC04 构成的电路简 7 单 调试容易 易通过软件控制 单片机输出的方波经过反相器接到发射器 T1 的两极 用图中的推挽形式将方波信号加到发射器 T1 两端 可以提高发射器 T1 的发射强度 图中把两个非门的输出接到一起的目的是为了提高其吸入电流 电路驱动能力提高 74HC04 是一个高速 CMOS 六反相器 具有对称的传输延迟 和转换时间 而相对于 LSTTL 逻辑 IC 它的功耗减少很多 另外 上拉电阻 R1 R2 一方面可以提高反相器 74HC04 输出高电平的驱动能力 另一方面可以 增加发射器 T1 的阻尼效果 缩短其自由振荡的时间 3 2 23 2 2 超声波接收电路超声波接收电路 图 8 是由 CX20106 构成的接收电路 在实物的制作过程中 我们将用 CX20106A 这一型号代替 CX20106A 是索尼公司生产的彩电专用红外遥控接收器 是 CX20106 的改进型 也可用于超声波测试 有较强的抗干扰性和灵敏度 CX20106A 采用单列 8 脚直插式 超小型封装 5V 供电 管脚 1 是超声波信号 输入端 其输入阻抗约为 40K 管脚 2 的 R1 C4 决定接收器 R 的总增益 增大 电阻 R1 或减小电容 C4 将使放大倍数下降 负反馈量增大 电容 C4 的改变会 影响到频率特性 实际使用中一般不改动 管脚 3 与 GND 之间连接检波电容 C2 考虑到检波输出的脉冲宽度变动大 推荐参数为 3 3uF 管脚 5 上的电阻 R2 用以设置带通滤波器的中心频率 阻值越大 中心频率越低 取 R2 200K 时 中心频率约为 42KHZ 管脚 6 与 GND 之间接入一个积分电容 C3 电容值越大 探测距离越短 管脚 7 是遥控命令输出端 它是集电极开路的输出方式 因此 该引脚必须接上一个上拉电阻到电源端 没接收信号时 该端输出为高电平 有信号时则会下降 管脚 8 接 5V 电源 图 8 CX20106 构成的接收电路 综合以上的分析 在由集成电路构成的接收和发射电路中 发射电路我们 选用由反相器构成的电路 接收电路采用由红外接收检波芯片 CX20106A 构成 主要是考虑到系统的调试简单 成本低以及可靠性好 8 3 3 单片机主机系统电路 3 3 13 3 1 复位电路复位电路 单片机在 RESET 端加一个大于 20ms 正脉冲即可实现复位 上电复位和按钮 组合的复位电路如图 9 在系统上电的瞬间 RST 与电源电压同电位 随着电容的电压逐渐上升 RST 电位下降 于是在 RST 形成一个正脉冲 只要该脉冲足够宽就可以实现复 位 当人按下按钮 SW1 时 使电容 C1 通过 R1 迅速放电 待 SW1 弹起后 C1 再 次充电 实现手动复位 图 9 复位电路 3 3 23 3 2 时钟电路时钟电路 当使用单片机的内部时钟电路时 单片机的 XTAL1 和 XTAL2 用来接石英晶 体和微调电容 如图 10 所示 图 10 时钟电路 3 3 33 3 3 按键电路按键电路 我们通过 P1 0 来启动测量 程序中通过查询 P1 0 的电平来检测是否按键 9 被按下 在软件中通过软件延时来消除按键的机械抖动 图 11 按键电路 3 3 43 3 4 蜂鸣器电路蜂鸣器电路 本次设计通过一只蜂鸣器来提示用户按键按下了 现在单片机开始了测距 蜂鸣器是一块压电晶片 在其两端加上 3 5V 的直流电压 就能产生 3KHz 的蜂 鸣声 电路如图 12 通过单片机软件产生 3KHz 的信号从 P3 7 口送到三极管 9013 的基极 控制着电压加到蜂鸣器上 驱动蜂鸣器发出声音 图 12 蜂鸣器电路 3 3 53 3 5 温度测量电路温度测量电路 由于超声波的传播速度 c 会受温度 湿度 压强等的影响 其中温度的影 响尤为严重 因此在测量精度要求高的场合 应通过温度补偿对超声波的传播 速度进行校正 以减小误差 10 图 13 温度检测电路 本系统采用 DALLAS 公司的 DS18B20 数字式温度传感器进行温度测量 它所 测量的温度值用 9 位二进制数直接表示 这些值通过 DS18B20 的数据总线直接 输入 CPU 无需 A D 转换 而且读写指令 温度转换指令都是通过数据总线传 入 DS18B20 无需外部电源 DS18B20 数字温度传感器与 AD590 LM35 等温度传 感器相比 具有相当的测温范围和精度 温度测量精确 不受外界干扰等优点 3 3 63 3 6 LCDLCD 显示电路显示电路 本设计采用 LCD 液晶显示屏来显示距离和温度 具有体积小 功耗低 界 面美观大方等优点 这里使用 YB1602 液晶屏 它具有 16 个引脚 其正面左起 为第一脚 如图 14 所示 图 14 LCD1602 实物 第一脚 VSS 接地 第二脚 VDD 5V 电源 第三脚 VEE 对比度调整端 使用时通过接一个 10K 的电阻来调节 第四脚 RS 寄存器选择信号线 H 为数据选择 L 为指令选择 第五脚 RW 读写信号线 第六脚 E 使能端 当 E 由高电平跳变为低电平时执行命令 第 7 14 脚 8 位数据线 D0 D7 第十五脚 BLA 背光电源正极输入端 第十六脚 BLK 背光电源负极输入端 11 图 15 LCD 显示电路 3 3 73 3 7 电源电路电源电路 电源电路采用普通可调电源供电 该电源不含稳压器 所以在设计中需要 用稳压器进行稳压 我们选用 LM7805来获得稳定的 5V 直流电压 输入电压 21V 经过7805的稳压输出 5V 的电压 图中的 D2为保护 7805 防止电源极性接反损坏 7805 滤波电容采用 100uF 电解和104瓷片电 容并联使用 电磁兼容的实践证明 两个差 100倍的电容并联使用效果很好 本设计电源电路如下 图16 电源电路 4 系统软件设计 4 1 系统程序的结构 1 DS18B20 温度传感器接口模块 分为初始化程序 写入命令以及读取子 程序等部分 12 2 基于 YB1602 的显示模块 分为初始化子程序 写入子程序以及显示子 程序 3 温度补偿与距离计算模块 分为超声波发送控制程序 接收处理程序 温度补偿子程序等 本次设计使用 C 语言编写程序 C 语言相比汇编有许多的优势 编译器使 用 KeilVersion2 进行程序编译 Keil 功能强大使用方便 在编译完成后 通过 Proteus 软件进行仿真 对设计进行验证和优化 如图 17 所示描述了各个 模块的关系 图 17 系统软件方框图 4 2 系统主程序 本设计主程序的思想如下 1 温度为两位显示 距离为四位显示单位为 mm 2 温度每隔 900ms 采样一次 DS18B20 在 12 位精度下转换周期为 750ms 故 900ms 满足该速度要求 超声波每隔 60ms 发送一次 3 按键 SW2 为测量启动键 4 系统采用 AT89S52 的内时钟 12MHz 每记一次数为 1us 13 图 18 主程序流程图 4 3 40KHz 超声波发送子程序 超声波每过60ms 发送一次 通过定时器 T0中断发送超声波 超声波发送后 延时一段时间后返回 防止余波被接收头接收误判 流程图如下 图19 超声波发送子程序流程图 14 4 4 DS18B20 温度采集程序 DS18B20 的工作流程是 初始化ROM 操作指令存储器操作指令数据 传输 其工作时序包括 初始化时序 写时序和读时序 图 20 温度采集程序流程图 4 5 距离计算子程序 距离计算中 实行了温度补偿和角度补偿 流程图如下 图 21 距离计算子程序流程图 4 6 数据转换子程序 经过程序求出的数据原码无法直接用于显示 必须转换为LCD 所接受 的 BCD 码的形式 15 图 22 数据转换子程序流程图 4 7 LCD 显示子程序 LCD 液晶显示程序分为液晶初始化 读忙 写指令和写数据操作 液晶 显示器是一块慢器件 所以在执行每条指令之前必须确定模块忙标志为低电 平 不忙 否侧此指令无效 液晶显示子程序流程图如下 图23 LCD 显示子程序 16 在程序中 我们将测量的各种结果存放到一个数组num 中 然后通过 这个数组的数据到预先存放字符的数组中去按num 中的数据的顺序去读取 出预存在 numcode 中的字符然后送到 LCD 中显示 4 8 基于 Proteus 的软件仿真 Proteus 是一款功能强大的软件 其 ISIS 用来做仿真十分方便 尤其 是单片机系统的仿真 我们在本设计的开发初期 用Proteus 来仿真我们 的设计 以便验证我们的设计 对设计的正确性做出分析 图24 Proteus 仿真图 用 Proteus 绘制好电路图后导入程序文件 用Keil 编译过后的 HEX 文 件 然后就可以执行仿真 我们在仿真的时候P2 6检测到高电平即为返 回信号获得 由于在软件中没有 CX20106模型 所以 P2 6悬空 则程序开 始就认为返回信号获得了 所以显示了一个最小测量值113mm 而温度为 28 C 通过调节 DS18B20模型的温度可以测试显示温度是否正确 从图中 可以看出显示的温度就是 DS18B20的预设温度值 下面我们再来看看P2 5 口是否有发射信号的产生 由于是频率比较高的信号 40KHz 所以不能 通过二极管来观察到 所以在仿真的时候P2 5一直显示的是低电平状态 这时必须用示波器来查看 如图 17 图 25 波形 从上图看出 P2 5 口输出了信号 由于软件是间隔 60ms 发送一次 40KHZ 的 信号 所以可以看到这样的尖脉冲信号产生 软件仿真的成功说明我们的设计 达到了初步的要求 5 后续研究工作 由于时间不是很充裕 对系统的设计还存在一些不足 下一步还有以下工 作要继续进行 5 1 超声波发射波形的改进 因为该设计加在发射器上的电压波形采用方波 方波含有丰富的高次谐波 不利于精确鉴相 这将增加发射波与回波的谐波失真 所以在接下来的工作中 可能会考虑用正弦波代替方波来优化该设计 5 2 样机的制作 由于时间关系 样机暂时无法做出 但我们已经和同学一起联系商家 购 买了一定的材料 5 3 进一步研究系统的抗干扰性能 硬件抗干扰技术是系统设计时首选的抗干扰措施 常见的硬件抗干扰措施 有元件的合理布局 接地的抗干扰处理 隔离技术等 在制作样机的过程中 将会采用多种抗干扰技术对系统进行优化 减小测量误差 18 致谢 本次毕业设计得以顺利完成 首先要感谢刘纯利老师的指导和大力支持 在这期间 我和刘老师保持着经常性的面对面或通过邮件形式的交流 刘纯利 老师渊博的专业知识 严谨的治学态度 精益求精的工作作风 平易近人的人 格魅力对我影响深远 在毕业设计中 刘纯利老师对设计的思路和结构进行了 指导 同时也对相当一部分专业知识方面的帮助 同时 也要感谢大学几年授 我们以渔的老师们 是你们的谆谆教诲让我们获得了扎实的知识 在这里表示 衷心的感谢 参考文献参考文献 1 谢维成 杨加国 单片机原理与应用及 C51 程序设计 北京 清华大学出版社 2006 2 蔡菲娜 单片微型计算机原理和应用 杭州 杭州大学出版社 1995 3 李建忠 单片机原理及应用 西安 西安电子科技大学出版社 2002 4 张齐等 单片机应用系统设计技术 基于 C 语言编程 北京 电子工业出版社 2004 5 吴延海 微型计算机接口技术 重庆 重庆大学出版社 1997 6 李丽霞 单片机在超声波测距中的应用 J 电子技术 2002 7 姜道连 宁延一 袁世良 用 AT89C2051 设计超声波测距仪 J 国外电子元器件 2000 8 张鹏 张有志 一种新型超生测距系统 J 山东 山东大学学报 2003 33 1 9 李学海 PIC 单片机实用教程 基础篇 第 1 版 M 北京航天航空大学出版社 北京 2002 年 2 月 10 贾伯年 传感器技术 南京 东南大学出版社 2000 11 陈大新 胡学同 周杏鹏 利用 FPGA 改进超声波测距模块设计 J 传感器技术 2005 24 2 57 59 12 阎石 数字电子技术基础 北京 高等教育出版社 1998 13 楼然苗 51 系列单片机设计实例 北京 北京航空航天大学出版社 1999 14 谭浩强 C 程序设计 第三版 北京 清华大学出版社 2005 15 朱伟芳 一种便携式长度测量系统的硬件设计 J 江苏电器 2005 5 14 15 16 Tom R Watt Cooling our tomorrows economically ASHRAE Journal 17 Army Kayla Improving efficiency in existing chillers with optimization technology ASHRAE Journal 18 D Pearl mutter Eerily Y Etzion I A Meir H Di Refine the use of the evaporation in an experimental down draft cool tower Energys 1995 19 rtori S ZHANG G X Geometric Error Measurement and Compensation of Machines Annals of the CIRP 1995 599 609 19 Ultrasonic Distance Testing System s Design Based on Single chip Microcomputer Abstract Because of modern production requirements it was discovered that the need to achieve the production of non contact distance measurement and ultrasonic distance measurement is a good performance of the ranging approach is mainly used in reversing radar sites as well as some industrial field this paper designed a to AT89S52 MCU as the core of the low cost high precision LCD display of ultrasonic range finder and use some commonly used devices such as 74HC04 etc System consists of microcontroller ultrasonic transmitter and ultrasonic receiver amplifier circuit and display circuit Chip AT89S52 control calculation by the ultrasonic transmission from transmit to receive time and hence the distance to be under test The system has easy to detect the software fully functional reliable high accuracy advantages This paper discusses the successful development of microcomputer technology the basic principles of ultrasonic range finder measurement method of calculating implementations Use of software calibration improved accuracy and machine reliability The actual use of that greatly improves safety reliability and accuracy Keywords MCU distance meter ultrasonic sensor microcontroller LCD display 20 附录附录 附录一 系统原理图 附录二 系统 PCB 板图 21 附录三 源程序 include include include define uchar unsigned char define uint unsigned int uchar code dispBUF 33 Temperature Distance mm uchar numcode 10 0 1 2 3 4 5 6 7 8 9 uint num 29 0 uchar jsh jsl 计数器的高低位 uchar count 0 10 秒计次数 uint distance 距离 uint temp 温度变量 uchar bdata flag DS18B20 存在标准 sbit RS P2 0 LCD RS sbit RW P2 1 LCD RW sbit E P2 2 LCD E sbit DQ P2 7 DS18B20 数字端口 sbit Busy P0 7 LCD 忙 void Delay uint time void delay1ms uint ms void delay void delay15 uchar us void BUMA void void B20 WDAT uchar dat uchar B20 RDAT void void Init 18B20 void 初始化 18B20 void Write Comm uchar 写入 LCD 命令 void Write Data uchar 写入 LCD 数据 void Init LCD void sbit sta flag flag 0 10MS 到标准位 flag 即通用标志位 当 sta flag 1 时 表示到了 10ms sbit fuhao flag 1 温度的符号位 sbit START P1 0 启动测距 22 sbit CNT P2 5 发射超声波 sbit CSBIN P2 6 返回信号 sbit BUZZER P3 7 定时器 1 溢出 void timer1 void interrupt 2 using 1 TR1 0 关闭定时器 计数器 1 定时器 0 溢出中断函数 每 60MS 溢出 void timer0 void interrupt 1 using 0 定时器 0 TH0 0 x15 TL0 0 xA0 定时器 0 设定初值 TH1 0 TL1 0 计数器 1 清零 sta flag 1 count nop nop nop nop CNT 1 先延时 后开始发送 40KHz 的超声波 nop nop nop nop nop nop nop nop nop nop nop nop 40KHZ 的倒数就是 25us 12 个 nop 就是 24us CNT 0 保持一段时间高电平 nop nop 23 nop nop TR1 1 延时 避免直达信号干扰 启动定时器 计数器 1 delay15 50 延时避开直达信号 系统初始化 void SYS INIT uchar i for i 0 i 29 i 显示清零 num i 0 TMOD 0 x11 工作方式寄存器 TMOD 设置定时器 计数器 0 和 1 均为 16 位定时 计数器 TH0 0 x15 TL0 0 xA0 设置定时器 计数器 0 的初值 60ms 溢出 P0 0 CNT 0 P2 5 口 发射发射超声波 CSBIN 1 P2 6 口 接收信号 EA 1 开总中断 距离计算 void JULIJS 使用全局变量 可以定义为空 float c d s uint t if temp 0 x8000 c 331 4 0 61 temp 0 0625 else 温度为负 c 331 4 0 61 temp 0 0625 t jsh 256 jsl 120 计算计数值 d c t 0 001 2 d d s d 7 98 distance sqrt s 修正后的值 数据通过全局变量 distance 传输 24 转换成 2 进制 void HEXtoBCD float tp unsigned long int tmp fuhao 0 温度符号位 if temp 0 x8000 tp temp 0 0625 else 温度为负 则求补码得到原 码 BUMA tp temp 0 0625 fuhao 1 tp 10 tmp tp num 12 tmp 100 数据转换后放到显示数组里面 if fuhao num 12 num 12 0 x80 最高位加上符号位 num 13 tmp 10 tmp 100 10 tmp distance num 25 tmp 1000 tmp 1000 num 26 tmp 100 tmp 100 num 27 tmp 10 tmp 10 num 28 tmp 1 温度转换函数 void TESTTEMP Init 18B20 初始化 18B20 25 if flag B20 WDAT 0 xCC 跳过读序号列号的操作 忽略 ROM 匹配 B20 WDAT 0 x44 发送温度转化命令 读取温度函数 uint GET WD void uint a 0 b 0 t 0 Init 18B20 初始化 18B20 B20 WDAT 0 xCC 跳过读序号列号的操作 B20 WDAT 0 xBE 发送读温度命令 a B20 RDAT b B20 RDAT 读取一个字节 读出高 8 位和低 8 位 t b t 0 i DQ 0 拉低数据线 开始读数据 dat 1 DQ 1 拉高数据线 停止读数据 if DQ dat 0 x80 拼装处理 Delay 15 return dat 注意读取的为补码 写数据 void B20 WDAT uchar dat uchar i 0 for i 8 i 0 i DQ 0 拉低数据线至少 15us 以作为起始信号 DQ dat 取出低位的一位数据 Delay 5 稍作延时 DQ 1 将数据线拉高以作为停止信号 dat 1 移位 为写入下一位数据做准备 数据转换函数 void BUMA temp temp 按位取反 27 temp 1 LCD 显示函数 void LCD DISP uchar a b d Init LCD Write Comm 0 x01 清显示 Write Comm 0 x80 写首地址 for a 0 a11 待显示的结果 if 14 a d 0 xdf Write Data d 写入要显示的数据 Write Comm 0 xc0 换行 换到第二行 for b 16 b24 Write Data d 写入要显示的数据 数据传输 检查 LCD 忙状态 bit LCD BUSY lcd busy 为 1 时 忙 等待 28 lcd busy 为 0 时 闲 可写指令与数据 bit BS RW 1 RS 0 E 1 delay1ms 1 BS bit P0 E 0 return BS 写指令函数 void Write Comm uchar lcdcomm 写指令 while LCD BUSY RS 0 RW 0 E 1 delay1ms 1 P0 lcdcomm delay1ms 1 E 0 写数据函数 void Write Data uchar lcddata 写数据 while LCD BUSY RS 1 RW 0 E 1 delay1ms 1 P0 lcddata delay1ms 1 判断是否忙状态 E 0 29 初始化 LCD void Init LCD delay 稍微延时 等待 LCD 进入工作状态 Write Comm 0 x01 清显示 Delay 2 Write Comm 0 x38 8 位 2 行 5 8 Delay 2 Write Comm 0 x06 文字不动 光标右移 Delay 2 Write Comm 0 x0c 显示开 关 光标开闪烁开 Delay 2 延时 n 15US 函数 void delay15 uchar us do nop nop nop nop nop nop nop nop nop nop nop nop nop us while us 30 18b20 延时函数 void Delay uint time while time 延时 1MS void delay1ms uint ms uint i j for i 0 i ms i for j 0 j 100 j 显示延时函数 void delay uchar y for y 0 y 0 xff y 导通即可驱动蜂鸣器 void beep uint bp uchar i j for i 0 i 250 i BUZZER BUZZER BEEP 取反 for j 0 j bp j 需要产生方波 nop 一个 CPU 周期 BUZZER 0 关闭蜂鸣器 系统主函数 void main void uchar i j for i 0 i 255 i 31 for j 0 j 255 j 延时 SYS INIT 初始化 while START beep 150 调用 beep 函数 使喇叭发声 delay1ms 500 LCD DISP 显示 sta flag 0 标准位复位 ET0 1 开定时器 0 中断 TR0 1 启动定时器 0 TESTTEMP 启动温度转换 while 1 if sta flag 10MS 到了 sta flag 1 while 0 CSBIN 收到回波 TR1 0 关闭计数器 1 jsh TH1 jsl TL1 读取计数器高低位的数值 HEXtoBCD 转换成 BCD 码 JULIJS 计算距离 if 15 count 900MS 到 检测温度 temp GET WD 读取温度 count 0 TESTTEMP 重新启动转换 LCD DISP 刷新显示 sta flag 0 标准位复位 if distance 110 beep 150 32 第 1 天 成都 卧龙 日隆 丹巴 350KM 住宿 丹巴经成灌高速到都江堰市 进入岷江峡谷 逆流而上至映秀 到卧龙参 观中国大熊猫研究保护中心 观赏国宝大熊猫 翻越巴朗山 4523 米 运气好的话可以看到四周的云海 在猫鼻梁远眺四姑娘山前往长坪沟景区 骑马或徒步到枯树滩 唐柏古道 木骡子 近距离的拍摄四姑娘山全景 欣赏四姑娘山独具特色的高山草甸 飞瀑 奇石等美景 然后再去双桥 沟景区 乘观光车游览阴阳谷 五色山 日月宝镜 猎人峰等原始美景 来到人参果坪 草地上成群的牦牛 两边是高耸的雪峰 夏天野花盛开 一幅天然的画卷展现在您的面前 经小金县进入甘孜州 到达位于大渡河畔的 千碉之国 丹巴县 第 2 天 丹巴 塔公 塔公草原 塔公寺 新都桥 145KM 住宿 新都桥在大渡河边观梭坡古碉群 遥想当年的金戈铁马 然后去甲居藏寨 颇具嘉绒藏族特色的甲居藏寨位于大 渡河陡峭的山坡上 色彩鲜艳的藏寨掩映在大片的果园中 一派田园风光 美不胜收 每年三月间桃花和梨花竞相盛开 沿寨子的小路漫步 犹 如置身世外桃源 中午在藏寨午餐 感受一下当地的民族特色 沿风景秀丽的牦牛河谷行进 沿途的美景令人流连忘返 行使 60 公里左右 看到 白雪皑皑 高耸如云的雅拉雪山 领略神山雄姿 翻过山梁到达塔公草原 塔公藏语是 菩萨喜欢的地方 塔公寺是萨迦派的寺庙 始建于清嘉 庆年间 寺内供奉着当年文成公主进藏时随身携带的释迦牟尼十二岁等身像 过塔公后继续前行 33 公里就到新都桥 新都桥被称为 摄影者天堂 弯弯的小溪 金黄的柏杨 山峦连绵起伏 藏寨散落其间 牛羊安详地吃草 如诗如画的田原风光 第 3 天 新都桥 稻城 367KM 住宿 稻城翻越高尔寺山 4412 米 到达雅江县 经剪子弯山 4659 米 和卡子拉山 4718 米 抵 世界高城 理塘 理塘县城海拔 4014 米 是七世达赖和十世达赖的出生地 翻越兔儿山 4696 米 经青藏高原最大的古冰川遗迹 稻城古冰帽 海子山 抵达 最后的香格里拉 稻城 第 4 天 稻城 亚丁 110KM 住宿 亚丁营地经傍河万亩杨树林 翻越波瓦山 4523 米 沿赤土河谷前行 在日瓦乡买过门票后前往亚丁 自然保护区 中午到达亚丁营地 午餐后先去冲古寺和珍珠海 路上转千年嘛呢堆 观夕阳中的仙乃日神山 傍晚回到亚丁营地 5 天 亚丁 稻 城 110KM 住宿 稻城骑马去洛绒牛场 朝觐亚丁的三座神山 仙乃日 意为观世音菩萨 海拔 6023 米 夏诺多吉 意为金刚手菩萨 海拔 5958 米 央迈勇 意为文殊菩萨 海拔 5958 米 体力好的可以徒步去牛奶海和

温馨提示

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

评论

0/150

提交评论