视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于单片机超声波测距仪
2025-09-30 23:23:06 责编:小OO
文档
摘  要

随着社会经济的发展和交通运输业的不断兴旺,汽车的数量在不断的增加。交通拥挤状况也日益严重,撞车事件也经常发生,造成了很多不可避免的人声伤亡和经济损失,面对这种情况,设计一种响应快、可靠性高并且比较经济的汽车防撞预警系统显得非常的重要。超声波测距法是一种最常见的距离测量方法。本文介绍的就是利用超声波测距法设计一种倒车防撞报警系统。

首先,论文在分析超声波的物理特性、超声波传感器的特性、超声波测距原理等基础上,结合本课题,给出了几种测量方案的比较,对影响本系统测量精度的因素和干扰进行了详尽的分析,制定了相应的解决措施;其次,在硬件选择方面,选择性价比高的ATC52单片机、LM324放大器、采用低压差线性电压稳压器、较高内阻的压力传感器;在软件方面,采用了功能模块化,为以后的升级或者扩展做准备。同时采用间歇式的工作模式,非采样期间只有显示器、稳压器等处于活动状态;在保证性能要求的情况下有效的提高了器件寿命。为了降低整个系统的成本,在满足性能要求的前提下,选择低成本元器件,简化系统设计;采用多点校准技术和线性插值方法,降低了对传感器的线性的要求,扩大了可选传感器的范围,提高了产品的通用性和可扩展性,提高了产品的竞争力,从发射探头到接收探头的那一段“敏感时间”,采用了“延时接收”的方法,进行了测试试验。研究表明,系统运行稳定,在0.07m一5.50m的测量范围内误差小于1cm,实现了预期要求。

关键词:倒车防撞;超声波测距;超声波;ATC52

ABSTRACT

With the social and economic development and transportation continues to boom, the automobile quantity climbs in the first mate. Traffic congestion condition also day by day serous, the collision event occurred repeatedly, has caused the inevitable person casualties and the economic loss, in view of this kind of situation, designed one kind to respond quickly, the reliability was high also a more economical automobile guards against hits the early warning system imperative, the ultrasonic wave range finding was the most common one distance range finder method, this article introduces is guards against using the ultrasonic wave range finding design one kind of reversing collision avoidance system.

First,a particular introduction of the physical characteristic of the ultrasonic and characteristics of ultrasonic sensors in this paper. Combining with the characteristics of the subject, several schemes of measurement are put forward and fully analyzed in term of error, advantage and disadvantage .The factors and interferences which will make an effect in measurement accuracy are analyzed at large and the solution is put forward. Second, In the hardware aspect, the ATC52 MCU with low capability/price ratio, LM324 amplifier, LED monitor, and pressure sensor with higher resistance are used to build the system, and a low linear voltage regulator is chosen to lower the voltage supply of the whole system. As for the software design, preparing for update or the expansion later, the design has used the sub-sequencing functions, according to the module's realization request. Enhancing the To avoid the sensitive time in which ultrasonic transmit from transmitter to receiver directly, the method of receiving lapsed is adopted. Experimental results show that the operation of the system is stable. From 0.07 cm to 5.50m, the system measurement error is less then l cm, the results agree well with our demands.

Key words: reversing collision avoidance; Ultrasonic Distance Measure; ultrasonic wave; ATC52

目    录

1 绪论    1

 1.1 论文研究的背景和意义    1

 1.2 超声波测距领域的历史和国内外发展现状    1

 1.3 本课题的研究方法    3

2超声波测距的基本理论及测量方案的选择    4

 2.1 超声波的定义    4

2.1.1 超声波的波型    4

2.1.2 超声波的传播速度    4

2.1.3 超声波测距的原理    5

 2.2超声波传感器介绍    6

 2.3 方案选择的论证和选择    7

2.3.1 设计方案一    7

2.3.2 方案设计二    8

2.3.3 方案设计三    8

2.3.4 方案设计四    9

3超声波测距系统设计    10

 3.1超声波测距系统的硬件设计    10

3.1.1 ATC52单片机的介绍    10

3.1.2 单片机系统及显示电路    12

3.1.3 超声波检测接收电路    13

3.1.4 超声波发射电路    14

 3.2 PCB电路的抗干扰处理    15

 3.3系统软件程序设计    15

3.3.1 超声波测距器的的算法设计    15

3.3.2 系统的主程序    16

3.3.3 超声波发生子程序和超声波接收中断程序    17

 3.4 系统的软调试及性能分析    18

4误差分析    19

 4.1 超声波回波声强的影响    19

 4.2 超声波波束入射角的影响    19

 4.3 超声波传播速度的影响    20

总结    21

致  谢    22

参考文献    23

附录一  原理图    24

附录二  源程序    25

 1 绪论

 1.1 论文研究的背景和意义

    测距的原理和方法有很多,根据信息载体的不同可分为光学方法、无线电方法和超声波方法。随着电子技术的发展,先后出现了激光、超声波及红外线等非接触式测距方法。激光测距虽然测距精度高,操作简单,但是受环境的影响比较大,且系统检测维护不便,价格相对昂贵,一般多在军事领域应用。红外测距属于电磁波的一种,超声波是声波测距,实现起来更容易且不受电磁干扰影响。红外传播速度为3×10^8m/s,超声波在空气中的传播速度为340m/s,其速度相对电磁波是非常慢的,因此在同等距离的情况下,超声波的传播时间远大于红外,往返时间更易测量。

