基于51单片机的超声波测距仪_第1页
基于51单片机的超声波测距仪_第2页
基于51单片机的超声波测距仪_第3页
基于51单片机的超声波测距仪_第4页
基于51单片机的超声波测距仪_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、机电信息工程学院机电信息工程学院 单片机系统课程设计报告单片机系统课程设计报告 完成日期:完成日期:2008 年年 03 月月 19 日日系 别:电子工程系专 业:通信工程班 级:051 班设计题目:超声波测距学生姓名:王权 于建坤指导教师:董玉华 李厚杰 杨亚宁 李婷 目目 录录一、一、设计任务和性能指标设计任务和性能指标.1二、设计方案二、设计方案.1三、系统硬件设计三、系统硬件设计.3四、系统软件设计四、系统软件设计.5五、调试及性能分析五、调试及性能分析.8六、心得体会六、心得体会.10参考文献参考文献.11附录附录 1 系统硬件电路图系统硬件电路图.12附录附录 2 程序清单程序清单

2、.13一、一、设计任务和性能指标设计任务和性能指标1.1 设计任务设计一个超声波测距器,可应用在汽车倒车、建筑施工工地以及一些工业现场的位置测控,也可用于如液位、井深、管道长度的测量等场合。要求用 Altium Designer 6 画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能) ,印刷电路板(要求布局合理,线路清晰) ,绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性) 。1.2 性能指标1、 测量范围 1080 cm;2、 测量精度 1cm;3、 测量时与被测物体无直接接触,能够清晰稳定地显示测量结果;4、 测量范围扩展为

3、10 cm4m,提高测量精度。二、设计方案二、设计方案超声波测距仪是利用超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为 340m/s,根据计时器记录的时间 t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。目前国内一般使用专用集成电路设计超声波测距仪,但是专用集成电路的成本很高,并且没有显示,操作使用很不方便。超声波指向性强,穿透能力强,能量消耗缓慢,在介质中

4、传播的距离较远,因而超声波经常用于距离的测量。如测距仪和物位测量仪等都可以通过超声波来实现。但由于超声波传感器的成本较高,所以一般运用于专业领域,民用产品中运用较少。考虑到一般情况下对测距的要求较低,可在一定程度上牺牲其精确度和测距范围,从而降低成本,使其运用范围大大扩展。超声波测距系统主要由声波发射电路、回波接收电路以及信号采集电路、温度补偿电路等组成。2.1 硬件方案选择(1)超声波发射电路总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功

5、率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。 压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部主要由两个压电晶片和一个共振板组成。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。这种压电式超声波传感器是利用内藏的压电晶体的压电效应。压电晶体在外电场作用下会产生机械变形,或者使压电晶体变形也会产生电压,前者称为逆压电效应,后者称为正压电效应。利用压电晶

6、体的逆压电效应,电路的高频电压会转换为高频机械振动,以产生超声波,作为超声波发生探头,利用压电晶体的正压电效应可将接收的超声波振动转换成电信号,作为超声波接收探头。(2)超声波接收电路超声波接收电路的作用是对接收的超声波信号进行放大,并将放大后的信号处理成系统可以处理的电平信号。(3)温度补偿电路超声波是一种声波,其声速 c 与温度有关。如果测距精度要求很高时,则应通过温度补偿的方法加以校正。温度测量可以使用数字温度传感器DS18B20。(4)超声波测距器的算法设计 超声波测距的原理即超声波发生器在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后发射回来,就被超声波接收器所接收到。这样只

7、要计算出从发出超声波信号到返回信号所用的时间,就可以算出超声波发生器与反射物体的距离。距离的计算公式为:22tcsd其中 d 为被测物体与测距器的距离,s 为声波来回的路程,c 为声速,t 为声波来回所用的时间。(5)系统硬件框图如图 1 所示。单片机最小系统超声波接收电路超声波发送电路温度检测电路显示电路图 1 系统硬件框图2.2 超声波测距器的软件系统软件主要由主程序、超声波发射子程序、超声波接收中断程序及显示子程序组成,如图 2 所示。图 2 系统程序结构框图超声波测距器主程序利用外部中断检测返回超声波信号,一旦接收到返回的超声波信号,立即进入中断程序。三、系统硬件设计三、系统硬件设计主

8、要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用 STC89C55 来实现对 CX20106A 红外接收芯片和 TCT40-10 系列超声波转换模块的控制。单片机通过 P1.0 引脚经反相器来控制超声波的发送,然后单片机不停的检测 INT0 引脚,当 INT0 引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。读取温度、时间,计算距离系统初始化启动温度转换发送超声波脉冲开始等待接收回波显示结果读取温度、时间,计算距离系统初始化启动温度转换发送超声波脉冲开始等待接收回波显示结果图 3

