已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机电信息工程学院机电信息工程学院 单片机系统课程设计报告单片机系统课程设计报告 完成日期:完成日期:2008 年年 03 月月 19 日日 系 别:电子工程系 专 业:通信工程 班 级:051 班 设计题目:超声波测距 学生姓名:王权 于建坤 指导教师:董玉华 李厚杰 杨亚宁 李婷 目目 录录 一、一、设计任务和性能指标设计任务和性能指标.1 二、设计方案二、设计方案.1 三、系统硬件设计三、系统硬件设计.3 四、系统软件设计四、系统软件设计.5 五、调试及性能分析五、调试及性能分析.8 六、心得体会六、心得体会.10 参考文献参考文献.11 附录附录 1 系统硬件电路图系统硬件电路图.12 附录附录 2 程序清单程序清单.13 一、一、设计任务和性能指标设计任务和性能指标 1.1 设计任务 设计一个超声波测距器,可应用在汽车倒车、建筑施工工地以及一些工业 现场的位置测控,也可用于如液位、井深、管道长度的测量等场合。 要求用 Altium Designer 6 画出系统的电路原理图(要求以最少组件,实 现系统设计所要求的功能) ,印刷电路板(要求布局合理,线路清晰) ,绘出程 序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开, 使程序有较强的可读性) 。 1.2 性能指标 1、 测量范围 1080 cm; 2、 测量精度 1cm; 3、 测量时与被测物体无直接接触,能够清晰稳定地显示测量结果; 4、 测量范围扩展为 10 cm4m,提高测量精度。 二、设计方案二、设计方案 超声波测距仪是利用超声波发射器向某一方向发射超声波,在发射时刻的 同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波 接收器收到反射波就立即停止计时。超声波在空气中的传播速度为 340m/s,根 据计时器记录的时间 t,就可以计算出发射点距障碍物的距离(s),即: s=340t/2 。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场, 例如:液位、井深、管道长度等场合。目前国内一般使用专用集成电路设计超 声波测距仪,但是专用集成电路的成本很高,并且没有显示,操作使用很不方 便。超声波指向性强,穿透能力强,能量消耗缓慢,在介质中传播的距离较远,因 而超声波经常用于距离的测量。如测距仪和物位测量仪等都可以通过超声波来 实现。但由于超声波传感器的成本较高,所以一般运用于专业领域,民用产品中 运用较少。考虑到一般情况下对测距的要求较低,可在一定程度上牺牲其精确度 和测距范围,从而降低成本,使其运用范围大大扩展。 超声波测距系统主要由声波发射电路、回波接收电路以及信号采集电路、 温度补偿电路等组成。 2.1 硬件方案选择 (1)超声波发射电路 总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波, 一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等; 机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率 和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波 发生器。 压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生 器内部主要由两个压电晶片和一个共振板组成。当它的两极外加脉冲信号,其 频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板 振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声 波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波 接收器了。 这种压电式超声波传感器是利用内藏的压电晶体的压电效应。压电晶体在 外电场作用下会产生机械变形,或者使压电晶体变形也会产生电压,前者称为 逆压电效应,后者称为正压电效应。利用压电晶体的逆压电效应,电路的高频 电压会转换为高频机械振动,以产生超声波,作为超声波发生探头,利用压电 晶体的正压电效应可将接收的超声波振动转换成电信号,作为超声波接收探头。 (2)超声波接收电路 超声波接收电路的作用是对接收的超声波信号进行放大,并将放大后的信 号处理成系统可以处理的电平信号。 (3)温度补偿电路 超声波是一种声波,其声速 c 与温度有关。如果测距精度要求很高时,则 应通过温度补偿的方法加以校正。温度测量可以使用数字温度传感器 DS18B20。 (4)超声波测距器的算法设计 超声波测距的原理即超声波发生器在某一时刻发出一个超声波信号,当这 个超声波遇到被测物体后发射回来,就被超声波接收器所接收到。这样只要计 算出从发出超声波信号到返回信号所用的时间,就可以算出超声波发生器与反 射物体的距离。距离的计算公式为: 22tcsd 其中 d 为被测物体与测距器的距离,s 为声波来回的路程,c 为声速,t 为 声波来回所用的时间。 (5)系统硬件框图如图 1 所示。 单片机最 小系统 超声波接 收电路 超声波发 送电路 温度检测 电路 显示电路 图 1 系统硬件框图 2.2 超声波测距器的软件 系统软件主要由主程序、超声波发射子程序、超声波接收中断程序及显示 子程序组成,如图 2 所示。 图 2 系统程序结构框图 超声波测距器主程序利用外部中断检测返回超声波信号,一旦接收到返回 的超声波信号,立即进入中断程序。 三、系统硬件设计三、系统硬件设计 主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三 部分组成。采用 STC89C55 来实现对 CX20106A 红外接收芯片和 TCT40-10 系列超 声波转换模块的控制。单片机通过 P1.0 引脚经反相器来控制超声波的发送,然 后单片机不停的检测 INT0 引脚,当 INT0 引脚的电平由高电平变为低电平时就 认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算 就可以得到传感器与障碍物之间的距离。 读取温度、时间,计算距离 系统初始化 启动温度转换 发送超声波脉冲 开始 等待接收回波 显示结果 读取温度、时间,计算距离 系统初始化 启动温度转换 发送超声波脉冲 开始 等待接收回波 显示结果 图 3 超声波测距原理框图 3.1 单片机系统及显示电路 单片机采用 STC89C55。采用 11.0592MHz 高精度的晶振,以获得较稳定的 时钟频率,减小测量误差。单片机用 P1.0 端口输出超声波转化器所需的 40KHz 方波信号,利用外中断 0 口检测超声波接受电路输出的返回信号。显示电路采 用简单实用的 LCD1602 液晶显示电路,用 P0 做为数据口。单片机系统及显示电 路如图 4 所示。 图 4 单片机及显示电路原理图 3.2 超声波发射电路 接收检测 超声波 接收器 计时器 定时器 显示器 超声波 发射器 控制 接收检测 超声波 接收器 计时器 定时器 显示器 超声波 发射器 控制 超声波发射电路原理图如图 5 所示。 图 5 超声波发射电路原理图 压电超声波转换器的功能:利用压电晶体谐振工作。内部结构图 6 所示, 它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电 晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声 波,这时它就是一超声波发生器;如没加 电压,当共振板接受到超声波时,将压迫 压电振荡器作振动,将机械能转换为电信 号,这时它就成为超声波接受转换器。超 声波发射转换器与接收转换器其结构稍有 不同。 3.3 超声波检测接收电路 超声波检测接收电路采用集成电路 CX20106A,如图 7 所示,这是一款红外 线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用 的载波频率 38KHz 与测距超声波频率 40KHz 较为接近,可以利用它作为超声波 检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。适当改变 C4 的 大小,可改变接收电路的灵敏度和抗干扰能力。 图 6 超声波转换原理图 图 7 超声波接收电路图 四、系统软件设计四、系统软件设计 超声波测距软件设计主要由主程序,超声波发射子程序,超声波接受中断 程序、温度补偿及显示子程序和距离测量及显示子程序组成。下面对超声波测 距器的算法,主程序,超声波发射子程序和超声波接收中断程序逐一介绍。 4.1 超声波测距器的算法设计 下图示意了超声波测距的原理,即超声波发生器在某一时刻发出的一个超 声波信号,当超声波遇到被测物体后反射回来,就被超声波接收器所接受。这 样只要计算出发生信号到接受返回信号所用的时间,就可算出超声波发生器与 反射物体的距离。 距离计算公式:22tcsd 其中 d 为被测物与测距器的距离,s 为声波的来回 路程,c 为声速,t 为声波来回所用的时间。 程序框图如图 8 所示。 声速 c 与温度有关,如温度变化不大,则可认为声 速是基本不变的。如果测距精度要求很高,则应通过温 度补偿的方法加以校正。声速确定后,只要测得超声波 往返时间,即可求得距离。在系统加入温度传感器来监 测环境温度,可进行温度被偿。这里可以用 DS18B20 测 量环境温度,根据不同的环境温度确定声速提高测距的 稳定性。为了增强系统的可靠性,应在软硬件上采用抗 干扰措施。 不同温度下的超声波声速表 温 度 (摄氏度) -30-20-100102030100 声 速 (m/s) 313319325323338344349386 4.2 主程序 距离计算子程序 返回 查表确定当前 温度下的速度值 距离=计数值*速度/20000 (单位:cm) 判断是否需要高位灭零 距离计算子程序 返回 查表确定当前 温度下的速度值 距离=计数值*速度/20000 (单位:cm) 判断是否需要高位灭零 图 8 距离计算子程序 主程序首先对系统环境初始化,设置定时 器 T0 工作模式为 16 位的定时计数器模式,置 位总中断允许位 EA 并给显示端口 P0 和 P2 清 0。然后调用超声波发生子程序送出一个超声 波脉冲,为避免超声波从发射器直接传送到接 收器引起的直接波触发,需延迟 0.1ms(这也就 是测距器会有一个最小可测距离的原因)后, 才打开外中断 0 接收返回的超声波信号。由于 采用 11.0592MHz 的晶振,机器周期为 1us,当 主程序检测到接收成功的标志位后,将计数器 T0 中的数(即超声波来回所用的时间)按下式 计算即可测得被测物体与测距仪之间的距离, 以 20时的声速为 344 m/s 为例,则有: d=(C*T0)/2 =172*T0/10000cm(其中 T0 为计 数器 T0 的计数值) 测出距离后结果将以十进制 BCD 码方式显示,然后再发超声波脉冲重复测量 过程。主程序框图如图 9 所示。 4.3 超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过 P1.0 端口发送 5 个左右的超声波信号频 率约 40KHz 的方波,脉冲宽度为 12us 左右,同时把计数器 T0 打开进行计时。 超声波测距器主程序利用外中断 0 检测返回超声波信号,一旦接收到返回超声 波信号(INT0 引脚出现低电平),立即进入中断程序。进入该中断后就立即关 闭计时器 T0 停止计时,并将测距成功标志字赋值 1。如果当计时器溢出时还未 检测到超声波返回信号,则定时器 T0 溢出中断将外中断 0 关闭,并将测距成功 标志字赋值 0 以表示此次测距不成功。中断程序的框图如图 10 所示。 读取温度、时间,计算距离 系统初始化 启动温度转换 发送超声波脉冲 开始 等待接收回波 显示结果 读取温度、时间,计算距离 系统初始化 启动温度转换 发送超声波脉冲 开始 等待接收回波 显示结果 T0中断程序 是否问初次上电 开报警,显示“错误” 置上电报警标志位 启动温度转换 开启时间计数 发超声波 返回 N Y T0中断程序 是否问初次上电 开报警,显示“错误” 置上电报警标志位 启动温度转换 开启时间计数 发超声波 返回 N Y T1中断程序 返回 发送超声波 等待接收回波 T1中断程序 返回 发送超声波 等待接收回波 INT0中断子程序 返回 停止计数 停止发送超声波 停止接收 存计数器 置接收成功标志位 INT0中断子程序 返回 停止计数 停止发送超声波 停止接收 存计数器 置接收成功标志位 图 9 主程序框图 图 10 计数器 T0 中断程序(左)、计数器 T1 中断程序(中) 外部 INT0 中断程序(右) 4.4 温度补偿子程序和温度显示子程序 温度补偿子程序的作用是将当前实验环境的实际温度值准确测量、转换并 存储,用以确定此时声波的速度值。本程序采用 DS18B20 的 12 位转换精度,温 度寄存器里的值是以 0.0625 为步进的,即温度寄存器里的二进制值乘以 0.0625,就是实际的十进制温度值。温度处理子程序判断温度值的“+”和“- ”并将转换好的温度整数位和小数位存入显示缓存区 50H53H 中,50H 为最高 位,53H 为最低位。温度显示子程序用来判断高位是否有灭零需要,以及符号 位的选择和显示。程序框图如图 11 所示。 温度 显示子程序 返回 十位数0? 百位数0? 十位数显示符号 百位数不显示 百位显示数据 (不显示符号) N Y Y N 温度 显示子程序 返回 十位数0? 百位数0? 十位数显示符号 百位数不显示 百位显示数据 (不显示符号) N Y Y N 温度转 换子程序 返回 发DS18B20的 复位子程序 发跳过ROM命令 发温度转换开始命令 发DS18B20复位命令 发跳过ROM命令 延时 发读取温度命令 连续读两个字节 温度转 换子程序 返回 发DS18B20的 复位子程序 发跳过ROM命令 发温度转换开始命令 发DS18B20复位命令 发跳过ROM命令 延时 发读取温度命令 连续读两个字节 温度值 处理子程序 返回 温度值零下否? 温度值取补码 置“-”标志 置“+”标志 计数小数位 温度BCD值 计数整数位 温度BCD值 YN 温度值 处理子程序 返回 温度值零下否? 温度值取补码 置“-”标志 置“+”标志 计数小数位 温度BCD值 计数整数位 温度BCD值 YN 图 11 温度显示子程序(左上)、温度处理子程序(左下) 温度转换子程序(右) 五、调试及性能五、调试及性能分析分析 5.1 调试步骤 首先要做的就是检查检测硬件电路是否有短路、断路、虚焊等。具体步骤 及测试结果如下: (1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导 线是否完全连接;测试结果所有连接线都已准确连接好; (2)检验单片机的晶振是否起振,用示波器观察波形;测试结果波形都符 合正常工作波形; (3)检查各芯片工作是否正常,检测按键的导通情况;测试结果正常。 然后将软硬件结合在一起进行调试,把整个超声波测距系统按照实现功能 分为各个子模块进行调试。具体步骤如下: (1)显示模块调试。由于受实验器材和实验台的限制,此部分电路及其程 序没能做到事先进行测试,所以在调试这个部分时遇到了很多问题,开始是发 现硬件电路设计有问题,接的 74LS373 锁存器几乎就不起作用,然后改线将锁 存器去掉了;接着是程序有错误,显示不正确,通过仔细阅读液晶资料,发现 其工作时序没有配合好,经改动后在电路板上终于调试通过了; (2)温度补偿模块调试。因为之前在实验台上已经调试通过,所以将程序 下载到单片机后就正确了。但在实验台上调试时也曾出现过很严重的问题,原 因就是没有彻底弄明白 DS18B20 的工作工作时序,只有将时序配合好,芯片才 呢个正常工作。 (3)超声波发射与接收模块的调试。这部分是整个系统的核心,也是最易 出现问题的部分,而且之前并没有实际测试过,因此在这个模块的调试过程中 很困难。由于发射和接收不能独立调试,所以要同时考虑这两个部分的工作情 况,只有两个部分都正常工作了才能得到正确的实验结果。将调试程序下载后, 发现没能得到正确的实验现象,接着便开始进行分步调试,发射部分我们通过 示波器观察波形,发现波形的频率与实际需要值略有偏差,经改正程序后符合 了实际需要的频率和幅度,但还是没有正确的实验现象。确定发射没有问题后 便开始进行接收部分的调试,反复进行电路连接检查和程序结构的改进后,依 然没有调试成功。正要在困难面前退缩的时候,突然想起来,在分发电容时有 一个电容在没有确定容值的情况下就发下来了,我这才想起来去检查我的器件 型号规格是否有问题,果然,发现了那个误发的电容,其标称值比我们所需要 的大了 100 倍,此时的我非常懊悔,恨自己一时疏忽没有做好调试前最基本的 工作,把电容换了后调试成功了,又做了一点调整,系统能稳定的工作了。 5.2 性能分析 超声波测距系统是现代生活一种很方便的测距仪器,它能够准确快速的测 量出距离,给人们的生活带来很大方便。当系统上电时,显示器上将显示 “Welcome”的字样,很快系统开始工作,随着探头的移动,显示器上将实时显 示当前所对准的物体的距离,而且会一并显示当前测量环境的温度值。由于系 统的驱动问题以及软件上的缺陷,实际测量值范围最好控制在 3m 内,距离值误 差1cm,温度值误差0.5。 本系统尚有不足,一是缺少电源开关控制按键,二是缺少报警机制,三是 测量条件改变时的纠错能力差,另外液晶显示也没有达到理想的稳定状态。希 望在进一步的设计过程中解决这些问题,并有所完善和再创新。 六、心得体会六、心得体会 这次课程设计是对我们学习单片机原理与应用和印刷电路板设计课程的检 验及实际应用能力的一次提高。我们所设计的是超声波测距系统。可以测量的 距离范围是 5cm3m,精确到 1cm。由于声波在不同的温度下的速度值变化很大, 为了减少测量误差,我们采用 DS18B20 温度传感器进行温度补偿设计,它具有 体积小、适用电压宽等特点,其测量范围为-55+125。与传统的热敏电阻 相比,它能够直接读出被测量温度并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。本次实验中选择其 12 位转换精度。由于 DS18B20 读出或写入的信息仅需要一根口线完成,这样就需要准确的读写时序,刚开始 由于时序没有配合好,调试很久都没出现正确的结果,后来通过对其时序的再 一次了解和把握终于测出了准确的温度值。但读出来的温度值只是整个系统的 一个辅助部分,我们主要是为了得到与当前环境下的温度值对应的声速值,此 部分转换通过软件设计中温度的比较及查表来完成。显示部分选择了 LCD1602 液晶显示,但由于实验台的限制,软件调试过程中采用动态数码管显示。 原理图设计时我们使用了印刷电路板设计课上学过的 Altium Designer 6 制图工具,由于一些实际的器件在器件库中无法找到,我们只有自己制作,在 这个过程中我们学到了很多的知识和方法。在制作 PCB 板图的时候,很多器件 的封装与实际尺寸存在很大的差别,为了获得准确的封装,我们实际测量了所 给器件的大小与规格,找到了与之匹配的封装库。当然我们也走过弯路,在考 虑产品外型设计时,由于探头位置的需要,我们曾想过要将两个探头与主板分 开单置出来,经老师分析,考虑到单开一块板的成本及安装困难的问题,提议 将探头引脚弯曲便可。这个问题让我感受颇深,虽然只有这么小小的变动但却 解决了实际问题。而自己却把简单的问题复杂化,因此我们在看问题时,一定 要多角度考虑。 程序编写过程也给了我们很大的收获。在编写程序之前,我们查阅了大量 的相关资料,力求做到简洁规范清晰。在把握了整体的思路后,我们先从程序 流程图着手,将整个程序分成若干模块,分开编写,一边发现问题一边解决问 题,并在实验板上检验程序测试情况,根据现象不断修改。由于实验板的种种 限制,我们不得不针对实验台来进行软件设计与调试。在这个过程中我们体会 到编程的技巧,设置子程序的合理性,同时对单片机最小系统的设计有了整体 的理解和深刻的体会,使我们的思维的锻炼与能力培养有了很大的提高和进步。 本次课程设计时间虽短,但收获却很大。我们对应用单片机最小系统来设 计产品有了整体的把握,对程序编写的合理与规范性有了深刻的理解,建立起 程序设计的一般思路,以及 Altium Designer 6 的使用方法,其强大的功能给 我们提供了很大的帮助,通过原理图的设计,使我们认识到了这个软件的重要 性,提高了我们运用的熟练性,我们会以此为契机,在日后的学习中会继续使 用它,使其发挥更大的功能。 经过三个星期的课程设计,我们得到了充分的锻炼,不仅对单片机的学习 有了深刻的理解,同时也增强了我们的毅力和处理突发问题的能力。学习是要 付出一定的艰辛与努力的,做事情一定要有不怕困难的吃苦精神,唯有坚持不 懈,发扬团队协作才能够克服困难,取得最后的胜利。 相信本次课程设计对我们以后的学习将会有很大的影响,我们一定会积极 地总结经验与教训,改进不足,争取在日后做得更好。当然要感谢老师和同学 们的帮助,在我们束手无策,陷入困境的时候给予热情的帮助,使我们顺利渡 过难关。课程设计是一次很好的实践动手机会,通过实践,我们的知识得到了 应用,真正实现了知识的学以致用,理论联系实际,我们会更加注重实践能力 的锻炼,注重动手能力的培养。 参考文献参考文献 1 徐维祥,刘旭敏单片微型机原理及应用大连:大连理工大学出版社, 1996 2 何立民单片机实验与实践教程(一)北京:北京航空航天大学出版社, 2003 3 楼然苗,李光飞单片机课程设计指导北京:北京航空航天大学出版社, 2007 4 李群芳,黄建单片机微型计算机与接口技术北京:电子工业出版社, 2001 5 汪道辉单片机系统设计与实践北京:电子工业出版社,2006 附录附录 1 系统硬件电路图系统硬件电路图 附录附录 2 程序清单程序清单 ;* ; 系统初始化定义 ;* TEMPER_VL DATA 20H ; 温度值(取整后)存储区 TEMPER_VH DATA 21H TEMPL DATA 26H TEMPH DATA 27H ; 测得温度值存储区 TEMPHC DATA 28H TEMPLC DATA 29H TEMPHEAD EQU 36H ; 温度值缓存区 TEMPER_NUM EQU 39H ; 处理温度值缓存区 VOUT EQU P1.0 ; 超声波脉冲输出端口 TEMPDIN BIT P2.4 ; DS18B20 温度输入端口 RS EQU P2.6 RW EQU P2.5 E EQU P2.7 ;* ; 中断入口程序 ;* ORG 0000H LJMP BEGIN ORG 0003H LJMP PINT0 ;外部 0 中断 ORG 000BH LJMP INTT0 ;计数器 T0 中断 ORG 0013H RETI ORG 001BH LJMP INTT1 ;定时器 T1 中断 ORG 0023H RETI ORG 002BH RETI ;* ; 主 程 序 ;* ORG 0100H BEGIN: MOV SP,#4FH MOV R0,#40H ;40H-43H 为显示距离存放单元 MOV R7,#30H ;60H-63H 为显示温度存放单元 CLEARDISP: MOV R0,#30H INC R0 DJNZ R7,CLEARDISP MOV 23H,#00H MOV TMOD,#21H ;T1 为 8 位自动重装,T0 为 16 位定时 器 MOV TH0,#00H ;65 毫秒初值 MOV TL0,#00H MOV TH1,#0F4H ;40KHz 初值 MOV TL1,#0F4H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R4,#0AH ;超声波肪冲个数控制(为赋值的一半) LCALL LCDON ;开机显示 SETB PX0 SETB ET0 SETB EA BEGIN1: LCALL READTEMP LCALL READTEMP1 ;读出温度值子程序 LCALL CONVTEMP LCALL DISPBCD SETB TR0 ;开启测距定时器 ABEGIN: LCALL DISPLAY JNB 23H,ABEGIN ;收到回波时置标志位 CLR EA CLR 23H LCALL WORK ;计算距离子程序 SETB EA MOV TH0,#00H ;65 毫秒初值 MOV TL0,#00H SETB TR0 ;重新开启测距定时器 MOV R2,#02H LOOP: LCALL DISPLAY DJNZ R2,LOOP SJMP BEGIN1 ;* ; 中断服务子程序 ;* ;T0 中断,65mS 中断一次 INTT0: CLR EA CLR TR0 MOV TH0,#00H MOV TL0,#00H SETB ET1 SETB EA SETB TR0 ;启动计数 T0,用以计算超声来回时间 SETB TR1 ;开启定时器 T1,用以发超声波 NOP SETB EX0 OUT: RETI ;T1 中断,发送超声波 INTT1: CPL VOUT DJNZ R4,RETIOUT CLR TR1 ;超声波发送完毕,关 T1 CLR ET1 MOV R4,#0AH RETIOUT: RETI ;外部中断 0 检测回波 PINT0: CLR TR0 ;关计数器 CLR TR1 CLR ET1 CLR EA CLR EX0 MOV 45H,TL0 ;将计数值移入处理单元 MOV 46H,TH0 SETB 23H ;接收成功标志 RETI ;* ; 距离计算程序 (=计数值*172/10000cm) ;* WORK: PUSH ACC PUSH PSW PUSH B MOV R3, 46H MOV R2, 45H MOV R1, #00D MOV DPTR, #TEMPR LCALL DIFFER ;将温度值转换为对应的速度值 MOVC A,A+DPTR MOV R0, A LCALL MUL2BY2 MOV R3, #03H MOV R2, #0E8H LCALL DIV4BY2 MOV R3, #27H MOV R2, #10H LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 40H, A MOV A,R4 JNZ JJ0 MOV 40H,#3CH ;最高位为零,不显示 JJ0: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #03H MOV R2, #0E8H LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 41H, A MOV A,R4 JNZ JJ1 MOV A,40H ;次高位为零,先判断最高位是否为不 显示 SUBB A,#3CH JNZ JJ1 MOV 41H,#3CH ;最高位不显示,次高位也不显示 JJ1: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #00D MOV R2, #100D LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 42H, A MOV A,R4 JNZ JJ2 MOV A,41H ;次次高位为零,先判断次高位是否为 不显示 SUBB A,#3CH JNZ JJ2 MOV 42H,#3CH ;次高位不显示,次次高位也不显示 JJ2: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #00D MOV R2, #10D LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 43H, A MOV A,R4 JNZ JJ3 MOV A,42H ;次次高位为零,先判断次高位是否为 不显示 SUBB A,#3CH JNZ JJ3 MOV 43H,#3CH ;次高位不显示,次次高位也不显示 JJ3: MOV A, R0 JNB ACC.3,CLEAR MOV B,43H INC B MOV 43H,B CLEAR: MOV R0,#00H POP B POP PSW POP ACC RET ;温度与速度对应表(-3091) TEMPR: DB 9DH,9DH,9DH,9EH,9EH,9EH,9EH,9FH,9FH,9FH,0A0H,0A0H DB 0A0H,0A1H,0A1H,0A1H,0A1H,0A2H,0A2H,0A2H,0A3H,0A3H DB 0A3H,0A4H,0A4H,0A4H,0A4H,0A5H,0A5H,0A5H,0A6H,0A6H DB 0A6H,0A7H,0A7H,0A7H,0A8H,0A8H,0A8H,0A8H,0A9H,0A9H DB 0A9H,0AAH,0AAH,0AAH,0ABH,0ABH,0ABH,0ABH,0ACH,0ACH DB 0ACH,0ADH,0ADH,0ADH,0AEH,0AEH,0AEH,0AFH,0AFH,0AFH DB 0AFH,0B0H,0B0H,0B0H,0B1H,0B1H,0B1H,0B2H,0B2H,0B2H DB 0B2H,0B3H,0B3H,0B3H,0B4H,0B4H,0B4H,0B5H,0B5H,0B5H DB 0B5H,0B6H,0B6H,0B6H,0B7H,0B7H,0B7H,0B8H,0B8H,0B8H DB 0B9H,0B9H,0B9H,0B9H,0BAH,0BAH,0BAH,0BBH,0BBH,0BBH DB 0BCH,0BCH,0BCH,0BCH,0BDH,0BDH,0BDH,0BEH,0BEH,0BEH DB 0BFH,0BFH,0BFH,0BFH,0C0H,0C0H,0C0H,0C1H,0C1H,0C1H ;* ; 两字节无符号数乘法程序 ;* ; R7R6R5R4 BCD DIV AB ; B = A / 100 MOV R7, A; R7 = 百位数 MOV A, #0AH XCH A, B DIV AB ; B = A / B SWAPA ORL A, B RET ;* ; LCD 显示程序 ;* ; 距离值在 40H 为最高位,43H 为最低位 ; 温度值在 60H 为最高位,63H 为最低位 LCDON: MOV P0, #01H LCALL ENABLE0 MOV P0, #01H LCALL ENABLE0 MOV P0, #38H LCALL ENABLE0 MOV P0, #0CH LCALL ENABLE0 MOV P0, #06H LCALL ENABLE0 MOV P0, #80H LCALL ENABLE0 START100: MOV DPTR,#WORD1 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE0 MOV DPTR,#WORD2 LCALL WRITE1 MOV P0, #0C2H LCALL ENABLE0 LCALL DELAY2 MOV P0, #02H LCALL ENABLE0 LCALL DELAY3 LCALL DELAY3 RET ERROR: MOV P0, #01H LCALL ENABLE1 MOV P0, #01H LCALL ENABLE1 MOV P0, #38H LCALL ENABLE1 MOV P0, #0CH LCALL ENABLE1 MOV P0, #06H LCALL ENABLE1 MOV P0, #80H LCALL ENABLE1 START101: MOV DPTR,#WORD5 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV P0, #02H LCALL ENABLE1 MOV DPTR,#WORD5 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV P0, #02H LCALL ENABLE1 RET DISPLAY: MOV P0, #01H LCALL ENABLE1 MOV P0, #01H LCALL ENABLE1 MOV P0, #38H LCALL ENABLE1 MOV P0, #0CH LCALL ENABLE1 MOV P0, #06H LCALL ENABLE1 MOV P0, #80H LCALL ENABLE1 MOV DPTR,#WORD4 LCALL WRITE4 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV DPTR,#WORD3 LCALL WRITE3 MOV P0, #0C2H LCALL ENABLE1 LCALL DELAY2 LCALL DELAY3 LCALL DELAY3 MOV P0, #02H LCALL ENABLE1 RET WRITE1: MOV R1, #00H MOV R5, #10H A1:MOV A, R1 MOVC A, A+DPTR LCALL WRITE12 INC R1 DJNZ R5, A1 RET WRITE12: MOV P0, A SETB RS CLR RW
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育课堂中2025年小学生运动技能评价标准知识点试题
- 内外部因素对销售预测的影响
- 2026广东阳江市阳西县残疾人康复中心就业见习岗位信息招聘1人备考题库及答案详解(夺冠)
- 2026北京航空航天大学电子信息工程学院聘用编软件工程师F岗招聘3人备考题库含答案详解(基础题)
- 2026甘肃省药品安全调查中心招聘1人备考题库及答案详解参考
- 2026吉林大学白求恩第一医院病人服务中心陪检员招聘备考题库含答案详解(预热题)
- 2026安徽滁州全椒县县属国有公司招聘47人备考题库完整答案详解
- 2026福建福州仓山产投集团下属福州仓山城市智能科技发展有限公司招聘1人备考题库附答案详解(综合题)
- 2026上半年山东大学(威海)后勤管理处非事业编制岗位招聘1人备考题库及答案详解(易错题)
- 2026辽宁丹东凤城市中心医院招聘卫生专业技术人员7人备考题库(二)附答案详解(模拟题)
- 招投标挂靠合同范本
- DL∕T 523-2017 化学清洗缓蚀剂应用性能评价指标及试验方法
- HJ 651-2013 矿山生态环境保护与恢复治理技术规范(试行)
- 《数字道路路侧毫米波雷达技术要求》(征求意见稿)
- 《剧院魅影:25周年纪念演出》完整中英文对照剧本
- 人教版初中英语七至九年级单词汇总表(七年级至九年级全5册)
- 青岛科技大学2023年综合评价招生考试诚信承诺书
- 辉瑞标准销售模式
- 练好字控笔线条训练字帖
- 地铁行车调度应急指挥
- 2023年不动产登记代理人《不动产登记法律制度政策》考试题库(浓缩500题)
评论
0/150
提交评论