超声波在测距方面具有以下突出的优点:

    (1)环境介质可为空气、液体或固体等,适用范围广泛;

    (2)对外界光线和电磁场不敏感,可用于黑暗、有灰尘或烟雾、电磁干扰强等恶劣环境中,可以降低劳动强度;

    (3)超声波传感器结构简单,体积小,费用低,信息处理简单可靠,易于小型化和集成化;

    由于超声波具有以上特点被广泛应用于测量物体的距离、厚度、液位等领域。在超声波探伤、自动泊车系统和倒车雷达系统中,超声波测距有其重要的应用。随着科学技术的发展,超声波测距技术在国防、汽车工业及日常生活中无处不在。目前超声波测距系统主要是采用微处理器为核心,使用微处理器内部的计时器计时,并结合温度补偿声速等处理手段提高测距精度。但由于超声波传播时间难于精确捕捉,温度对声速的影响等原因,使得超声波测距的精度受到了很大的影响,了超声测距系统在测量精度要求更高的场合下的应用。由于微处理计时精度有限和硬件设计的束缚,现有超声波测距系统在测量范围为0.2m-20m的范围内,测量误差多为mm级,20cm以下基本为系统的测量盲区。现有超声波测距系统不仅测量范围有,且测量精度有限。

超声波测距仪虽然原理简单,但是由于超声波测距受到许多外界因素制约,包括所测的超声波传播时间和超声波在介质中的传播速度,环境温度等等,如何选择合适的方法提高精度是技术开发的重要瓶颈,国内外的学者在提高超声波坝J距精度方面做了大量的研究。面对广阔的市场空间以及日益苛刻的测量要求,如何提高适用范围和测距精度就成为了当前超声波测距设备开发的关键所在。

 1.2 超声波测距领域的历史和国内外发展现状

    一般认为,关于超声波的研究最初起始于1876年F.Galton的气哨实验,这是人类首次有效产生的高频声波。在之后的三十年中,超声波仍然是一个鲜为人知的东西,由于当时电子技术发展缓慢,对超声波的研究造成了一定程度的影响。在第一次世界大战中,对超声波的研究逐渐受到重视。法国人Langevin使用一种晶体传感器在水下发射和接收相对低频的超声波。他提出的这种方法可以用来检测水中是否存在潜艇并进行水下通信。

    1929年,Sokolov首先提出用超声波探查金属物内部缺陷的建议。相隔2年,1931年Mulhauser获准一项关于超声检测方法的德国专利,不过他并未做更多的工作。4年之后,1934年Sokolov首次发表了关于在液体槽子里用穿透法作实物试验的结果,他用了各种方法做了实验,用来检测穿过试件的超声能量,其中之一是用简单的光学方法观察液体表面由超声波形成的波纹。德国人Bergmann在他的论著《ULTRASONIC》中,详细的论述了有关超声波的大量早期资料,该论著一直被认为是该领域的经典之作。

    美国的Firestone和英国的Sproule首次介绍了脉冲回波探伤仪,使超声波检测技术发展到了更重要的阶段。在各种系统中,这是最成功的一种,因为它有最广泛的通用性,其检测结果也最容易解释。这种方法除可用于手工检测外,还可与采用先进技术的自动系统联用,自第一种脉冲回波仪器问世以来,根据相同的原理,有无数种其他仪器得到了发展,并有许多改进和精化。目前,在超声无损检测中,脉冲回波系统仍是使用最为广泛的一种。

    HuaHong, Wang Yongtia阐述了其所研究的一种调幅连续超声波大范围动态测距系统。该系统的测距原理是利用超声波传感器发射和接收调幅连续超声波,基于接收信号于发射信号之间的相位差和两传感器之间的正比关系,用相位差法测量传感器之间的动态距离。文中给出了设计原理、硬件实施和测量结果。实验结果表明,该系统在15m的测距精度可达到1 mm。

    中国测试技术研究所的李茂山在《超声波测距原理及实践技术》中阐述了用超声波在空气里传播速度为已知条件,测量超声波行进于待测距离所耗费时间的超声波测距原理。文中分析了声波的传输特性和影响声速的因素,给出了超声波测距的框图。作者还进行了超声波测距误差源分析以及超声波测距仪的检验。

    浙江师范大学的李鸣华、余水宝利用单片机开发了一种超声波料位测量系统[。作者介绍了超声波料位测量的原理以及超声波料位测量仪的软硬件设计,硬件设计主要分为超声波信号的产生发射电路、信号接收处理电路、ATC2051单片机控制电路等。作者还分析了造成料位测量误差的几点原因,并给出了几种方法来减少测量误差。比如:在计数电路设计中,采用了“延迟接收,信号分离”的技术和相关计数法减小了计数误差,对于声速的测量误差,使用温度补偿法,在软件设计中采用了查表的方法,由单片机实现自动补偿校正。文中的一些方法对于设计超声波测量系统来说具有一定的参考价值。

    声速的测量在超声波测距中对提高超声波精度有重要的作用,超声波在介质中的传播速度与温度、压力等因素有关,其中温度的影响最大,因此需要对其进行补偿。中国海洋大学的曹玉华在《超声波测距系统设计及其在机器人模糊避障中的应用》提出了采用温度补偿的方法测量声速,来提高超声波测距精度。文中温度检测部分采用了美国DALLAS半导体公司生产的可组网单线数字温度传感器DS 18B20测量环境温度,用以温度补偿以修正超声波速度,来减小温度变化对距离测量精度的影响。该超声波测距装置在 1.5m的测量范围内,测量误差小于5cm。

山东科技大学的王红梅在《高分辨力超声测距系统的研究》中研究了己有超声波测距系统的优缺点,采用超声波多次发射,以多次测量的平均值作为测量值的方法提高超声波测距精度,并使用了温度补偿声速的方法进一步提高了系统精度。为了提高仪器的分辨力,还采用了若干方法来减小随机误差。本文所设计的超声波测距系统在测量范围1cm—10cm,精度可达到0.5%,分辨率优于0.1mm。

 1.3 本课题的研究方法

本设计选用TCT40-16T/R超声波传感器。了解超声波测距的原理的,只有对理论知识有一定的学习才能运用到实际操作中。根据原理设计超声波测距仪的硬件结构电路。对设计的电路进行分析能够产生超声波,实现超声波的发送和接收,从而实现利用超声波测距的方法测量物体之间的距离。具体设计一个基于单片机的超声波测距器,包括单片机控制电路,发射电路,接收电路,LED显示电路。

 2超声波测距的基本理论及测量方案的选择

 2.1 超声波的定义

    波是由某一点开始的扰动所引起的,并按预定的方式传播或传输到其他点上。声波是一种弹性机械波。人们所感觉到的声音是机械波传到人耳引起耳膜振动的反应,能引起人们听觉的机械波频率在20Hz-20KHz,超声波是频率大于20KHz的机械波

    在超声波测距系统中,用脉冲激励超声波探头的压电晶片,使其产生机械振动,这振动在与其接触的介质中传播,便形成了超声波。

 2.1.1 超声波的波型

    由于声源在介质中施力的方向与波在介质中传播的方向可以相同也可以不同,这就可产生不同类型的声波,超声波的波型主要有以下几种:

    (1)纵波

    当介质中的质点振动方向和超声波传播方向相同时,此种超声波为纵波波型,以L表示。任何介质,当其体积发生交替变化时均产生纵波。由于纵波的产生和接收都较容易,所以纵波在超声波检测中得到了广泛应用。

    (2)横波

    当介质中质点振动方向和超声波的传播方向垂直时,此种超声波为横波波型,以T表示。因为液体和气体中缺乏横向运动的弹性力,所以横波不能存在,只有纵波才能存在,但在固体中纵波和横波都能存在。

    (3)表面波

    瑞利于1887年首先研究和证实了表面波的存在,因此称为瑞利波,用字母R表示。表面波是沿着固体表面传播的具有纵波和横波双重性的波。其振动质点的轨迹为一椭圆,质点位移的长轴垂直于传播方向,质点位移的短轴平行于传播方向,随着深度增加很快衰减,离表面一个波长以上的地方,质点振动的振幅很微弱。表面波的传播速度,只与介质的弹性性质有关,与频率无关。

    (4)板波

   板波亦称拉姆波,板波只产生在大约一个波长的薄板内,在板的两表面和中部都有质点的振动,声场遍及整个板的厚度。薄板两表面的质点振动是纵波和横波成分之和,运动轨迹为椭圆形,长轴于短轴的比例取决于材料的性质。板波可以分为对称型和非对称型两种。

 2.1.2 超声波的传播速度

    声波的传输需要一种媒质,声波在媒质中的传播速度,称为声速。由声波产生的物理过程可知,声速与质点速度是完全不同的,声波的传播只是扰动形式和能量的传递,并不把在各自平衡位置附近振动的媒质点传走。某种媒质中的声速主要取决于该媒质的密度和温度。由于空气没有剪切弹性,只有体积弹性,因而气体中声波的传播形式只能是纵波。也就是说,在声扰动下,气体媒质中的质点在各自平衡位置附近运动,形成稠密和稀疏依次交替的传递过程,而且质点运动的方向与声波传播的方向一致。

    声波在相当大的频率范围内不随频率发生变化,也就是说超声波的传播速度与可听声波的传播速度是相同的,超声波在媒质中的反射、折射、衍射、散射等传播规律与可听声波并无质的区别,与一般声波相比,超声波具有更好的定向性,并且可以穿透不透明物质。

    在空气中超声波传播速度主要与温度有关,在空气中的传播速度C为:                   C=331.4 x SQRT(1+T/273)                            (2-1)

式中,T为环境温度。

 2.1.3 超声波测距的原理

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到发射波就立即停止计时。假设超声波在空气中的传播速度为,根据计时器记录的时间,发射点距障碍物的距离,如图2-1所示

图2-1 超声波测距原理

图2-1中被测距离为H,两探头中心距离的一半用M表示,超声波单程所走过的距离用表示,由图可得:

                                            (2-2)

                                           (2-3)

将式(2-3)带入式(2-2)得:

                                     (2-4)

在整个传播过程中,超声波所走过的距离为:

                                                   (2-5)

式中:为超声波的传播速度,为传播时间,即为超声波从发射到接收的时间。将式(2-5)带入式(2-4)可得:

                                   (2-6)

当被测距离H远远大于M时,式(2-6)变为:

                                                 (2-7)

这就是所谓的时间差测距法。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离[2]。

由于是利用超声波测距,要测量预期的距离,所以产生的超声波要有一定的功率和合理的频率才能达到预定的传播距离,同时这是得到足够的回波功率的必要条件,只有得到足够的回波频率,接收电路才能检测到回波信号和防止外界干扰信号的干扰。经分析和大量实验表明,频率为40左右的超声波在空气中传播效果最佳,同时为了处理方便,发射的超声波被调制成具有一定间隔的调制脉冲波信号。

 2.2超声波传感器介绍

超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。这里介绍了超声波传感器的组成部分,性能指标,工作模式等内容。

超声波探头主要由压电晶片组成,既可以发射超声波,也可以接收超声波。小功率超声探头多作探测作用。它有许多不同的结构,可分直探头(纵波)、斜探头(横波)、表面波探头(表面波)、兰姆波探头(兰姆波)、双探头(一个探头反射、一个探头接收)等。

传感器的主要组成部分是压电晶片。当压电晶片受发射电脉冲激励后产生振动,即可发射声脉冲,是逆压电效应。当超声波作用于晶片时,晶片受迫振动引起的形变可转换成相应的电信号,是正压电效应。前者用于超声波的发射,后者即为超声波的接收。超声波传感器一般采用双压电陶瓷晶片制成。这种超声传感器需要的压电材料较少,价格低廉,且非常适用于气体和液体介质中。在压电陶瓷上加上有大小和方向不断变化的交流电压时,根据压电效应,就会使压电陶瓷晶片产生机械变形,这种机械变形的大小和方向在一定范围内是与外加电压的大小和方向成正比的。也就是说,在压电陶瓷晶片上加有频率为交流电压,它就会产生同频率的机械振动,这种机械振动推动空气等媒介,便会产生超声波。如果在压电陶瓷晶片上有超声机械波作用,这将会使其产生机械变形,这种机械变形是与超声机械波一致的,机械变形使压电陶瓷晶片产生频率与超声机械波相同的电信号。

压电传感器属于超声波传感器中电声型的一种。探头由压电晶片、楔块、接头等组成,是超声检测中最常用的实现电能和声能相互转换的一种传感器件,是超声波检测装置的重要组成部分。压电材料分为晶体和压电陶瓷两类。属于晶体的如石英、铌酸锂等,属于压电陶瓷的有锆钛酸铅,钛酸钡等。其具有下列的特性:把这种材料置于电场之中,它就产生一定的应变;相反,对这种材料施以外力,则由于产生了应变就会在其内部产生一定方向的电场。所以,只要对这种材料加以交变电场,它就会产生交变的应变,从而产生超声振动。因此,用这种材料可以制成超声传感器。

压电式超声波发生器实际上是利用压电晶体的逆向压电效应来工作的。超声波发生器内部结构如图2-2所示,它有两个压电晶片和一个锥形振子,当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动锥形振子振动,便产生超声波。反之,如果两极间未外加电压,当锥形振子接收到超声波时,将压迫压电晶片作振动,将机械能转化为电信号,这时它就成为超声波传感器。

 一般常用的超声波传感器有两种:专用型和兼用型。专用型是发送器用作发送超声波,接收器用作接收超声波;兼用型就是发送器和接收器是一体的传感器,既可以发送超声波,又可以接收超声波。本设计选用的超声波传感器是专用型,其型号为TCT40-16T和TCT40-16R,其中40表示传感器工作的中心频率为40,16表示传感器的外径为16,T和R分别表示发射器和接收器。

               图2-2 压电式传感器构图

 2.3 方案选择的论证和选择

 2.3.1 设计方案一

采用单片机来控制的超声波测距仪是先由单片机产生一个信号,经过信号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:

                        

                                2-8

原理图如图2-3所示。

图 2-3 采用单片机来控制的单片机测距仪

   2.3.2 方案设计二

采用CPLD来控制的超声波测距仪,主要是在软件上应用VHDL(Very High Speed Integrated Circuit Hardware Description Language)编写程序主要使用用的是MAX + PLUX II 软件进行软硬件的调试和仿真,最终实现测距功能。使用本方案的优点在于超声波测距仪设计中采用的是MAX7000s系列中的EPM7128SLC84-15的CPLD器件,器最高频率可达175.4MHz,可以用于逻辑组合电路、时序逻辑电路、算法、双端口RAM等的设计。充分利用了其多达128个宏单元、68 Pin可编程I/O口,使该器件可以充分将分频功能、计数功能、显示编码功能、震荡功能全部集中在一起。又因其延时平均的特点,保障了测距结果精度高、响应速度快。缺点是方案中需要一块FPFA, 一块双口RAM,还需要一块用来存储波形数据的EEPROM,那么设计的成本较高。同时在FPGA中还要用硬件描述语言(VHDL语言)编写程序来实现硬件电路功能。由于由于EPM7128SLC84-15的算法复杂,所以在软件实现起来编程也较复杂。

   2.3.3 方案设计三

采用锁相环频率合成技术,也可以实现我们所需要的超声波测距仪。具体方案如下:首先通过频率合成技术产生超声波所需要的频率,在通过信号线将采用锁频率相合成技术得到的频率引到超声波的发射头上,这样就可以实现超声波测距。它的优点就是工作频率可调,也可以达到很高的频率分辨率;缺点是要求使用的滤波器通带可变,实现很困难。它的原理如图2-4所示:

图2-4超声波原理图

 2.3.4 方案设计四

 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经 常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到日常使用要求。在测量精度方面也能达到日常使用要求。

  超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率、和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面常用的是压电式超声波换能器。根据设计要求并综合各方面因素,本文采用ATC52单片机作为控制器,用动态扫描法实现LED数字显示,        超声波驱动信号用单片机的定时器。 超声波测距系统的设计如图2-5所示。

图2-5 超声波测距系统的设计

通过对四种方案优缺点的比较,本设计采用第四种设计方案。

3超声波测距系统设计

    在整个超声波测距系统设计中占有很重要的位置的是超声波测距系统的硬件电路设计。硬件电路设计的合理性将直接影响系统运行的可靠性与稳定性。其中选择合适的器件和合理的电路布局将对系统有很大的影响,并且硬件系统的性能是整个测距系统可靠性的最根本保证。因此,在能够保证实现超声波测距所需要功能的基础上,还应该需要重点考虑以下几个原则:

    (1)尽量选择一些典型芯片,典型的应用电路。这样可以保证电路设计模块的正确性,为系统的标准化、模块化打下良好的基础。

    (2)尽量减小硬件电路的复杂性,能在片内实现的功能,最好不要再外接电路,多选用集成度高的芯片。

    (3)在芯片选择和线路板排布时候尽量考虑系统的可靠性及抗干扰性能。

 3.1超声波测距系统的硬件设计

硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用ATC52或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管8550驱动。

 3.1.1 ATC52单片机的介绍

ATC52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位处理器和Flash存储单元,ATC52单片机在电子行业中有着广泛的应用。

主要功能特性

①兼容MCS51指令系统 

  ②8k可反复擦写(大于1000次)Flash ROM; 

  ③32个双向I/O口; 

  ④256x8bit内部RAM; 

  ⑤3个16位可编程定时/计数器中断; 

  ⑥时钟频率0-24MHz; 

  ⑦2个串行中断,可编程UART串行通道; 

  ⑧2个外部中断源,共8个中断源; 

  ⑨2个读写中断口线,3级加密位; 

  ⑩低功耗空闲和掉电模式,软设置睡眠和唤醒功能;有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 如图3-1显示了ATC52的引脚图。

 

图3-1  ATC52的引脚图

特殊功能寄存器

在ATC52 片内存储器中,80H-FFH 共128 个单元为特殊功能寄存器(SFR),SFR 的地址空间映象。非所有的地址都被定义,从80H—FFH 共128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。 ATC52除了有ATC51所有的定时/计数器0 和定时/计数器1 外,还增加了一个定时/计数器2。 

数据查询

  ATC52 单片机用Data Palling 表示一个写周期结束为特征,在一个写周期中,如需读取最后写入的一个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,所输出的数据是有效的数据,即可进入下一个字节的写周期,写周期开始后,Data Palling 可能随时有效。 

  Ready/Busy:字节编程的进度可通过“RDY/BSY 输出信号监测,编程期间,ALE 变为高电平“H”后,P3.4(RDY/BSY)端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P3.4 变为高电平表示准备就绪状态。 

   

ATC52总线结构

ATC52的管脚除了电源、复位、时钟接入、用户I/O口部分P3外,其余管脚都是为实现系统扩展而设置的。这些管脚构成了三总线形式,即:

(1)地址总线(AB):地址总线宽度为16位,因此,其外部存储器直接地址外围为K字节。16位地址总线由P0经地址锁存器提供低8位地址(A0~A7);P2口直接提供高8位地址(A8~A15)。

(2)数据总线(DB):数据总线宽度为8位,由P0口提供。

(3) 控制总线 (CB):由部分P3口的第二功能状态和4根控制线RESET、、ALE、组成。图3-2 为的ATC52结构框图。

  

 3.1.2 单片机系统及显示电路

单片机采用ATC52或其兼容系列。系统采用12MHz高精度的晶振,已获得较稳定的时钟频率,并减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz方波信号,利用中断0口监测超声波接收电路输出的返回信号。显示电路采用简单的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管9012驱动。单片机系统及显示电路如图3-3所示。

图3-3单片机系统及显示电路

 3.1.3 超声波检测接收电路

   超声波接收器包括超声波接收探头、信号放大电路及波形变换电路三部分。超声波探头必须采用与发射探头对应的型号,关键是频率要一致,本课题采用TCT40-10S1(R接收)和TCT40-10F1(T发射),否则将因无法产生共振而影响结果,甚至无法接收。由于经探头变换后的正弦波信号非常弱,因此必须经放大电路放大。正弦波信号不能直接被单片机接收,必须进行波形转换。按照上面所讨论的原理,单片机需要的只是第一个回波的时刻。接收电路的设计可采用专用接收电路,也可采用通用电路来实现,如图 3-4所示。

    超声波在空气中传播时,其能量的衰减与距离成正比,即距离越近信号越强,距离越远信号越弱,通常在1mV~1V范围内。当然不同接收探头的输出信号强度存在差异。由于输入信号的范围较大,对放大电路的增益提出了二个要求:一是放大增益要大,以适应小信号时时的需要;二是放大增益要能变化,适应信号变化范围大的需要。另外,由于输入信号为正弦波,因此必须将放大电路设计成交流放大电路。为减少负电源的使用,放大电路采用单电源供电,信号放大和变换采用了一片LM324通用运算放大器,前三级为放大器设计,后一级为比较器设计,LM324既可以双电源供电,也可以单电源供电,因此满足使用要求。为满足交流信号的需要,每一级的放大器均采用阻容电路进行电平平移,即图 3-4中的C4、C6、C9和C10的容量尊为10uF, 实现单电源条件下交流信号的放大。对于交流信号而言,电容为短路,因此前三级放大电路的增益均为10。距离较近时,两级放大的增益已能够输出具有足够强度的信号了,第三级有可能出现信号饱和,但距离较远时,必须采用三级放大。合理调节电位器R17,选择比较基准电压,可使测量更加准确和稳定。

图3-4 超声波检测接收电路 

   

3.1.4 超声波发射电路                                                    

超声波发射电路原理图如图3-5所示。发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1O、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。

图3-5  超声波发射电路原理图

压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。

  3.2 PCB电路的抗干扰处理

     PCB的抗干扰设计与具体电路有着密切的关系,主要采取了以下措施:

     (1)电源线设计。根据印制电路板电流的大小,应尽量加粗电源线宽度,减少环路电阻。同时,尽量保证电源线、地线的走向与数据传递的方向一致,这样可以增强抗噪声能力。

     (2)地线设计。地线的设计原则是:数字地与模拟地分开。如果印制电路板上既有逻辑电路又有线性电路,应使它们尽量分开。低频电路的地宜多采用单点并联接地,高频电路宜采用多点串联接地,地线应短而粗,高频元件周围尽量用栅格状的大面积铜箔。

    若接地线用很细的线条,则接地电位随着电流的变化而变化,降低抗噪性能。因此应将接地线加粗,使它能通过三倍于PCB上的允许电流,接地线宽度应在2-3mm以上。

     (3)大面积敷铜。印制电路板上的大面积敷铜具有两种作用:一为散热;两外还可以减少地线阻抗,并且屏蔽电路板的信号交叉干扰以提高电路系统的抗干扰能力。

 3.3系统软件程序设计

超声波测距系统的软件部分是针对系统所需要实现的功能,以软件模块化设计的思路来进行设计的。系统的主要功能是距离测量,软件的设计目标是在硬件的基础上,能实现所设计的各种功能,而且系统的稳定性好,实时性高,测量精度高。超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。                            

 3.3.1 超声波测距器的的算法设计                                    

  图3-6展现了超声波测距的原理,也就是说超声波发生器T在某一时刻发出了一个超声波信号,当这个超声波遇到障碍物后就会反射回来,然后被超声波接收器R接收到。这样,只要计算出从发出超声波信号到接收到返回信号所用的时间,就可以计算超声波发生器与反射物体的距离。该距离的计算公式如下:    

d=s/2(v×t)/2                             (3-1)

其中:d为被测物与测距器的距离;s为声波的来回路程;v为声速;t为声波往返所用的时间。

         图3-6 超声波测距的原理图

由于超声波也是一种声波,其声速v与温度有关,下表列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。

超声波波速与温度的关系表

温度(℃)-30-20-100102030100
声速(m/s)

313319325323338344349386
 3.3.2 系统的主程序                                                        主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P1清0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12 MHz的晶 振,计数器每计一个数就是1μs,当主程序检测到接收成功的标志位后,将计数器T0中的数即超声波来回所用的时间按下式计算可得被测物体与测距仪之间的距离,设计时取20℃时的声速为344 m/s则有:                                                         d=(v×t)/2    =(172T0/10000)cm                            (3-2)                其中,T0为计数器T0的计算值。 

  测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程.图3-7为主程序流程图。

图3-7主程序流程图

  3.3.3 超声波发生子程序和超声波接收中断程序  

     波发生子程序的作用是通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12μs左右,同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行准确,所以采用汇编语言编程。图3-8和图3-9 分别为超声波的发射和接收流程图。 

              

   图3-8超声波发射程序              图3-9超声波接收中断程序

超声波发生子程序和超声波接收中断程序的代码为:

*************************中断程序**************************

;T0中断,65ms中断一次

INT0:      CLR      EA

           CLR      TR0

           MOV      TH0, #00H

           MOV      TL0, #00H

          SETB      ET1

          SETB      EA

          SETB      TR0         ;启动计数器T0,用于计算超声波来回时间

          SETB      TR1         ;开启发超声波用定时器T1

OUT:      RETI

;T1中断,发超声波用

INT1:     CPL       VOUT

          DJNZ      RETIOUT

          CLR       TR1         ;超声波发送完毕,关闭T1

          CLR       ET1

          MOV       R4, #04H

          SETB      EX0         ;开启接收回波中断

RETIOUT:  RETI

;外中断0,收到回波时进入

PINT0:    CLR       TR0         ;关计数器

          CLR       TR1

          CLR       ET1

          CLR       EA

          CLR       EX0

          MOV       44H, TL0     ;将计数值移入处理单元

          MOV       45H, TH0

          SETB      00H          ;接收成功标志

          RETI

   3.4 系统的软调试及性能分析                                        

超声波测距仪的制作和调试都比较简单,其中超声波发射和接收采用Φ15的超声波换能器TCT40-10F1(T发射)和TCT40-10S1(R接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距4~8cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C4的大小,以获得合适的接收灵敏度和抗干扰能力。 

    超声波测距仪的制作和调试都比较简单,其中超声波发射和接收采用Φ15的超声波换能器TCT40-10F1(T发射)和TCT40-10S1(R接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距4~8cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C4的大小,以获得合适的接收灵敏度和抗干扰能力。 

   4误差分析                                                                

 4.1 超声波回波声强的影响                                            

回波的声强与障碍物距离的远近有直接关系, 实际测量时, 不一定是第一个回波的过零点触发, 其原理如图4-1 所示。这种误差不能从根本上消除, 但是可以通过根据障碍物的距离调整脉冲群的脉冲个数以及动态调整比较电压来减小这种误差。另一方面将求距离公式后加一个补偿系数来补偿计时误差, (a 与距离、脉冲个数相关) 。

图4-1 脉冲个数与回波声强对计时影响示意图

    4.2 超声波波束入射角的影响                                        

如果系统是用来测量面与点的距离, 则被测物、换能器及换能器所在测量参考平面三者之间存在一个几何角度, 即反射波入射到换能器的角度, 当这角度不是90°时, 系统测量到的距离是障碍物与换能器之间的距离而不是和量参考平面之间的距离, 这就会造成测量误差, 如图4-2所示。

图4-2 超声波回波入射角影响分析图

当障碍物的距离较小时, 这个误差就会成为近距离时的主要误差来源。可以用多个换能器同时测量, 利用几何关系来计算得出实际距离, 消除这种误差。

…………………………………4.1

               ……………………………………4.2

式中   ----换能器a 、b到被测物的距离

       ----换能器a、b之间的距离

       -----被测物到测量的距离

 4.3 超声波传播速度的影响                                        

    稳定准确的声波传播速度是保证测量精度的必要条件, 传播介质的温度、压力及密度对声速都产生直接影响。对于在大气中传播的声波而言, 引起声速变化的主要原因是温度的变化。采用声速预置和传播介质温度测量结合的方法对声速进行修正, 可有效地降低温度变化产生的误差。在对距离的精确度要求不高的应用中可以不进行温度补偿, 选择室温20℃左右时的声速340m/s作为固定参数, 当温度在- 10~ 40 ℃之间变化时声速误差在±5% 之间。如果在室外测量, 对于季节温差大的地区, 还可以采用预置该地区12 个月的统计温度, 用以对温度进行补偿, 既可提高精度, 又不增加成本。影响测量误差的因素8 很多, 包括现场环境干扰、时基脉冲频率等。在实际应用中可以根据系统测量精度要求, 采用合理的补偿手段。

                                                                                                                                                                   

   

    总结                                                                            超声波测量距离是一种有效的非接触式测距方法,可广泛应用于各种需要测量距离或物位参数的场合。特别是其具有高精度、无损、非接触等优点,超声波的应用变得越来越普及。随着科学技术的不断发展超声波测距技术本身也在不断的完善和发展。                                                                        论文详细研究了超声波测距原理,超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。整个课题侧重于近距高精度超声波测距系统的研究,通过相关资料和文献的查找后,设计了系统方案,并完成了系统的硬件电路设计和软硬件调试。通过实验测试表明,整个系统在距离0.07~5.50m的范围内可以达到误差1cm的测量精度,满足了设计要求。                                                    当然,该系统也存在着不足和需要改进之处,比如进一步提高系统硬件电路的整体性能以及抗干扰能力。随着发展,未来的设计可能会采用更好的测时方法来提高超声波测距系统的精度,本系统采用的ATC52单片机设计的超声波测距系统有一定意义。

致  谢

    本论文工作是在邓文娟老师的悉心指导下完成的。邓老师渊博的知识、深远的学术前瞻性、严谨求实的治学作风、精益求精的工作态度、宽厚洞达的处世风格,都给我留下了终身难忘的印象。常常亲聆温老师的教诲,不仅使我增长了学问和见识,而且领会了为人处事的道理。

本论文工作是在邓文娟老师的悉心指导下完成的。半年来,邓老师在生活上无微不至的关怀,学习上全心全力的教诲令我铭感肺腑、终生难忘。她丰富的专业知识和非常渊博的技能,学术洞察力的敏锐和治学态度的严谨,使我在半年里受益匪浅; 她孜孜以求的工作精神和诲人不倦的职业操守,给我留下了深刻的印象。在选题报告和方案设计阶段,邓文娟老师给了我一些关键性的指导和建议;在论文写作过程中,每遇到问题都能够从邓老师那里得到解决问题的思路;邓老师多次批改过本论文,有些章节从字到段、节、章,都是在邓老师指点下修改完成的。邓老师认真批阅了本文,提出了不少问题和意见,这些问题和意见对修改和完善论文起了重要和积极的作用。邓老师在百忙之中给了重要的指导和帮助,在此向邓老师致以崇高的敬意并表示衷心的感谢!

    感谢在攻读学士学位期间帮助过我的所有老师和同学们

    

参考文献

[l]  王慧.基于总线的超声波测距仪的研究「D].哈尔滨:哈尔滨工程大学,2007.                                                               [2]   苏长赞,邹殿贵.红外线与超声波遥控[M].北京:人民邮电出版社,2001.     

[3]  胡盛斌,罗均.用于移动机器人避障的超声测距系统[J].机电一体化,2003(l):37-40.                                                                        [4]   Jack Blitz.Ultrasonics methods and applications[M].London:Butterworths,1971.

[5]   Sokolov,S.U1trasonic methods for determining internal flaws in metal objects[J]

   Russian,Zavod,Lab,1935,4:1468-1473.                                            

[6]   彭小宝.超声波测距在机车挂钩高度检测中的应用[D].河北:华北交通大学,2006.

[7]   Firestone,F.A.Flaw detecting device and measuring instrument[P].U.S.Patent no.2280 130,1940.

[8]   Desch,C.H,Sproule,D.O.and Dawson,W.J.The detection of cracks in steel by means    

of supersonic waces[J].Iron Steel Inst,1946,153:319-352.

[9]   Hua Hong,,Wang Yongtian,Dynamic range finding device using amplitude-modulated

   Continiuous 1trasonic wave[J].Journal of Beijing Institute of Technology, 1998, 7(1):132-136.

[10]  李茂山.超声测距原理及实践技术[J].实用测试技术,1994(l):12-20.    

[11]  李鸣华,余水宝.单片机在超声波料位测量中的应用[J].电子技术应用,1998(9):15-17.  

[12]  曹玉华.超声测距系统设计及其在机器人模糊避障中的应用[D].山东:中国海洋大学,2007. 

[13]  王红梅.高分辨力超声测距系统的研究[D].山东:山东科技大学,2004.

[14]  时德刚,刘哗.超声波测距的研究.计算机测量与控制,2002.10 

[15]  华兵.MCS-51单片机原理应用.武汉:武汉华中科技大学出版社,2002 .5

[16]  李华.MCU-51系列单片机实用接口技术.北京:北京航空航天大学出版社, 1993. 6

[17]  徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,1999.6.

[18]  苏长赞.红外线与超声波遥控.北京:人民邮电出版社,1993.7

[19]  张谦琳.超声波检测原理和方法.北京:中国科技大学出版社,1993.10

[20]  苏伟,巩壁建.超声波测距误差分析.传感器技术,2004.

  

  附录一  原理图

  附录二 源程序

 ;*******************************************************

 ;超声波测距器

 ;采用ATC52  12MHz晶振

 ;采用共阳LED显示器

 ;********************************************************

 ;测距范围为0.07m~4m,堆栈在4FH以上,20H用于标志显

 ;示缓冲单元在40H~43H,内存44H~46H用于计算距离

 VOUT      EQU      P1.0         ;脉冲输出端口

 ;*********************************************************

 ;**************************中断入口程序********************

            ORG       0000H

            LJMP          START

            ORG       0003H

            LJMP       PINT0

            ORG       000BH

           LJMP       INT0

           ORG       0013H

           RETI

           ORG       001BH

           LJMP       INT1

           ORG       0023H

           RETI

           ORG       002BH

           RETI

  ;****************************主程序*************************

   START::  MOV     SP,#4FH

              MOV    R0 , #40H       ;40H~43H为显示数据存放单元(40H为最高位)

              MOV    R7, #0BH

CLEARDISP:  MOV    @R0 #00H

              INC      R0

              DJNZ    R7,     CLEARDISP

              MOV    20H, #00H

              MOV    TMOD, #21H   ;T1为8位自动重装模式,T0为16位定时器

              MOV    TH0 ,#00H     ;65ms初值

              MOV    TL0, #00H

              MOV    TH1, #0F2H    ;40kHz初值

              MOV    TL1, #0F2H

              MOV    P0, 0FFH

              MOV    P1, #0FFH

              MOV    P2, #0FFH

              MOV    P3, #0FFH

              MOV    R4, #04H       ;超声波脉冲个数控制(为赋值的一半)

              SETB    PX0

              SETB    ET0

              SETB     EA

              SETB     TR0         ;开启测距定时器

   START1:   LCALL    DISPLAY

              JNB      00H, START1  ;收到反射信号时标志位为1

               CLR      EA

               LCALL   WORK        ;计算距离子程序

               SETB     EA

               CLR      00H

               SETB    TR0          ;重新开启测距定时器

               MOV     R2, #H     ;测量间隔控制(约4ms×100=400ms)

LOOP:      LCALL     DISPLAY

           DJNZ      R2, LOOP

           SJMP      START1

;*************************中断程序**************************

;T0中断,65ms中断一次

INT0:      CLR      EA

           CLR      TR0

           MOV      TH0, #00H

           MOV      TL0, #00H

          SETB      ET1

          SETB      EA

          SETB      TR0         ;启动计数器T0,用于计算超声波来回时间

          SETB      TR1         ;开启发超声波用定时器T1

OUT:      RETI

;T1中断,发超声波用

INT1:     CPL       VOUT

          DJNZ      RETIOUT

          CLR       TR1         ;超声波发送完毕,关闭T1

          CLR       ET1

          MOV       R4, #04H

          SETB      EX0         ;开启接收回波中断

RETIOUT:  RETI

;外中断0,收到回波时进入

PINT0:    CLR       TR0         ;关计数器

          CLR       TR1

          CLR       ET1

          CLR       EA

          CLR       EX0

          MOV       44H, TL0     ;将计数值移入处理单元

          MOV       45H, TH0

          SETB      00H          ;接收成功标志

          RETI

;*************************显示程序************************

;40H为最高位,43H为最低位,先扫描高位

DISPLAY:   MOV    R1, #40H

           MOV    R5, #0F7H

PLAY:      MOV    A, R5

           MOV    P0, #0FFH

           MOV    P2, A

           MOV    A, @R1

           MOV    DPTR, #TAB

           MOVC   A, @A+DPTR

           MOV    P0, A

           LCALL   DL1MS

           INC      R1

           MOV    A, R5

           JNB     ACC.0, ENDOUT

           RR      A

           MOV    R5, A

           AJMP   PLAY

ENDOUT:  MOV    P2, #0FFH

           MOV    P0, #0FFH

           RET

TAB:     DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H, 0FFH, 88H

;共阳段码表“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“不亮”,“A”

;****************************延时程序*****************************

DLIMS:    MOV     R6, #14H

DL1:      MOV      R7, #19H

DL2:      DJNZ      R7, DL2

          DJNZ      R6, DL1

          RET

; ***************距离计算程序(距离=计数值×17/1000m)************

work:     PUSH     ACC

          PUSH     PSW

          PUSH     B

          MOV      PSW, #18H

          MOV      R3, 45H

          MOV      R2, 44H

          MOV      R1, #00D

          MOV      R0, #17D

          LCALL     MUL2BY2

          MOV      R3, #03H

          MOV      R2, #0E8H

          LCALL    DIV4BY2

          LCALL    DIV4BY2

          MOV      40H, R4

          MOV       A, 40H

          JNZ        JJ0

           MOV      40H, #0AH

 JJ0:           MOV       A, R0

               MOV       R4, A

               MOV       A, R1

               MOV       R5, A

               MOV       R3, #00D

               MOV       R2, #100D

               LCALL     DIV4BY2

               MOV       41H, R4

               MOV       A, 41H

               JNZ         JJ1

               MOV       A, 40H        ;次高位为0,先看最高位是否为不亮

               SUBB      A, #0AH

                JNZ       JJ1

               MOV       41H, #0AH     ;最高位不亮,次高位也不亮

 JJ1:           MOV       A, R0

               MOV       R4, A

               MOV       A, R1

               MOV       R5, A

               MOV       R3, #00D

               MOV       R2, #10D

               LCALL      DIV4BY2

               MOV        42H, R4

               MOV        A, 42H

               JNZ         JJ2

               MOV        A, 41H        ;次次高位为0,先看次高位是否为不亮

               SUBB       A, #0AH

                JNZ         JJ2

                MOV       42H, #0AH     ;次高位不亮,次次高位也不亮

 JJ2:            MOV       43H, R0

                POP        B

                POP        PSW

                POP        ACC

                RET

;*************************2字节无符号数乘法程序**************************

;R7R6R5R4≤R3R2×R1R0

MUL2BY2:        CLR         A

                MOV        R7, A

                MOV        R6, A

                MOV        R5, A

                MOV        R4, A

                MOV        46H, #10H

MULLOOP1:       CLR        C

                MOV        A, R4

                 RLC        A

                 MOV        R4, A

                 MOV        A, R5

                 RLC        A

                 MOV        R5, A

                 MOV        A, R6

                 RLC        A

                 MOV        R6, A

                 MOV        A, R7

                 RLC        A

                 MOV        R7, A

                 MOV        A, R0

                 RLC        A

                 MOV        R0, A

                 MOV        A, R1

                 RLC        A

                 MOV        R1, A

                 JNC        MULLOOP2

                 MOV        A, R4

                 MOV        A, R2

                 MOV        R4, A

                 MOV        A, R5

                 MOV        A, R3

                 MOV        R5, A

                 MOV         A, R6

                 ADDC       A, #00H

                 MOV         R6, A

                 MOV         A, R7

                 ADDC       A, #00H

                 MOV        R7, A

MULLOOP2:        DJNZ       46H, MULLOOP1

                 RET

;********************4字节/2字节无符号数除法程序*********************

;R7R6R5R4/R3R2=R7R6R5R4(商)…………R1R0(余数)

DIV4BY2:        MOV         46H, #20H

                MOV          R0, #00H

                MOV          R1, #00H

DIVLOOP1:       MOV           A, R4

                RLC           A

                MOV           R4, A

                MOV           A, R5

                RLC           A

                MOV           R5, A

                MOV           A, R6

              RLC            A

              MOV            R6, A

              MOV            A, R7

              RLC            A

              MOV            R7, A

              MOV            A, R0

              RLC            A

              MOV            R0, A

              MOV            A, R1

              RLC            A

              MOV            R1, A

              CLR            C

              MOV            A, R0

             SUBB            A, R2

              MOV            B, A

              MOV            A, R1

              SUBB           A, R3

              JC             DIVLOOP2

              MOV            R0, B

              MOV            R1, A

DIVLOOP2:     CPL            C

              DJNZ           46H, DIVLOOP1

              MOV             A, R4

              RLC             A

              MOV             R4, A

              MOV             A, R5

              RLC             A

              MOV             R5, A

              MOV             A, R6

              RLC             A

              MOV             R6, A

              MOV             A, R7

              RLC             A

              MOV             R7, A

              RET

             END

 下载本文

显示全文
专题