9、 超声波测距原理框图3.1 单片机系统及显示电路单片机采用 STC89C55。采用 11.0592MHz 高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机用 P1.0 端口输出超声波转化器所需的 40KHz方波信号,利用外中断 0 口检测超声波接受电路输出的返回信号。显示电路采用简单实用的 LCD1602 液晶显示电路,用 P0 做为数据口。单片机系统及显示电路如图 4 所示。图 4 单片机及显示电路原理图3.2 超声波发射电路接收检测超声波接收器计时器定时器显示器超声波发射器控制接收检测超声波接收器计时器定时器显示器超声波发射器控制超声波发射电路原理图如图 5 所示。图 5 超声波

10、发射电路原理图压电超声波转换器的功能:利用压电晶体谐振工作。内部结构图 6 所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。超声波发射转换器与接收转换器其结构稍有不同。3.3 超声波检测接收电路超声波检测接收电路采用集成电路 CX20106A,如图 7 所示,这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率 38KHz

11、与测距超声波频率 40KHz 较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。适当改变 C4 的大小,可改变接收电路的灵敏度和抗干扰能力。图 6 超声波转换原理图图 7 超声波接收电路图四、系统软件设计四、系统软件设计超声波测距软件设计主要由主程序,超声波发射子程序,超声波接受中断程序、温度补偿及显示子程序和距离测量及显示子程序组成。下面对超声波测距器的算法,主程序,超声波发射子程序和超声波接收中断程序逐一介绍。4.1 超声波测距器的算法设计下图示意了超声波测距的原理,即超声波发生器在某一时刻发出的一个超声波信号,当超声波遇到被测物体后反射回来,就被超声波

12、接收器所接受。这样只要计算出发生信号到接受返回信号所用的时间,就可算出超声波发生器与反射物体的距离。距离计算公式:22tcsd其中 d 为被测物与测距器的距离,s 为声波的来回路程,c 为声速,t 为声波来回所用的时间。程序框图如图 8 所示。声速 c 与温度有关,如温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返时间,即可求得距离。在系统加入温度传感器来监测环境温度,可进行温度被偿。这里可以用 DS18B20 测量环境温度,根据不同的环境温度确定声速提高测距的稳定性。为了增强系统的可靠性,应在软硬件上采用抗干扰措施。

13、不同温度下的超声波声速表温 度(摄氏度)-30-20-100102030100声 速(m/s)3133193253233383443493864.2 主程序距离计算子程序返回查表确定当前温度下的速度值距离=计数值*速度/20000(单位:cm)判断是否需要高位灭零距离计算子程序返回查表确定当前温度下的速度值距离=计数值*速度/20000(单位:cm)判断是否需要高位灭零图 8 距离计算子程序主程序首先对系统环境初始化,设置定时器 T0 工作模式为 16 位的定时计数器模式,置位总中断允许位 EA 并给显示端口 P0 和 P2 清0。然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射

14、器直接传送到接收器引起的直接波触发,需延迟 0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断 0 接收返回的超声波信号。由于采用 11.0592MHz 的晶振,机器周期为 1us,当主程序检测到接收成功的标志位后,将计数器T0 中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,以 20时的声速为 344 m/s 为例,则有:d=(C*T0)/2 =172*T0/10000cm(其中 T0 为计数器 T0 的计数值)测出距离后结果将以十进制 BCD 码方式显示,然后再发超声波脉冲重复测量过程。主程序框图如图 9 所示。4.3 超声波发生子程序和超

15、声波接收中断程序超声波发生子程序的作用是通过 P1.0 端口发送 5 个左右的超声波信号频率约 40KHz 的方波,脉冲宽度为 12us 左右,同时把计数器 T0 打开进行计时。超声波测距器主程序利用外中断 0 检测返回超声波信号,一旦接收到返回超声波信号(INT0 引脚出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器 T0 停止计时,并将测距成功标志字赋值 1。如果当计时器溢出时还未检测到超声波返回信号,则定时器 T0 溢出中断将外中断 0 关闭,并将测距成功标志字赋值 0 以表示此次测距不成功。中断程序的框图如图 10 所示。读取温度、时间,计算距离系统初始化启动温度转换发送超

16、声波脉冲开始等待接收回波显示结果读取温度、时间,计算距离系统初始化启动温度转换发送超声波脉冲开始等待接收回波显示结果T0中断程序是否问初次上电开报警,显示“错误”置上电报警标志位启动温度转换开启时间计数发超声波返回NYT0中断程序是否问初次上电开报警,显示“错误”置上电报警标志位启动温度转换开启时间计数发超声波返回NYT1中断程序返回发送超声波等待接收回波T1中断程序返回发送超声波等待接收回波INT0中断子程序返回停止计数停止发送超声波停止接收存计数器置接收成功标志位INT0中断子程序返回停止计数停止发送超声波停止接收存计数器置接收成功标志位图 9 主程序框图图 10 计数器 T0 中断程序(

17、左)、计数器 T1 中断程序(中)外部 INT0 中断程序(右)4.4 温度补偿子程序和温度显示子程序温度补偿子程序的作用是将当前实验环境的实际温度值准确测量、转换并存储,用以确定此时声波的速度值。本程序采用 DS18B20 的 12 位转换精度,温度寄存器里的值是以 0.0625 为步进的,即温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。温度处理子程序判断温度值的“+”和“-”并将转换好的温度整数位和小数位存入显示缓存区 50H53H 中,50H 为最高位,53H 为最低位。温度显示子程序用来判断高位是否有灭零需要,以及符号位的选择和显示。程序框图如图 11 所示。 温度显

18、示子程序返回十位数0?百位数0?十位数显示符号百位数不显示百位显示数据(不显示符号)NYYN温度显示子程序返回十位数0?百位数0?十位数显示符号百位数不显示百位显示数据(不显示符号)NYYN温度转换子程序返回发DS18B20的复位子程序发跳过ROM命令发温度转换开始命令发DS18B20复位命令发跳过ROM命令延时发读取温度命令连续读两个字节温度转换子程序返回发DS18B20的复位子程序发跳过ROM命令发温度转换开始命令发DS18B20复位命令发跳过ROM命令延时发读取温度命令连续读两个字节温度值处理子程序返回温度值零下否?温度值取补码置“-”标志置“+”标志计数小数位温度BCD值计数整数位温度

19、BCD值YN温度值处理子程序返回温度值零下否?温度值取补码置“-”标志置“+”标志计数小数位温度BCD值计数整数位温度BCD值YN图 11 温度显示子程序(左上)、温度处理子程序(左下)温度转换子程序(右)五、调试及性能五、调试及性能分析分析5.1 调试步骤首先要做的就是检查检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接;测试结果所有连接线都已准确连接好;(2)检验单片机的晶振是否起振,用示波器观察波形;测试结果波形都符合正常工作波形;(3)检查各芯片工作是否正常,检测按键的导通情况;测试结果正常。

20、然后将软硬件结合在一起进行调试,把整个超声波测距系统按照实现功能分为各个子模块进行调试。具体步骤如下:(1)显示模块调试。由于受实验器材和实验台的限制,此部分电路及其程序没能做到事先进行测试,所以在调试这个部分时遇到了很多问题,开始是发现硬件电路设计有问题,接的 74LS373 锁存器几乎就不起作用,然后改线将锁存器去掉了;接着是程序有错误,显示不正确,通过仔细阅读液晶资料,发现其工作时序没有配合好,经改动后在电路板上终于调试通过了;(2)温度补偿模块调试。因为之前在实验台上已经调试通过,所以将程序下载到单片机后就正确了。但在实验台上调试时也曾出现过很严重的问题,原因就是没有彻底弄明白 DS1

21、8B20 的工作工作时序,只有将时序配合好,芯片才呢个正常工作。(3)超声波发射与接收模块的调试。这部分是整个系统的核心,也是最易出现问题的部分,而且之前并没有实际测试过,因此在这个模块的调试过程中很困难。由于发射和接收不能独立调试,所以要同时考虑这两个部分的工作情况,只有两个部分都正常工作了才能得到正确的实验结果。将调试程序下载后,发现没能得到正确的实验现象,接着便开始进行分步调试,发射部分我们通过示波器观察波形,发现波形的频率与实际需要值略有偏差,经改正程序后符合了实际需要的频率和幅度,但还是没有正确的实验现象。确定发射没有问题后便开始进行接收部分的调试,反复进行电路连接检查和程序结构的改

22、进后,依然没有调试成功。正要在困难面前退缩的时候,突然想起来,在分发电容时有一个电容在没有确定容值的情况下就发下来了,我这才想起来去检查我的器件型号规格是否有问题,果然,发现了那个误发的电容,其标称值比我们所需要的大了 100 倍,此时的我非常懊悔,恨自己一时疏忽没有做好调试前最基本的工作,把电容换了后调试成功了,又做了一点调整,系统能稳定的工作了。5.2 性能分析超声波测距系统是现代生活一种很方便的测距仪器,它能够准确快速的测量出距离,给人们的生活带来很大方便。当系统上电时,显示器上将显示“Welcome”的字样,很快系统开始工作,随着探头的移动,显示器上将实时显示当前所对准的物体的距离,而

23、且会一并显示当前测量环境的温度值。由于系统的驱动问题以及软件上的缺陷,实际测量值范围最好控制在 3m 内,距离值误差1cm,温度值误差0.5。本系统尚有不足,一是缺少电源开关控制按键,二是缺少报警机制,三是测量条件改变时的纠错能力差,另外液晶显示也没有达到理想的稳定状态。希望在进一步的设计过程中解决这些问题,并有所完善和再创新。六、心得体会六、心得体会这次课程设计是对我们学习单片机原理与应用和印刷电路板设计课程的检验及实际应用能力的一次提高。我们所设计的是超声波测距系统。可以测量的距离范围是 5cm3m,精确到 1cm。由于声波在不同的温度下的速度值变化很大,为了减少测量误差,我们采用 DS1

24、8B20 温度传感器进行温度补偿设计,它具有体积小、适用电压宽等特点,其测量范围为-55+125。与传统的热敏电阻相比,它能够直接读出被测量温度并且可根据实际要求通过简单的编程实现912 位的数字值读数方式。本次实验中选择其 12 位转换精度。由于 DS18B20读出或写入的信息仅需要一根口线完成,这样就需要准确的读写时序,刚开始由于时序没有配合好,调试很久都没出现正确的结果,后来通过对其时序的再一次了解和把握终于测出了准确的温度值。但读出来的温度值只是整个系统的一个辅助部分,我们主要是为了得到与当前环境下的温度值对应的声速值,此部分转换通过软件设计中温度的比较及查表来完成。显示部分选择了 L

25、CD1602液晶显示,但由于实验台的限制,软件调试过程中采用动态数码管显示。原理图设计时我们使用了印刷电路板设计课上学过的 Altium Designer 6制图工具,由于一些实际的器件在器件库中无法找到,我们只有自己制作,在这个过程中我们学到了很多的知识和方法。在制作 PCB 板图的时候,很多器件的封装与实际尺寸存在很大的差别,为了获得准确的封装,我们实际测量了所给器件的大小与规格,找到了与之匹配的封装库。当然我们也走过弯路,在考虑产品外型设计时,由于探头位置的需要,我们曾想过要将两个探头与主板分开单置出来,经老师分析,考虑到单开一块板的成本及安装困难的问题,提议将探头引脚弯曲便可。这个问题

26、让我感受颇深,虽然只有这么小小的变动但却解决了实际问题。而自己却把简单的问题复杂化,因此我们在看问题时,一定要多角度考虑。程序编写过程也给了我们很大的收获。在编写程序之前,我们查阅了大量的相关资料,力求做到简洁规范清晰。在把握了整体的思路后,我们先从程序流程图着手,将整个程序分成若干模块,分开编写,一边发现问题一边解决问题,并在实验板上检验程序测试情况,根据现象不断修改。由于实验板的种种限制,我们不得不针对实验台来进行软件设计与调试。在这个过程中我们体会到编程的技巧,设置子程序的合理性,同时对单片机最小系统的设计有了整体的理解和深刻的体会,使我们的思维的锻炼与能力培养有了很大的提高和进步。本次

27、课程设计时间虽短,但收获却很大。我们对应用单片机最小系统来设计产品有了整体的把握,对程序编写的合理与规范性有了深刻的理解,建立起程序设计的一般思路,以及 Altium Designer 6 的使用方法,其强大的功能给我们提供了很大的帮助,通过原理图的设计,使我们认识到了这个软件的重要性,提高了我们运用的熟练性,我们会以此为契机,在日后的学习中会继续使用它,使其发挥更大的功能。经过三个星期的课程设计,我们得到了充分的锻炼,不仅对单片机的学习有了深刻的理解,同时也增强了我们的毅力和处理突发问题的能力。学习是要付出一定的艰辛与努力的,做事情一定要有不怕困难的吃苦精神,唯有坚持不懈,发扬团队协作才能够

28、克服困难,取得最后的胜利。相信本次课程设计对我们以后的学习将会有很大的影响,我们一定会积极地总结经验与教训,改进不足,争取在日后做得更好。当然要感谢老师和同学们的帮助,在我们束手无策,陷入困境的时候给予热情的帮助,使我们顺利渡过难关。课程设计是一次很好的实践动手机会,通过实践,我们的知识得到了应用,真正实现了知识的学以致用,理论联系实际,我们会更加注重实践能力的锻炼,注重动手能力的培养。参考文献参考文献1 徐维祥,刘旭敏单片微型机原理及应用大连:大连理工大学出版社,19962 何立民单片机实验与实践教程(一)北京:北京航空航天大学出版社,20033 楼然苗,李光飞单片机课程设计指导北京:北京航

29、空航天大学出版社,20074 李群芳,黄建单片机微型计算机与接口技术北京:电子工业出版社,20015 汪道辉单片机系统设计与实践北京:电子工业出版社,2006附录附录 1 系统硬件电路图系统硬件电路图附录附录 2 程序清单程序清单;*; 系统初始化定义;*TEMPER_VL DATA 20H ; 温度值(取整后)存储区TEMPER_VH DATA 21HTEMPL DATA 26HTEMPH DATA 27H ; 测得温度值存储区TEMPHC DATA 28HTEMPLC DATA 29HTEMPHEAD EQU 36H ; 温度值缓存区TEMPER_NUM EQU 39H ; 处理温度值缓存

30、区VOUT EQU P1.0 ; 超声波脉冲输出端口TEMPDIN BIT P2.4 ; DS18B20 温度输入端口 RS EQU P2.6RW EQU P2.5E EQU P2.7;*; 中断入口程序 ;* ORG 0000H LJMP BEGIN ORG 0003H LJMP PINT0 ;外部 0 中断 ORG 000BH LJMP INTT0 ;计数器 T0 中断 ORG 0013H RETIORG 001BH LJMP INTT1 ;定时器 T1 中断ORG 0023H RETIORG 002BH RETI ;*; 主 程 序 ;* ORG 0100HBEGIN: MOV SP,#

31、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,#0

32、AH ;超声波肪冲个数控制(为赋值的一半) LCALL LCDON ;开机显示 SETB PX0 SETB ET0 SETB EABEGIN1: 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 ;重新开启

33、测距定时器 MOV R2,#02HLOOP: LCALL DISPLAYDJNZ R2,LOOP SJMP BEGIN1;*; 中断服务子程序 ;*;T0 中断,65mS 中断一次INTT0: CLR EACLR TR0 MOV TH0,#00H MOV TL0,#00H SETB ET1 SETB EA SETB TR0 ;启动计数 T0,用以计算超声来回时间 SETB TR1 ;开启定时器 T1,用以发超声波 NOP SETB EX0OUT: RETI;T1 中断,发送超声波INTT1: CPL VOUT DJNZ R4,RETIOUT CLR TR1 ;超声波发送完毕,关 T1 CLR

34、ET1 MOV R4,#0AHRETIOUT: 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

35、,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

36、 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 ;次高位不显

37、示,次次高位也不显示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 BMOV 43H,BCLEAR: MOV R0,#00H POP

38、 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,

39、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,0B

40、DH,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

41、 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 ENABLE0START100: 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 E

42、NABLE0 LCALL DELAY3 LCALL DELAY3 RETERROR: 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 ENABLE1START101: MOV DPTR,#WORD5 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV P0, #02H LCA

43、LL ENABLE1 MOV DPTR,#WORD5 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV P0, #02H LCALL ENABLE1 RETDISPLAY: 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 ENABLE1MOV DPTR,#WORD4 LCA

44、LL WRITE4 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV DPTR,#WORD3 LCALL WRITE3 MOV P0, #0C2H LCALL ENABLE1 LCALL DELAY2LCALL DELAY3LCALL DELAY3 MOV P0, #02H LCALL ENABLE1 RETWRITE1: MOV R1, #00H MOV R5, #10H A1:MOV A, R1 MOVC A, A+DPTR LCALL WRITE12 INC R1 DJNZ R5, A1 RETWRITE12: MOV P0, A SETB RS

45、CLR RW CLR E LCALL DELAY3 SETB E RETWRITE2: MOV P0, A SETB RS CLR RW CLR E LCALL DELAY2 SETB E RET WRITE3: MOV R1, #00H MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1 MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1 MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1 MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1

46、MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 MOV R1, 60H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2 MOV R1, 61H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2 MOV R1, 62H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2 MOV R1, #0FH MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 MOV R1, 63H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2MOV R1, #12H MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 RETWRITE4: MO

温馨提示

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

评论

0/150

提交评论