您的当前位置:首页正文

设计超声波测距仪报告书非常详细

2024-01-12 来源:客趣旅游网
南昌航空大学学士学位论文

目 录

第一章 绪论 .......................................... 1

1.1 课题背景及意义 ............................................ 1 1.2 国内外发展状况和需改进的地方 .............................. 1 第二章 超声波测距原理 ................................ 4

2.1 超声波简介 ................................................ 4 2.2 超声波传感器 .............................................. 5 2.3 超声测距原理 .............................................. 6 2.4 盲区处理 .................................................. 8 第三章 超声波测距系统硬件设计方案论证 ............... 9

3.1 方案一 .................................................... 9 3.2 方案二 .................................................... 9 3.3 方案三 ................................................... 10 3.4 方案确定 ................................................. 10 第四章 超声波测距系统硬件设计思路及调试 ............. 12

4.1 设计要求 ................................................. 12 4.2 超声波测距系统的结构框图 ................................. 12 4.3 各功能模块电路介绍 ....................................... 13

4.3.1 超声波产生电路..................................... 13 4.3.2 驱动电路模块....................................... 14 4.3.3 接收放大电路模块................................... 15 4.3.4 峰值检波模块....................................... 16 4.3.5 电压比较器模块..................................... 17 4.3.6 电平转换模块....................................... 18 4.3.7 温度测量模块....................................... 19 4.3.8 键盘显示电路....................................... 21 4.4 超声波测距系统硬件调试 ................................... 25 第五章 超声波测距系统软件设计及调试 ................. 27

5.1 超声波测距系统程序设计流程 ............................... 27

5.1.1 主程序设计流程..................................... 27 5.1.2 距离计算流程...................................... 28

1

南昌航空大学学士学位论文

5.2 软件调试 ................................................. 29

第六章 超声波测距系统最终调试 ....................... 30 第七章 总结 ......................................... 32

7.1 研究结论 ................................................. 32 7.2 本系统的不足和需改进的地方 ............................... 32 参考文献 ............................................ 33 致谢 ................................................ 34 附录A 超声波测距系统硬件电路图 .................... 34附录B 超声波测距系统软件程序 ...................... 35

2

南昌航空大学学士学位论文

第一章 绪论

1.1 课题背景及意义

利用超声波测量己知基准位置和目标物体表面之间距离的方法,称为超声波测距法。

利用超声波作为定位技术是蝙蝠等一些无目视能力的生物作为防御及捕捉猎物生存的手段,也就是由生物体发射不被人们听到的超声波(20kHz以上的机械波),借助空气媒质传播由被待捕捉的猎物或障碍物反射回来的时间间隔长短与被反射的超声波的强弱判断猎物性质或障碍位置的方法。由于超声波的速度相对于光速要小的多,其传播时间就比较容易检测,并且易于定向发射,方向性好,强度好控制,因而人类采用仿真技能利用超声波测距。超声波测距是一种利用声波特性、电子计数、光电开关相结合来实现非接触式距离测量的方法。它在很多距离探测应用中有很重要的用途,包括非损害测量、过程检测、机器人检测和定位、以及流体液面高度测量等。

超声波测距在某些场合有着显著的优点,因为这种方法是利用计算超声波在被测物体和超声波探头之间的传输来测量距离的,因此它是一种非接触式的测量所以它就能够在某些特定场合或环境比较恶劣的环境下使用。比如要测量有毒或有腐蚀性化学物质的液面高度或高速公路上快速行驶汽车之间的距离。

目前基于超声波精确测距的需求也越来越大,如油库和水箱液面的精确测量和控制,物体内气孔大小的检测和机械内部损伤的检测等。本文结合超声波精确测距的需要,分析了影响超声波测距精确的多种因素,进行了系统的硬件设计和软件设计,来有效提高超声波测距系统的精度。

1.2 国内外发展状况和需改进的地方

一般认为,关于超声波的研究最初起始于1876年F.Galton的气哨实验。这些年来 ,随着超声波技术研究的不断深入,在加上其具有的高精度、无损、非接触等优点,超声波的应用变得越来越普及。目前已经广泛地应用在机械制造、电子冶金、航海、宇航、石油化工、交通等工业领域。此外在材料科学、医学、生物科学等领域中也占据重要地位。

1

南昌航空大学学士学位论文

国外在提高超声波测距方面做了大量的研究,国内一些学者也作了相关的研究。对超声波测距的精度主要取决于所测的超声波传输时间和超声波在介质中的传输速度,二者中以传输时间的精度影响较大,所以大部分文献采用降低传输时间的不确定度来提高测距精度。目前相位探测法和声谱轮廓分析法或二者结合起来的方法是主要的降低探测传输不确定度的方法。

《超声波测距精度的探讨》[1]一文中提到测量回波用到门限值的方法来测量回波的真实时间。选取一定的门限值,接收回波的包络线大于门限值时确定为回波到达的时间。回波的第一个周期的峰值作为测量标准,以该值的75%作为门限值,测出时间,由此计算出超声波真实的到达时间。此方法对第3个波近似计算为波峰的75%,所以对精度要求较高的测量并不足够。

《超声波测距误差分析》[2]认为收发换能器分离比一体化更减少盲区距离。提出减小盲区的改善措施可以减少发射波串的长度,发射波频率增高,波长减小,可以减少绕射,还可以用喇叭口形的聚波器束窄方向瓣。这些措施也有一定限度,例如:发射波串的长度过短将使得发射换能器激振达不到最大值或不能被激振。发射波频率加高受到换能器特性限制,同时,发射波频率加高使超声波在媒介中的衰减大幅度加剧,使作用距离下降。

《高精度的超声波测距系统在移动机器人导航方面的应用》提出一种比较有效的测量回波方法。它对回波包络线进行峰值检测作为回波时间点。传统的测量方法,以接收信号的幅值超过系统所规定的阈值时的时刻作为停止计时信号。时间检出点是随距离变化而变化的,这种“时间检出点”的变化就产生了距离测量的误差。针对回波信号的特点,采用峰值时间点检出方法,首先回波将经过放大、滤波后的回波信号进行线性包络检波,然后对检波的输出信号进行微分处理,最后对微分电路的输出进行零点交叉检测,即可得到回波信号的峰值时间,此时无论被测距离远近,即在回波信号包络线的峰值点。

《一种高精度超声波测距处理方法》[4]提出一种基于归一化包络曲线方程的抗起伏信号处理方法。处理步骤为:

1.用一定的检测方法计算出方程中的起伏参数: 2.根据包络方程推算出回波的理想前沿; 3.得到准确的声波传输时间; 4.乘声速除2即得距离。

这种方法从软件算法上计算回波时间点,过程过于复杂,有效性不清楚。不如

[3]

2

南昌航空大学学士学位论文

《高精度的超声波测距系统在移动机器人导航方面的应用》的方法简洁。且对于本系统指令响应要求高,单片机存储空间有限,较复杂的算法并不适用于本系统。

《用于微地形探测的超声波测距系统》通过软件编程和硬件方法,在绕射波有效阶段封闭CPU中断申请,躲避有效干扰。此方法能解决超声波绕射问题,但是会增加盲区范围。此文论述到处理这种串绕信号一般有两种方法:(1)通过软件编程从开始发射到虚假反射波结束时清零,从而使其不会向CPU发出中断申请,即可有效躲避干扰。(2)采用74LS74A构成双D触发器,使比较后的信号仅在超声波反射时间内输出为高电平,在从发射到接收到虚假反射波这段时间内置0,从而在接收到串绕信号时也不会发出中断请求。通过这两种方法都能够有效地躲过串绕信号,但同时也会形成盲区,系统的盲区约为lOOmm左右。对于本系统并不适用。

《自动增益电路在超声波测距系统中的应用研究》[6]提出自动增益补偿电路使误差控制在0.2mm至0.5mm之间,并减少测距盲区,盲区范喇为6-7cm。此方法对提高精度和减少盲区都较有效。在软件编写的动态改变发射功率时可以作参考。

简而言之,综述研究现状,虽然某些研究方法仍存在不足和困难的地方,但也可看到一些优秀的测量方法,应取其精华,去其糟粕。但总的来说,论文中系统的盲区范围较大,一般有lOcm左右距离,个别较好的有4-6cm距离。

根据超声波测距的原理,设计了以51单片机为核心的低成本、高精度、微型化数字显示超声波测距系统,考虑到单片机测量精度受到内部主振频率或参考频率的限制,从硬件电路设计角度出发,采用了一种单片机外部硬件扩展计数电路,通过升高计数的参考频率来提高了测距系统的计时精度,以最终提高了系统的计时精度。经过实验分析,效果良好。为了进一步提高超声波测距仪的测量精度和分辨力,又进行了设计改进,采取声速预置和媒质温度测量相结合的办法对声速进行修正,可有效地消除温度变化对精度的影响,从而提高了超声波往返时间的测量可靠性。

[5]

3

南昌航空大学学士学位论文

第二章 超声波测距原理

2.1 超声波简介

超声波简单的说就是音频超过了人类耳朵所能够听到的范围。一般而言是指声音超过了20KHz时称之为超声波。与光波不同,超声波是一种弹性机械波,它可以在气体、液体和固体中传播。因为电磁波的传播速度为3108m/ s,而超声波在空气中的传播速度为340m / s,其速度相对电磁波是非常慢的。超声波在相同的传播媒体里(如大气条件)传播速度相同,即在相当大的频率范围内声速不随频率变化,波动的传播方向与振动方向一致,是纵向振动的弹性机械波,它是借助于传播介质的分子运动而传播的,波动方程描述方法与电磁波是类似的:

AA(x)•coswtkx (2.1)

[7]

A(x)A0ex (2.2)

在公式中,A(x)为振幅,Ao为常数,w为圆频率,t为时间,x为传播距离,k=2∏/λ为波数,A为波长,a为衰减系数。衰减系数与声波所在介质及频率的关系为:

af2 (2.3) 式中,a为介质常数,f为振动频率。在空气里,a=21013 s/cm,当振动的声波

2

频率f= 40kHz(超声波)代入式(2.3),可得a= 3.2104/cm,即1/α=31m;它的物理意义是:在(1/a)长度上,平面声波的振幅衰减为原来的e分之一,由此可以看出,频率越高,衰减得越厉害,传播的距离也越短。声波在空气媒质里传播,因空气分子运动摩擦等原因,能量被吸收损耗。考虑实际工程测量要求,在设计超声波测距仪时,选用频率f=40kHz的超声波。 二 超声波的传播速度

纵波、横波及表面波的传播速度取决于介质的弹性常数以及介质的密度。 1. 液体中的纵波声速:

k C1 (2.4)

2.气体中的纵波声速: C2 (2.5) 式中: K--体积弹性模量 --- 热容比 P--静态压力 ρ--密度

例:T=0 °C,超声波在空气中的传播速度 C1=331.45m/s,

4

南昌航空大学学士学位论文

C=331.45+0.61T (m/s) (2.6) 式中 T:°C

2.2 超声波传感器

超声波传感器是近年来出现的用于超声控制元件,它分为发射器和接收器。发射器将电磁振荡转换为超声波向空间发射,接收器将接收的超声波进行声电转换变为电脉冲信号。实质上是一种可逆的换能器,即将电振荡的能量转变为机械振荡,形成超声波;或者由超声波能量转换为电振荡。常用的传感器有T40-XX和R40-XX系列,UCM-40T,UCM-40R等,其中T代表发射传感器,R代表接收传感器,40为中心频率40KHz。T/R40的特征参数如表1所示。

表1 T/R40的特征参数图

型号 中心频率 发射电压 接收灵敏度 -6DB指向 电容 允许输入电压 T/R40-16 40±1KHz 大于115DB 大于-64DB/V/ubar 50deg 2400±25% 20V 总体上讲超声波发生器可以分为两大类:1)使用电气方式产生超声波;2)是用机械方式产生超声波。电气方式包括压电型,磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各有不同,因而用途也各不相同。目前较为常用的是压电式超声波发生器,其又可分为两类: (1)顺压电效应:

某些电介物质,在沿一定方向上受到外力作用而变形时,内部会产生极化现象,同时在其表面上产生电荷;当外力去掉后,又重新回到不带电的状态,这种将机械能转换为电能的现象称顺压电效应(超声波接收器的工作原理)。 (2)逆压电效应:

在电介质的极化方向上施加电场,会产生机械变形,当去掉外加电场时,电介质的变形随之消失,这种将电能转换为机械能的现象称逆压电效应(超声波发射器的工作原理)。

5

南昌航空大学学士学位论文

2、 工作原理

当40KHZ的脉冲电信号加在超声波发射器上,由压电陶瓷激励器和谐振片转换成机械振动,经锥形辐射器将超声振动信号以疏密波的形式向外发射出去。(锥形辐射器控制超声波的发射角度)

接收器在收到由发射器传来的超声波后,使内部的谐振片谐振,通过声电转换作用将电能转换为电脉冲信号,由于该电脉冲的信号幅度很小(μV级)经信号放大器放大,最后驱动执行器使电路工作。

常用的超声波传感器的谐振频率(即中心频率)为23KHz,40KHz,75KHz,200KHz,400KHz等,谐振频率高,在相同发射功率的前提下检测距离短,但分辨力提高。

2.3 超声测距原理

测距是立足于声速在既定的均匀媒介传播速度有一恒定数值,不随声波频率变化的特点。超声波测距的关键是把声源由反射到返回的传播时间计量出来,若要求测距误差小于0.01 米,那么测量时间的误差必须小于30 微秒。因此,实现声波测距须避开直接测量时间的方法,才能获得实用的测长精度。

本文的硬件设计采用超声波往返时间检测法,其原理为:检测从超声波发射器发出的超声波(假设传播介质为气体),经气体介质的传播到接收器的时间即往返时间。往返时间与气体介质中的声速相乘,就是声波传输的距离。根据选择的超声波传感器的不同,其工作原理也相应有所不同。如收发一体的传感器,其工作原理图如图2.1所示;收发分体超声波传感器,其工作原理图如图2.2所示。根据图2.2通过测量发射与接受装置之间的距离 h 利用直角三角形可求得:

LSh222

2 (2.7)

而所测距离是声波传输距离的一半,即:(1)

LV*t

(2.8)

6

南昌航空大学学士学位论文

图2.1 收发一体式换能器工作原理图

图 2.2 超声波测距原理

在上式中,L 为待测距离,v 为超声波的声速,t 为往返时间(其中所测量的t为超声波走过2s路程所需的时间。但由于超声波的速度比较快,在测短距离的时候,将其作为超声波走过2L路程的时间)。若要求测距误差小于1cm,已知声速v=344m/s(20℃时),显然,直接用秒表测时间是不现实的。因此,实现超声波测距必须避开直接测量时间的方法,才能获得实用的测长精度。对超声波传播时间的测量可以归结到对超声波回波前沿的检测。检测脉冲计数法: 脉冲检测法是对有回波信号经检测电路产生的脉冲进行检测的方法。本文采用的是脉冲检测计数法。这种方法实现起来较包络检测方便,电路实现简单,精度也较高。实现的方法是当回波信号经放大处理后,进入比较器,调整好合适的阈值在比较器的输出端就会产生正负电平的变化,再通过三极管的截止和饱和的两种状态来产生高低电平的变化。利用查询或者中断的方法便可以检测出这些脉冲,便于测量出发射到接收到脉冲的时间。在本系统的软件设计过程中,采用的是查询方式来检测是否接收到了回波信号。

[9]

7

南昌航空大学学士学位论文

2.4 盲区处理

盲区处理是超声波测距的重要技术环节,盲区范围大小是衡量测距系统性能的重要指标。在利用超声波测量两点间的距离时,对近距离测量要求高,因此盲区处理更为关键。盲区的形成是为解决超声波自身绕射问题而延伸出的另一问题。虽然增大超声波换能器之间的距离能减少盲区范围,但是由于受整个系统体积所限,而且增大超声波换能器之问的距离使回波容易发散,所以本系统超声波换能器的之间距离要尽量缩小,有部分波未经反射物就直接进入到接收换能器,形成绕射现象。

8

南昌航空大学学士学位论文

第三章 超声波测距系统硬件设计方案论证

3.1 方案一

本方案使用的单片机是stc89c52,它经济易用,且片内有8K的ROM,便于编程。 在超声波产生电路的设计中,首先通过软件编程的方式由单片机的P0.0口来产生40KHz的脉冲信号,再经过三极管8050和变压器进行功率放大。在变压器副线圈上将电压10倍放大,这时在超声波传感器发射端上加载的正弦电压幅值约为100V来驱动超声波发射端UCM40T,发出40KHZ的脉冲波信号,且持续发射200us。

接收端采用与发射端配对的UCM40R,将超声波调制脉冲变为交变电压信号。在接收电路中设计了前置放大、带通滤波(中心频率f0=40KHz)、自动增益控制(AGC)电路和整形电路。前置放大前置放大、自动增益控制(AGC)电路把微弱回波信号放大了200倍以上,足够满足后面整形电路的需要;带通滤波电路为滤波效果比较理想的高Q值、窄宽带的二阶带通滤波器。由于超声波回波信号随着被测距离大小的变化,其幅值变化也很大, 必须经过增益控制, 以满足整形电路的要求。实现增益随时间呈指数变化的AGC电路有多种,设计了通过软、硬件结合的AGC电路,它是由可编程放大器AD620AN 、数字电位器MAX5400 结合单片机联合实现。

[9]

3.2 方案二

在此方案中,仍然采用stc89c52作为超声波测距系统的中心。但是采用555芯片来产生40KHz的超声波信号,并且通过单片机的一个I/O口来控制555芯片是否振荡。然而要想利用超声波测得的距离越远其发射功率也就需要更大,增大功率的方式有增大电流或是增大电压的方式。在驱动电路中采用的是非门CD4069构成推挽式的电流放大电路 ,通过提高CD4069的工作电压的方式来将电压增大,进而增大发射功率。

在超声波接收放大模块中,采用的是专用集成芯片CX20106A,这是一款红外线检波接收的专用芯片。内部电路由前置放大器、自动偏置电平控制电路、 限幅放大器、带通滤波器、峰值检波器和整形输出电路组成,可以利用它作为超声波检测电路。接收的回波信号先经过前置放大器和限幅放大器,将信号调整到合适的幅值;再经过带通滤波器滤波得到有用信号,滤除干扰信号;最后由峰值检波器和整形电

9

南昌航空大学学士学位论文

路输出到锁相环路,实现准确的计时[11]。

3.3 方案三

在此方案中,采用STC989C52单片机作为超声波测距的核心部分。在超声波产生电路中,主要是利用单片的I/O口P0.4来控制555芯片的4脚。当P0.4为低电平时,555芯片不工作;当P0.4为高电平时,555芯片构成了多谐振荡器从而在3脚输出40KHz的脉冲信号。在超声波发射电路中采用的是CMOS系列的与非门CD4069构成推挽式的反向放大电路,同时也可以通过加大CD4069的工作电压的方式来进一步增大发射功率。

在超声波接收放大部分,采用的一阶RC滤波电路和运放TL084构成的放大电路。由于超声波接收器接收的信号幅度为毫伏级,因此采用将接收到的信号先滤波后放大的处理方式。在放大电路的设计中,为了避免由于增益过大造成运放的自激振荡,而采用两级放大的方式,放大倍数为400多倍。然后经过峰值检波后转化为直流信号,在经过电压跟随器、电压比较电路和利用三极管的截止与饱和状态来获取所需要的电平送至单片机处理。

在超声波发射的同时,启动单片机内部的定时器T0用作计数方式,利用定时器T0的计数功能记录超声波从开始发射到接收到信号的时间。当接收到超声波的反射波时,接收电路的输出端就会产生一个负跳变,即在P0.1口将由高电平变为低电平,从而来停止T1计数,然后通过相应的计算来算出所测距离并显示。

3.4 方案确定

超声波测距系统从理论上说是发射电压从理论上说是越高越好,因为对同一只发射传感器而言,电压越高,发射的超声功率就越大,这样能够在接收传感器上接收的回波功率就比较大,对于接收电路的设计就相对简单一些。但是,每一只实际的发射传感器有其工作电压的极限值,即当工作电压超过了这个极限值之后,会对传感器的内部电路造成不可恢复的损害。发射部分的点脉冲电压很高,但是由障碍物回波引起的压电晶片产生的射频电压不过几十毫伏,要对这样小的信号进行处理就必须放大到一定的幅度。最终达到对回波进行放大检测,产生一个单片机能够识别的中断信号作为回波到达的标志。

在方案一中,采用单片机的I/O口来做超声波的产生电路,在发射超声波的同

10

南昌航空大学学士学位论文

时将无法即时开启计数器来准确计算超声波从发射到接收所用的时间,这样将会带来较大的误差。另外采用变压器的方式来增大发射功率,使得加载在超声波传感器的电压为100V,而且在超声波接收电路中采用自动增益的方式,这样可以利用超声波来近距离测量以及测量较远的距离。但是在本课题的技术指标中要求的距离为4cm-4m,当采用此方案时,其发射的功率远远超出所需要的功率,造成性价比下降,而且U=100V可能超过了超声波传感器工作电压的极限值,将对传感器内部造成损伤。同时也可能会给使用者带来造成触电的危险,而且变压器的体积比较大,在使用时也会带来许多不便。

在方案二中,通过使用单片机的I/O口来控制555芯片工作与否的方式来发射超声波,这就使得在计数时能够获得比方案一更准确的数据。另外还使用了专用集成芯片CX20106A和锁相环电路,使得在频率上能够很好的锁定f0=40KHz的信号,抗干扰的能力较强,但是在采用这种方案将会大大提高设计成本。而且使得设计的硬件系统更加的复杂。

方案三在超声波发射电路中采用了和方案二相同的电路,只是在超声波接收部分的电路上有很大的不同。在此方案中,考虑到超声波传感器的一些特性(即只有在40KHz左右的信号能够通过传感器,其它频率信号其衰减较快),因此在滤波电路中,只是采用RC电路构成滤波电路。在信号放大模块的电路中,考虑到传感器所接收到的信号幅度为毫伏级以及运放在增益过大时容易造成自激振荡的特点,所以在设计时采用了两级放大的模式,最终放大400多倍,而且直接通过硬件就可以实现,使得在设计上比方案二较为简单。另外,通过由二极管和电容构成峰值检波电路以及运放和三极管构成电平转换电路,其实现上较为简单,成本也较低。在此方案中要求在峰值检波时要考虑延时时间的合理取值,而且在运放选择时一定要使用高速型运放,这样当接收到回波信号时,就能很快转换好,使得测量的时间较为准确。

在本系统设计过程中,经过综合考虑和比较后,最终采用了方案三来实现超声波测距硬件系统的设计。

11

南昌航空大学学士学位论文

第四章 超声波测距系统硬件设计思路及调试

4.1 设计要求

利用超声波换能器和单片机设计一种非接触式测距仪,该装置的测量距离为4CM---4M,并且具有温度补偿、测量准确、性能可靠性等优点。

1、掌握超声波传感器的工作原理并设计超声波发射器与接收器的工作电路。2、测量距离为4CM---4M,测量误差≤1CM。 3、温度补偿范围:-20 -- 500C。 4、实时显示实测距离、温度。

4.2 超声波测距系统的结构框图

通过对方案的比较和论证及设计要求的领会,将超声波测距仪硬件设计电路分成了:超声波产生电路模块、驱动电路模块、超声波接收放大电路模块、峰值检波模块、电压比较模块、电平转换、温度补偿模块、数据采集系统控制模块和数码显示这九个模块来实现。最后制订了本次毕业设计超声波测距系统的硬件结构框图,如图4.1所示:

信号接收 超声波 接收 接收器 及放大电路 峰值检波 及电平变换 单 片 机 数 据 采 集 系 统 控 制 渡越 时间 计时 超声波 驱动发射电路 按键控制 发射器 发射 温度测量电路 温度 补偿 图4.1 超声波测距系统的基本组成

数 码 显 示 12

南昌航空大学学士学位论文

4.3 各功能模块电路介绍

4.3.1 超声波产生电路

在本系统中利用555定时器构成多谐振荡器产生40KHz的超声波。图4.2为555定时器构成的多谐振荡器,复位端4由单片机的P0.4口控制,当单片机给低电平时,电路停振;当单片机给高电平时电路起振。接通电源后,电容C2来不及充电,6脚电压Uc=0,则U1=1,555芯片内部的三极管VT处于截止状态。这时Vcc经过R3和R2向C2充电,当充至Uc=2/3Vcc时,输出翻转U1 =0,VT导通;这时电容C2经R2和VT放电,当降至Uc=1/3Vcc时,输出翻转U1=1。C2放电终止、又重新开始充电,周而复始,形成振荡。其振荡周期与充电时间tPH和放电时间tPL有关,振荡周期为:

T=tPH+tPL0.7R3+2R2C2 (4.1)

1.43 (4.2)

f1140KHzTtPHtPLR32R2C2

由公式4.2可知,555多谐振荡器的振荡频率由R2,R3,C2来确定

[12]

。在电路设

计时,先确定C2,R2的取值,即C2=3300pf,R2=2.7 KΩ。再将C2和R2的值带入公式4.2中可知:

R31.432R2C2•f

1.4322.710312333001040105.4103为了方便在实验过程中使得555芯片的3脚输出40KHz的信号,在这里将其用10 KΩ的电位器代替。

为了增大U1的输出功率,将555芯片的8脚接+12v的电压,同时将其复位端4接高电平,使用示波器观察555芯片3脚的输出波形,如图4.3所示。通过调节电位器R3的阻值,使其输出波形的频率为40KHz,这样就完成了超声波产生电路。

13

南昌航空大学学士学位论文

图4.2 555构成的多谐振荡器电路

图4.3 555芯片3脚的输出波形

4.3.2 驱动电路模块

超声波驱动电路是由门电路组成的传感器振荡发射电路, 其输人信号由555定时器构成的多谐振荡器提供。超声波发射器由5个成对的CMOS反相器CD4069 驱动。输出级实际上属于全桥式接法, 使发射器有效电压增倍,电路图如图4.4所示。 在暂停发送期间,电容C3用于阻塞输人电流中的直流成分, 起到保护超声波发射器的作用。 为使发送器得到最大的能量,CD4069采用了12V电压驱动。加在超声波发射器上的信号应为0~+12V 的脉冲信号。每路信号经过两个并联的非门是为了增加电流驱动能力。非门采用CMOS产品,因为其功耗小,抗干扰能力强, 驱动能力强 。该电路原理简单, 连线方便,价格又相对便宜

[13]

。同时通过在输入端加一上拉电阻

R4来增大40KHz方波信号的电流,从而也增大了发射功率。上拉电流的大小为:

14

南昌航空大学学士学位论文

12 I1101031.2mA图4.4 超声波驱动电路

4.3.3 接收放大电路模块

超声波接收传感器通过压电转换的原理,将由障碍物返回的回波信号转换成电信号,由于该信号幅度较小(几到几十毫伏),因此须由低噪声放大、40kHz带通滤波电路将回波信号放大到一定幅度,使得干扰成分较少,其电路图如图4.5所示。在此电路中,为了防止在超声波接收器上始终加有一直流信号让其工作导致传感器的寿命缩短,从而加上一隔值电容C4,同时C4和R5也构成了一滤波电路。

在此电路中,放大部分采用的是高速型运放TL084。在综合考虑了反相放大器、同相放大器和测量放大器的优缺点后,最终选择了同相放大电路。因为同相放大电路的理想输入阻抗Rin=∞,理想输出阻抗Rout=0,其带负载能力较强等诸多因素,所以选择此电路。在此电路中,根据同相放大器的闭环增益公式:

(4.3) Af1RfRr 因为接收到的信号幅度为几到几十毫伏,所以需要将其放大400多倍使得其接收到的40KHz信号不会被干扰信号给掩盖。为了防止引起运算放大器的自激振荡,在第一级放大电路中,R7取值为470KΩ,R8取值为10 KΩ,其增益放大:

Af11R7R814701031010348

15

南昌航空大学学士学位论文

在第二级放大电路中,R11和R12的取值分别为100 KΩ、10 KΩ,其放大增益:

Af21R11R1211001031010311

其两级增益:

AfAf1Af24811528。

同时根据公式4.4,计算出同相放大器的平衡电阻R6和R10,在这里R6和R10的取值均为10 KΩ。同相放大器平衡电阻公式为:

RpRfRrRfRr (4.4)

由公式4.4可知,在图4.5中,C5和电阻R9构成了一阶滤波电路。

图 4.5 接收放大电路

4.3.4 峰值检波模块

当信号经过了接收放大模块电路后,其输出信号V2为40KHz的交流信号。因为交流信号无法由单片机来处理,所以应将交流信号转化为直流信号。在硬件的设计中,主要是通过电解电容C7的充放电来将40KHz的交流信号转为直流信号,在本系统中采用的是由检波二极管IN60和1uf的电容来实现该功能。通过公式4.5和4.6来分别计算其充电时间Г1和放电时间Г2 。同时要求其放电时间Г2 ≥25us,这样才能保证峰值检波电路将40KHz的交流信号转化成直流信号。 其峰值检波电路如图4.6所示。

1RD2•C (4.5) 11201106120s

16

南昌航空大学学士学位论文

2(RD1RD2)•C (4.6)

21201201106240s25s满足设计要求。

(其中RD1,RD2分别为二极管的正向导通电阻值为120Ω)

图4.6 峰值检波电路

4.3.5 电压比较器模块

超声波传感器所接收到的信号经过放大和峰值检波后变为直流信号,为了判断其

是否接收到的回波信号。同时因为比较器不需要相位补偿,故适用于高速工作。为了判断超声回波信号前沿以进行渡越时间t 的测定而设置一定的门限电压,但由于每次测距的回波信号的峰值不同,当选取一定的门限电压时,如果门限值设置过高,会造成信号的漏触发,但也不能设置过低,否则会造成噪声信号的误触发。由于超声波在空气中传输时不可避免引入干扰,则比较基准电平时利用电位器调节电压,消除干扰。经过多次测量并使用示波器观察峰值检波电路的输出电平,最终将门限电压设置为1V,其实验电路如图4.7所示。在此电路中,采用TL084中的其他两个运算放大器。当超声波接收到信号时其比较器的输出电压V4为+12V;当没有接收到信号时,其比较器的输出电压V4为-12V。

17

南昌航空大学学士学位论文

图4.7 电压比较电路

4.3.6 电平转换模块

当超声波传感器接收端接收到信号时,其比较器的输出电压为+12V;当没有接收到信号时,其比较其的输出电压为-12V。因为单片机STC89C52的高低电平为0~6V左右,所以比较器输出的电压不能直接送给单片机去处理。因此可以通过采用三极管的截止与饱和两种状态将±12V的电压信号转化为单片机能够处理的信号,其设计电路如图4.8所示,在此电路中Vcc接5V电源。当超声波传感器的接收端接收到回波信号时,其V3的电压为+12V,这时三极管9013处于饱和状态,P0.1口的电压为低电平(0.3V左右),发光二极管点亮;当没有接收到回波信号时,其V3的电压为-12V,这时因为三极管的Ube=-12V,所以三极管处于截止状态,此时P0.1口为高电平(3.7V左右),发光二极管熄灭。其中电阻R15和R16均为限流电阻,其电流值为:。

I25101030.5mA

图4.8 电平转换电路

18

南昌航空大学学士学位论文

4.3.7 温度测量模块

在常温下,超声波的传播速度为340m / s,但其传播速度V易受到空气中温度、湿度、压强等因素的影响,其中温度的影响最大。由式子2.6可知温度每升高1℃,声速增加约为0.61m / s。表2为超声波在不同温度下的波速值。

表2 波速与温度关系表 温度(℃) 波速(m/s) -30 313 -20 319 -10 325 0 332 10 338 20 344 30 350 40 388 由表2可见温度对于超声波测距系统的影响是不可忽略的。为了得到较为精确的测量结果,必须对波速进行温度补偿。本文采用DS18B20检测现场温度,用以实现实际波速的校准。

目前,大多数温度测控系统在进行温度测量时,通常采用模拟式温度敏感元件:如热电阻、热电偶、红外测温仪等,将温度转化为电信号,经过信号放大电路放大到合适的范围,再由A /D转换器转换为数字量。此种形式的温度测量结构复杂,调试繁锁,测量精度易受元器件参数影响。

DS18B20是Dallas公司开发的12W ire (单总线)高精度数字式半导体温度传感器。它具有节省系统I/O口线资源,结构简单,成本低廉,精确度高,便于总线扩展和维护等诸多优点。12W ire (单总线)是Dallas半导体公司近年推出的新技术。他将数据线、控制线、地址线合为1根信号线。单总线适用于单个主机系统,能够控制一个或多个从机设备。DS18B20抗干扰能力强,转换精度高,使用时无需标定或调试,与微处理器的接口电路简单,可方便地实现多点组网测温,给硬件设计工作带来了极大的方便。另外采用DS18B20能缩短开发周期,有效地降低成本,简化系统设计,扩展方便、占用系统I/O资源少,在多点温度检测中具有极为广泛的应用前景。

DS18B20提供9~12位精度的温度测量,温度测量范围为- 55~ + 125℃,在- 10~85℃范围内,测量分辨率为±0.5℃,增量值最小可为0.625℃,电源供电范围3.0~5.5V。将测量温度转换为12位的数字量最大需要750ms,而且DS18B20有2种供电方式:外部供电方式和寄生电源方式。采用信号线寄生供电,不需额外的外部供电,在需要远程温度探测和空间受限的场合特别有用。每个DS18B20有唯一的64位序列号,这使得可以有多个DS18B20同时在一条单总线上工作。

DS18B20的测温原理如图4.9所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给计数器1,高温度系数晶振随温度变化其

19

南昌航空大学学士学位论文

振荡频率明显改变,所产生的信号作为计数器2的脉冲输入,图中还隐含着计数门。当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将- 55 ℃所对应的基数分别置入计数器1和温度寄存器中,计数器1和温度寄存器被预置在- 55 ℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时温度寄存器的值将加1,计数器1的预置将重新被装入,重新开始对低温度系数晶振产生的脉冲信号进行计数。如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图4.9中的斜率累加器用于补偿和修正测温过程中振荡器温度特性的非线性,以产生高分辨率的温度测量。其输出用于修正计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。

另外,由于DS18B20单总线通信功能是分时完成的,因此他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20 (发复位脉冲) →发ROM功能命令→发存储器操作命令→处理数据。

预置 计数器1 预置 斜率累加器 计数比较器 低温度系数振荡器 增 加 高温系数振荡器 减到0 温度寄存器

计数器2 图4.9 DS18B20测温原理图

减到0停止 超声波测距系统采用STC89S52作为控制核心,其测温系统采用的是DS18B20芯片通过P1.7口将现场温度及测量结果显示在数码管上。P1.7接数据总线,控制DS18B20进行温度转换和传输数据,同时数据总线上还要接4.7K左右的上拉电阻。本系统对DS18B20采用外部供电,从VDD引脚接入一个外部电源。其优点在于I/O线不需要强上拉,而且总线控制器无需在温度转换期间一直保持高电平。这样在转换期间可以允

20

南昌航空大学学士学位论文

许在单线总线上进行其他数据传输,硬件电路如图4.10所示。

图4.10 温度测量电路

4.3.8 键盘显示电路

HD7279 是一片具有串行接口的,可同时驱动并连接64个矩阵按键的智能显示驱动芯片。HD7279 内部含有译码器,可直接接受BCD 码或16进制码,并同时具有两种译码方式。此外,HD7279A 还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等,并且具有片选信号,可方便地实现多于8 位的显示或多于64键的键盘接口,HD7279的引脚说明如表3所示。

HD7279A的控制指令分为二大类:纯指令和带有数据的指令。 1.复位(清除)指令A4H

当HD7279A收到该指令后,将所有的显小清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。

21

南昌航空大学学士学位论文

表3 HD7279引脚说明 引脚 名称 说明 1,2 VDD 正电源 3,5 NC 无连接,必须悬空 4 VSS 接地 片选输入端,此引脚为低电平时,可向芯片发送指令及读取6 CS 键盘数据 同步时钟输入端,向芯片发送数据及读取键盘数据时,此引7 CLK 脚电平上升沿表示数据有效 串行数据输入输出端,当芯片接收指令时,此引脚为输入端;当读取键盘数据时,此引脚在‘读’指令最后一个时钟的下8 DATA 降沿变为输出端 按键有效输出端,平时为高电平,当检测到有效按键时,此9 KEY 引脚变为低电平 10-16 SG-SA 段g-段a驱动输出 17 DP 小数点驱动输出 18-25 DIG0-DIG7 数字0-数字7驱动输出 26 CLKO 振荡输出端 27 RC RC振荡器连接端 28 RESET 复位端 2.下载数据但不译码(如表4所示)

表4 下载数据的控制字和数据存放

其中,a2 , a 1 , a0为位地址(参见‘下载数据A‘译码’指令),A-G和DP为显小数据,分别对应7段LED数码竹的各段。数码竹各段的定义见下图。当相应的数据位为‘1’时,该段点亮,否则不亮。 3.闪烁控制88H (如表5所示)

表5 闪烁控制字的存放

此命令控制各个数码竹的闪烁属性。d1- d8分别对应数码竹1-8,0=闪烁,1=不闪烁。开机后,缺省的状态为各位均不闪烁。 4.读键盘数据指令15H(如表6所示)

22

南昌航空大学学士学位论文

表6 键盘数据指令存放

该指令从HD7279A读出当前的按键代码。与其它指令不同,此命令的前一个字节00010101B为微控制器传送到HD7279A的指令,而后一个字节d0-d7则为HD7279A返回的按键代码,其范围是0-3FH(无键按下时为OxFF)。此指令的前半段,HD7279A的DATA引脚处于高阻输入状态,以接受来自微处理器的指令;在指令的后半段,DATA引脚从输入状态转为输出状态,输出键盘代码的值。故微处理器连接到DATA引脚的I/O 口应有一从输出态到输入态的转换过程。

当HD7279A检测到有效的按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束。在此期间,如果HD7279A接收到‘读键盘数据指令’,则输出当前按键的键盘代码;如果在收到‘读键盘指令’时没有有效按键,HD7279A将输出FFH(11111111B)。

HD7279A采用串行方式与微处理器通讯,串行数据从DATA引脚送入芯片,并由CLK端同步。当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入HD7279A的缓冲寄存器。

HD7279A的指令结构有二种类型:1、不带数据的纯指令,指令的宽度为8个B IT,即微处理器需发送8个CLK脉冲。2、带有数据的指令,宽度为16个BIT,即微处理器需发送16个CLK脉冲。3、读取键盘数据指令,宽度为16个B IT,前8个为微处理器发送到HD7279A的指令,后8个BIT为HD7279A返回的键盘代码。执行此指令时,HD7279A的DATA端在第9个CLK脉冲的上升沿变为输出状态,并与第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令,其串行接口的时序如图4.11所示。

HD7279A应连接共阴式数码管。应用中,无需用到的键盘和数码管可以不连接,省去数码管或对数码管设置消隐属性均不会影响键盘的使用。 如果不用键盘,则典型电路图中连接到键盘的8只10K电阻和8只100K下拉电阻均可以省去。如果使用了键盘,则电路中的8只100K下拉电阻均不得省略。除非不接入数码管,否则串入DP及SA-SG连线的8只200。电阻均不能省去。

23

南昌航空大学学士学位论文

图4.11 串行接口的时序图

实际应用中8只下拉电阻和8只键盘连接位选线DIGO-DIG7的8只电阻(以下简称位选电阻),应遵从一定的比例关系,下拉电阻应大于位选电阻的5倍而小于其50倍,典型值为10倍;下拉电阻的取值范围是10K-100K,位选电阻的取值范围是1K-10KΩ在不影响显小的前提下,下拉电阻应尽可能地取较小的值,这样可以提高键盘部分的抗干扰能力。

因为采用循环扫描的工作方式,如果采用普通的数码管,亮度有可能不够,采用高亮或超高亮的型号,可以解决这个问题。数码管的尺寸,亦不宜选得过大,一般字符高度不宜超过1英寸,如使用大型的数码管,应使用适当的驱动电路。

HD7279A需要一外接的RC振荡电路以供系统上作,其典型位分别为R=1.5KΩ,C=15pF。如果芯片无法正常上作,请首先检查此振荡电路。在印刷电路板布线时,所有元件,尤其是振荡电路的元件应尽量靠近HD7279A,并尽量使电路连线最短。

HD7279A的RESET复位端在一般应用情况下,可以直接与正电源连接,在需要较高可靠性的情况下,可以连接一外部的复位电路,或直接由MCU(单片机)控制。在上电或RESET端由低电平变为高电平后,HD7279A大约需要经过18-25MS的时间才会进入正常工作状态。上电后,所有的显示均为空,所有显示位的显示属性均为‘显示’及‘不闪烁’。当有键按下时,KEY引脚输出变为低电平,此时如果接收到‘读键盘’指令,HD7279A将输出所按下键的代码。键盘代码的定义,请参阅图2

24

南昌航空大学学士学位论文

及典型应用电路图,图中的键号即键盘代码,图中代码以10进制表示。如果在没有按键的情况下收到‘读键盘’指令,HD7279A将输出FFH(255)。程序中,尽可能地减少CPU对日D7279A的访问次数,可以使得程序更有效率。

因为芯片直接驱动LED数码竹显小,电流较大,目‘为动态扫描方式,故如果该部分电路电源连线较细较长,可能会引入较大的电源噪声干扰,将HD7279A的I1,负电源端上并入去耦电容可以提高电路的抗干扰能力。

注意:如果有2个键同时按下,HD7279A将只能给出其中一个键的代码,因此HD7279A不适于应用在需要2个或2个以上键同时按下的场合。

图4.12 HD7279键盘及显示电路

在电路连接中将单片机的P1.0~P1.2分别接7279的片选端、时钟输入端、串行数据输入/输出端。由于按键的编程采用的是查询的方式,按键有效输入端可以不接。

4.4 超声波测距系统硬件调试

通过对系统的各个模块电路进行检测,发现无误后将其按硬件结构框图连接起

25

南昌航空大学学士学位论文

来。首先将555芯片的复位端4脚接高电平,用示波器观察其输出端3脚的波形,发现其输出波形的尖峰很大。在检查了发射部分的电路后,在电源两端加上一个0.1uf和一个22uf的电解电容。通电再次用示波器观察555多谐振荡器的输出,发现其尖峰明显减少,其输出波形如图4.3所示。其次通过调节R3的电阻值,使得其输出脉冲的频率为40KHz。在调好了超声波产生电路后,用示波器观察超声波传感器发射端的波形,发现其两端的波形的频率为40KHz。

在调好超声波发射电路后,接下来调超声波接收部分的电路。首先通过用函数信号发生器在超声波传感器的接收端输入一幅度为50mv,频率为40KHz的正弦信号,然后用示波器观察一级放大后和二级放大后的波形,发现其波形的幅度能够增大470倍。其次观察峰值检波后的信号波形,发现将交流信号整为直流后,其直流电压为12V左右波动。再调整R13的电阻值,使得比较器的基准电压为1V,同样观察信号经过比较器后的波形为+12V,发光二极管点亮,此时P0.1端输出的电压为低电平。

在确定超声波接收端的放大电路、峰值检波电路、电压比较电路和电平转换电路都能正常工作之后,将超声波发射端和超声波接收端的电路通电工作。首先,用书在离超声波传感器10cm将其挡住,检测第一级放大器的输入信号,发现能够正常工作,在检测第二级放大器的输入信号也能正常工作;其次检查峰值检波电路的输出信号,发现其变化较快,在1~12V内跳动,发光二极管能够点亮。然后,在将书远离超声波传感器,发现当将书离传感器30cm时,二极管熄灭了。检测各点的信号,发现超声波接收器没能接收到信号。检查发射端,仍然在发射超声波。最后将555芯片的工作电压提高到12V,非门CD4069的工作电压提高到12V,其测量距离增加。

26

南昌航空大学学士学位论文

第五章 超声波测距系统软件设计及调试

5.1 超声波测距系统程序设计流程

5.1.1 主程序设计流程

本系统以单片机STC89C52为核心(其晶振频率为6MHz),实现对各部分的控制和响应。本软件程序在keil µvision2软件编程环境下,根据超声波测距的公式2.8采用汇编语言将其分为主程序、温度测量及速度补偿子程序、滤波子程序、距离计算子程序和显示子程序子个模块,其中主程序完成超声波发射控制和计数功能。在这些程序中,以温度测量及速度补偿子程序和距离计算子程序为核心。

测距软件程序的基本流程:① 开机运行后显示友好画面HELLO;② 温度测量及速度补偿子程序;③判断是否按下了超声波发射按钮,若没有键按下则返回执行第②步;若按下,④ 将555多谐振荡器的复位端4脚置高电平发射超声波,开启计数器计时,待回波进入接收电路,经放大、比较和电平转换等硬件处理后输出一列负脉冲,送给单片机处理,停止发射超声波和T1计数并将计数值存储起来,然后返回从第④步开始执行,重复以上流程直到满足测量次数为止,并进行滤波处理(在其中通过延时20us的方式,对超声波测距进行盲区处理);在计数值经过滤波处理后,乘上计数脉冲的宽度及经过温度补偿后的超声波速度除以2来计算最后结果并将结果送显示,其主流程图如图5.1所示。

27

南昌航空大学学士学位论文

开始

7279初始化,存储单元和定时器初始化 调显示HELLO 测温度并显示,进行声速补偿 N 有按键否? Y 计数器清零,50H=6 发超声波并开始计数 延 时20us N 接收到回波? Y 关计数器和发射并存储计数值 N 50H=0? Y 数据进行滤波及距离运算 图5.1 主程序流程图

5.1.2 距离计算流程

在硬件设计过程中,将计数脉冲宽度设计为10us。按照设计要求其测量距离为4cm-4m,当测量距离为4m时,根据公式5.1可知,从超声波发射到接收所需时间t≈23255us(当环境温度T=25℃时),其T1的计数值为2325。因为一个字节所能存放的最大数为255,而T1的计数值远超过了一个字节所能存放的数值,所以需要用两个字节来存放一次计数值。

28

南昌航空大学学士学位论文

2L (5.1) V(其中L为测量的距离,V为超声波的传播速度,t为所需要的时间)。

由于每次的计数值需要2个字节来存放,因此滤波子程序须设计为6个二字节数的处理程序。在距离的计算过程中,当温度每升高1℃,其超声波的传播速度增加0.6m/s。为了计算的方便,在软件的编程过程中采用公式5.2的思路来编写(其中超声波的速度V的单位为mm/us,计算结果的单位为毫米)。其软件设计流程如图5.2所示。

tv (5.2) L2000t

结果存储单元清零 调用V*t的程序 调用除法程序V*t/2000 显示处理程序 返回 图5.2 距离计算流程图

5.2 软件调试

在软件程序的设计过程中,采用分模块设计及调试的方式。在滤波子程序的设计过程中,其滤波处理采用的中值平均滤波方法。中值平均滤波方法是:设N次采样值X1,X2,X3,…,XN按大小顺序排列为X1≦X2≦X3,…,≦XN,把最小的X1 和最大的XN 去掉,剩下的取算术平均值即为滤波后的值y,即:

yx2xN1 (5.3)

N2

这种方法既能滤除脉冲干扰,又能平滑滤波,即对于快、慢干扰均有效果。首先根据流程图编写程序,然后对给定的6个二字节数进行滤波处理,最终查看结果。

在二字节乘二字节、四字节除于二字节、测温和声速的温度补偿的程序设计过程中,都采用先画程序流程图,然后编写程序的模式。在调试过程中,采用的是先给各子模块赋初值后查看其结果的方式。当各子程序的设计完成后,根据各个模块的数据存储空间来将各个模块结合起来,最终形成具有测距功能的总程序。

29

南昌航空大学学士学位论文

第六章 超声波测距系统最终调试

在本系统的设计过程中,分别对系统的软件和硬件进行分别调试完毕后,再将系统的软件和硬件相结合来进行调试。其中定时器T1设置为外部计数方式,外部计数脉冲为单片机的ALE信号。在系统调试过程中,首先将软件通过MAX232芯片将程序下载到单片机内,观察二极管的亮灭及数码管的显示内容。在将程序下载进去后,发现发光二极管始终亮着,而且数码管显示为0000。通过使用万用表和示波器来检查各个模块的输入输出电压及波形,发现555多谐振荡器的复位端4脚始终为高电平,超声波一直在发射,并没有达到设计要求。为了方便检查故障的原因,又重新编写了一个使用单片机的P0.4口来控制555多谐振荡器的工作情况的程序。在这里采用的是先将P0.1口为低电平,然后延时2s后在将P0.4口置1,观察发光二极管的亮灭情况,发现其始终都亮着,并没出现亮灭交替的情况。此时,将P0.4口直接接电源的地线,发现发光二极管熄灭;将P0.4口接+5V电源,发光二极管点亮,工作正常。这时再次通过软件的方式来控制P0.4口电平的高低,用万用表检测P0.4口的电平,发现能够通过软件来控制该口为高或为低电平。

在确定硬件的设计无误后,再次将软件和硬件结合起来,通电后发现电路仍然不能正常工作。这时检测P0.4口的电压,发现该点始终为高电平。经过再次查看STC89C52的资料,发现单片机的工作电压的范围为0~6V,不能直接采用I/O口的高低电平来控制12V上拉电压的工作。最后将P0.4口的上拉电压改为+5V,发现电路工作正常。

在调好发射接收模块电路后,再次将总程序下载到单片机内通电工作,发现发光二极管能够亮灭亮灭的闪烁,但数码管始终显示为0000。于是采用示波器观察T1的波形,显示的输入波形为脉冲信号其脉宽为4us。通过编写一个单独控制T1计数并将计数值送显的程序来对系统进行调试,当计数脉冲为单片机的ALE信号时,其显示的计数值始终00000。在经过多方面的考虑和分析后,最终尝试采用555定时器构成多谐振荡器来产生100KHz的脉冲信号作为T1计数器的计数脉冲。然后再次通电运行,发现T1计数器能够计数并且其计数范围为0~65535之内。

在将控制超声波发射和计数的程序调试完成之后,再将修改后的总程序下载到单片机中,通电后发现电路能够工作正常。在电路工作正常后,用示波器观察回波接收、峰值检波和电平转换的波形,其各点的波形如图6.1所示。当系统设计完成后,通过采用卷尺对所设计的超声波测距系统进行比较,在其测量的距离值如表7所示。从表

30

南昌航空大学学士学位论文

7可知其测量距离的最大误差比设计要求要大,不过基本满足了设计的要求。

图6.1 接收模块中的各点波形图

表7 在29℃时的测量结果 实测距离(cm) 5 10 20 30 40 50 60 100 135 180

测量结果(cm) 6.5 11.4 21.8 33.0 40.0 52.2 61.8 104.8 137.7 183.1 测量距离误差(cm) 测量误差(%) 1.5 1.4 1.8 3 0 2.2 1.8 4.8 2.7 3.1 30 14 9 10 0 4.4 3 4.8 2 1.7 31

南昌航空大学学士学位论文

第七章 总结

7.1 研究结论

本系统研制历时近半年,通过和老师、同学充分合作共同努力已完成并验收,这是一个团队的成果。在超声波测距系统的设计中,完成的是硬件设计、制作及调试实验,同时完成软件设计方面的工作。在硬件设计中主要工作是:设计硬件的结构框图,完成硬件的设计。如超声波的产生、驱动电路、接收放大电路、峰值检波电路和电平转换电路的设计及制作。在硬件的设计过程中,最主要是要具有高速性和较强的抗干扰能力。在选择构成系统电路的元器件时,应着重考虑其是否会影响系统的高速性。在硬件的制作过程中,应尽量减小电源的波动对系统的影响,以及在做PCB板时可通过网格线的方式增加系统的抗干扰能力。

本系统能不同温度和气体的环境对两点的距离进行测量,同时也可以作于汽车的避障系统,具有的功能有:① 测量范围:6cm~3m;② 测量误差较小;③具有实时测温和温度补偿功能;④ 能够对距离进行多次测量显示。

7.2 本系统的不足和需改进的地方

受时间和经验限制,本系统有不足和需改进的地方:

1.本系统的平面安装大小为140mm*120mm,为了进一步缩小整个系统的体积,便于应用推广,可以用贴片电子元件替代直插元件和制作双面板的方法。 2.本软件设计为了完成工程要求,没有用到太复杂的算法。今后工作可以尝试更好的算法设计。但是,考虑超声波测距系统的成本要求低(成本过高很难有实际应用)、体积要小,因此目前很难用上较昂贵的高级芯片,在成本较低的单片机上编程,除了完成众多功能外,要使用数字滤波等复杂算法编程,还要考虑时间响应快的因素,将是一个挑战。

3.更复杂的算法可以作研究尝试,但从实际效果考虑上,更好的办法可能是改进外围电路设计,本系统的外围电路设计还有很大的改善空间。

32

南昌航空大学学士学位论文

参考文献

[1] 潘宗预,潘登.超声波测距精度的探讨[J].湖南大学学报:自然科学版,2006,(06). [2] 苏炜,龚壁建,潘笑.超声波测距误差分析[J].传感器技术,2004,(23).

[3] 贾莉娜.高精度的超声波测距系统在移动机器人导航方面的应用[J].计测技术,2004,(09). [4] 童峰,许水源,许天增.一种高精度超声波测距处理方法[J].厦门大学学报(自然科学版),

1998,(7).

[5] 何永强,卜英勇,任凤跃,等.用于微地形探测的超声波测距系统[J].设计与计算,2005,(12). [6] 曾祥进,王敏,黄心汉.自动增益电路在超声波测距系统中的应用研究[J].测控技术,2005,

(24).

[7] 时德钢,刘晔,王峰,韦兆碧,王采堂.超声波精确测距的研究[J]. 计算机测量与控制, 2002,

10(7).

[8] 刘升平.用于探雷机器人的超声波测距系统[J].华南师范大学计算机软件与理论,2008,(5). [9] 史晓华,杜新培.超声波测距系统[J]. 天津工业大学计算机与自动化学院, 2008,(05). [10] 卜英勇,王纪婵,赵海明,刘光华.基于单片机的高精度超声波测距系统[J].仪表技术与传

感器,2007,(3).

[11] 宋永东,周美丽,白宗文.高精度超声波测距系统设计[J].现代电子技术,2008,(15). [12] 白顺先. 超声波测距系统的设计与实现[J]. 高校理科研究,2000,(08). [13] 薛丽芳,汪卉,颜文俊.基于超声波的距离测量[J].自动化与仪表,2007,(5). [14] 赵小强,赵连玉.超声波测距系统中的温度补偿[J].天津理工大学机械工程学院,2008,

(12).

[15] 张珂,俞国华,刘钢海.超声波测距回波信号处理方法的研究[J].测控技术,2008,(27). [16].罗萍.基于单片微型计算机的语音播报测距仪的设计[J].惠州学院学报(自然科学版),

2008,(12).

[17].牛余朋.基于单片机的高精度超声波测距电路[J].电子世界,2005,(05).

[18].Hannes Elmer ,Herbert Schweinzer.Ultrasonic Distance Measurement System with a Well Defined and Adjustable Detection Area[J].Sensor,2004,proceedings of IEEE,2004

33

南昌航空大学学士学位论文

致 谢

值此成文之际,谨向赵珂老师表达我们深深的敬意和衷心的感谢!毕设期间,两位老师给予了我们精心的指导和热情的帮助,老师严谨的治学态度、渊博的知识、勤勤恳恳地研究风范以及活跃开阔的思维方式给我留下了深刻的印象,使我受益终生。

我还要感谢帮助我排忧解难的同学和朋友。在此期间,他们总是给予我最大的帮助。同时也要感谢电子信息工程学院所有老师在专业课上和课后给予我的教育和培养。没有这些知识的学习和积累,我就无法完成这次设计任务。再次感谢所有老师!

最后,感谢我的家人,在完成任务的过程中,他们在生活上和精神上都给予了我大力的支持。

附录A 超声波测距系统硬件电路图

34

南昌航空大学学士学位论文

S_7279 BIT P1.0 ;7279CLK_7279 BIT P1.1 ;7279DQ_7279 BIT P1.2 ;7279 附录B 超声波测距系统软件程序片选信号口 脉冲信号控制口 数据口

35

南昌航空大学学士学位论文

KEY_7279 BIT P1.3 ;7279键盘控制口 RECEIVE BIT P0.4 ;接收超声波的标志位 DQ BIT P1.7 ;DS18B20采温端口 TEMPER_H EQU 34H ;温度的16进制高位 TEMPER_L EQU 35H ;温度的16进制低位 TEMNUM

EQU 36H ;温度转换后的十进制数值,即温度值

NEG_T

BIT 04H ;是否为负的温度的标志位

SKIPROM EQU 0CCH ;跳过ROM的字 READRG EQU 0BEH

;读暂存器

WDCONV

EQU 44H ;温度转换命令,读DS18B20中的数据

WRITERG EQU 4EH ;写暂存器 ;********程序起始************* ;设置状态字赋初始值,7279初始化 ;TMOD设置为T1为16位计数器, ;查询位标志,检测是否接收到信号 ;50H-5CH单元来存放6次的计时数据 ;*************************** ORG 0000H

LJMP START ORG 0030H START: MOV SP,#67H CLR P0.4

MOV R0,#40H ;40H-4BH为显示数据存放单元(40H为最高位) MOV R7,#0BH

CLEARDISP:MOV @R0,#00H ;显示单元清零 INC R0

DJNZ R7,CLEARDISP MOV R0,#40H

MOV TMOD ,#50H

MOV R1,#51H MOV R7,#10H

36

南昌航空大学学士学位论文

CLEAR: MOV @R1,#00H ;存放单元清零 INC R1 DJNZ R7,CLEAR

LCALL INT_7279 ;7279 初始化

MOV 40H,#1DH ;HELLO的字型码 MOV 41H,#1EH MOV 42H,#1FH MOV 43H,#20H MOV 44H,#21H

MOV R5,#05H ; ACALL DIR

LCALL del750 ; LCALL del750

M_6: LCALL DS18B20 ; MOV R5,#08H ; LCALL del750

LCALL WENDU ; MOV 48H,R1 ; MOV 49H,R0

LCALL KEY ; CJNE A,#0FFH,M_1 ; M_1: JC M_2 ; JNC M_6 ;M_2: CJNE A,#0FH,M_3 ;M_3: JC M_6 ; MOV R1,#51H MOV 50H,#06H CLR TR1

M_7: MOV TH1,#00H ;显示HELLO 延时一段时间 LCALL del750

调用测量温度的程序 控制数码管个数

LCALL DIR ;显示温度

调用温度补偿程序,输入为60H单元,处理结果送R1R0 将速度保存在48H49H单元 调用键盘程序 判断是否有按键 有按键跳到M_2 无按键返回M_6 判断是否为发射键按下 不是跳回M_6 ;51H 存放计数的结果的首址

计数单元清零

37

南昌航空大学学士学位论文

MOV TL1,#00H

SETB P0.4 ;发射超声波

MOV R7,#20H ;延时一段时间,作为盲区处理 DJNZ R7,$

SETB TR1 ;开计数器进行计数 M_4: MOV C,P0.1 ;检测是否接收到回波信号 JC M_4

CLR TR1 ;关计数器 CLR P0.4 ;停止发射超声波

MOV @R1,TH1 ;将计数值存放到51H-5CH单元,高位在前,低位在后 INC R1 MOV @R1,TL1 INC R1 LCALL del750 DJNZ 50H,M_7

LCALL LVBO ;调用滤波程序,输入为51H-5CH单元,结果送R3R2单元 MOV R1,48H ;超声波的速度

MOV R0,49H

LCALL MUL2BY2 ;R3R2*R1R0=>R7R6R5R4 MOV R3,#07H ;除数为2000 MOV R2,#0D0H

LCALL S32_16 ;R7R6R5R4/R3R2=R5R4 MOV A,R5 MOV R2,A MOV A,R4 MOV R3,A LCALL BINTOTEN MOV R5,#04H MOV A,40H ;第一位显示小数点

ADD A,#19D MOV 40H,A

38

南昌航空大学学士学位论文

LCALL DIR LCALL del750 LCALL del750 LCALL del750 LCALL del750 LJMP M_6

;*********************读键码值,a中放的键码值**************** KEY: ACALL KEY1; CJNE A,#0FFH,L7

CLR 00H ;00H为键标志位 RET

L7: JB 00H,L8 SETB 00H ACALL KEY2 RET L8: MOV A,#0FFH RET

;********************所读的码值在a中********* KEY1: CLR P1.0 MOV R6,#0CH DJNZ R6,$ MOV A,#15H ACALL STFS MOV R6,#06H DJNZ R6,$ ACALL STJS SETB P1.0 RET

;********************求键号,键值存在a中,键号也在a中************ KEY2: MOV B,A MOV R2,#00H

39

南昌航空大学学士学位论文

MOV R7,#0FH L9: MOV A,R2 ADD A,#0AH MOVC A,@A+PC CJNE A,B,L10 SJMP L11 L10: INC R2 DJNZ R7,L9 L11: MOV A,R2 RET

TAB3:DB 07H,0FH,0EH,0DH,17H,16H,15H,1FH

DB 1EH,1DH,1CH,14H,0CH,04H,05H,06H ;********测温程序***************** DS18B20:ACALL DSRESET

;复位同时检测存在脉冲

ACALL GETWD ;得温度值 ACALL CONV_T ;温度转换 ACALL

DSDIR_0

;显示处理

MOV R5,#08H ACALL DIR ;显示温度

RET

;***********************DS18B20复位************************ DSRESET: CLR EA INI10: SETB

DQ

MOV R2,#100

;主机发复位脉冲约600us

INI11: CLR DQ DJNZ R2, INI11 SETB DQ

;读ds18b20

MOV

R2, #15

;60us

INI12:DJNZ R2, INI12 CLR C

ORL C, DQ ;检测存在脉冲

40

南昌航空大学学士学位论文

JC INI10 ;未准备好 MOV R2,#30

;240us

INI13: ORL C,DQ JC INI14 ;ds18b20数据线变高,初始化成功

DJNZ R2,INI13

SJMP

INI10

;初始化失败,重来 INI14: MOV R2,#120

;480us

DJNZ R2,$ setb

dq

clr p1.6

RET

;**********************获取温度值*************************** GETWD:LCALL DSRESET MOV A,#SKIPROM ;SKIPROM EQU 0CCH ;跳过ROM的字

LCALL WRITE

MOV A,#WDCONV ;发温度转换命令 ;WDCONV EQU 44H LCALL WRITE ;温度转换命令,读DS18B20中的数据 lcall del750 ;延时 LCALL DSRESET MOV A,#SKIPROM ;跳过 LCALL WRITE

MOV A,#READRG ;发读温度寄存器命令;READRG EQU 0BEH LCALL WRITE

LCALL READ ;读暂存器 MOV TEMPER_L,A LCALL READ MOV TEMPER_H,A

RET

;***********************读操作*************************** READ: CLR EA

MOV R3,#8

41

南昌航空大学学士学位论文

READ11: SETB DQ nop nop CLR DQ NOP ;2us

SETB DQ

MOV R2,#2

READ12: DJNZ R2,READ12 ; 8us MOV C,DQ RRC A

MOV R2,#15

;60us

READ13:DJNZ R2,READ13 DJNZ R3,READ11 SETB DQ

RET

;**********************写操作**************************** WRITE: MOV R3,#8 ;传送位数为8

WRIT11:RRC A ;循环右移,先送低位

CLR DQ

MOV

R2,#3

;13us ;5us以内必须写入 WRIT12:DJNZ R2,WRIT12 MOV DQ,C

MOV

R4,#15 ;60us

WRIT13:DJNZ R4,WRIT13 SETB DQ

DJNZ R3,WRIT11 SETB DQ

RET

;***********************温度转换************************** CONV_T:CLR NEG_T

MOV A,TEMPER_H

42

南昌航空大学学士学位论文

JNB ACC.7,CONV11

MOV A,TEMPER_L ;温度低位变反加一

CPL A ADD A,#01H MOV TEMPER_L,A

MOV A,TEMPER_H ;高位取反加进位 CPL A ADDC A,#00H MOV TEMPER_H,A

SETB NEG_T

;置温度负标志

CONV11:MOV A,TEMPER_L ;去掉小数部分 ANL A,#0F0H MOV TEMNUM,A MOV A,TEMPER_H ANL A,#07H ORL

A,TEMNUM

SWAP A MOV

TEMNUM,A

MOV 60H,A LCALL BIN_BCD

;此时TEMNUM中是压缩BCD

RET

;*********************二进制转BCD码******************************** BIN_BCD: CLR C MOV R7,#08H

MOV

R1,#00H BB1: MOV A,TEMNUM RLC A MOV TEMNUM,A MOV

A,R1

ADDC A,R1 ;自加,相当于左移一位

DA

A

43

南昌航空大学学士学位论文

MOV R1,A

DJNZ R7,BB1 MOV TEMNUM,A

RET

;****************DSDIR_0****************** DSDIR_0:JNB NEG_T,DSD1

MOV 43H,#12H ;是负数,加负号

CLR

NEG_T

SJMP

DSD2

DSD1: MOV 43H,#10H DSD2: MOV 40H,#10H MOV 41H,#10H MOV 42H,#10H MOV A,TEMNUM

MOV R0,#44H ;转换后温度的存放单元44-47H ACALL A_R0 MOV 46H,#11H MOV 47H,#0CH

RET

;******************************************* A_R0: MOV R2,A SWAP A ANL A,#0FH MOV @R0,A INC R0 MOV A,R2 ANL A,#0FH MOV @R0,A INC R0 RET

;*************滤波子程序***************************

44

南昌航空大学学士学位论文

;所处理的数据放在51-5CH单元内 ;处理完的数据放在R3R2中

;****************************************************** ;第一步,对六组数据进行排序,从小到大排 LVBO: MOV R7,#05H ;控制总的比较次数 LV_1: MOV A,R7

MOV R6,A

; 控制每求一个最小值所需要的比较次数

MOV R0,#53H ;

MOV R1,#51H ;用R1来指向每次比较数据中最小的数 LV_2: MOV A,@R1 CLR C SUBB A,@R0

JNZ LV_4 ;若高位不相等转到LV_4中 CLR C ;若相等则比较低位的大小 INC R0 INC R1 MOV A,@R1 SUBB A,@R0 DEC R0 DEC R1

LV_4: JC LV_3 ;第一个数小于第二个数则转到LV_3中 ; 若大于则交换这两个数的位置

MOV A,@R0 ;两个二字节的数交换位置,先交换高位后交换低位 XCH A,@R1 MOV @R0,A INC R0 INC R1 MOV A,@R0 XCH A,@R1 MOV @R0,A INC R0

45

南昌航空大学学士学位论文

DEC R1 ;比较完后将最小值放到R1所指向的两个相连单元在中

LV_3: DJNZ R6,LV_2 INC R1

;将剩余的数据进行比较,其中R1还是指向最小的数

INC R1 DJNZ R7,LV_1

;求去除最小和最大的两个数之后的数据之和,结果放在R2R3R4单元中 MOV R0,#54H ;先一个数的低位相加然后在加高位 MOV R7,#04H ;四组数据相加 MOV R2,#00H MOV R3,#00H MOV R4,#00H LV_5: CLR C MOV A,@R0 ADD A,R2 ;先加低位数 MOV R2,A DEC R0 MOV A,@R0 ;带进位加高位数 ADDC A,R3 MOV R3,A MOV A,#00H ADDC A,R4 ;将最后相加的进位放在R2单元 MOV R4,A INC R0

;指向下一个二个字节的数据 INC R0 INC R0 DJNZ R7,LV_5 ;求平均值的程序,采用移位方式

;除四就右移两位来实现 ,最后结果放在R3R4单元中 MOV R7,#02H LV_6: CLR C MOV A,R4

46

南昌航空大学学士学位论文

RRC A MOV R4,A MOV A,R3 RRC A MOV R3,A MOV A,R2 RRC A MOV R2,A DJNZ R7,LV_6 RET

;*******乘法程序******************* ; 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

47

南昌航空大学学士学位论文

MOV A, R0 RLC A MOV R0, A MOV A, R1 RLC A MOV R1, A JNC MULLOOP2 MOV A, R4 ADD A, R2 MOV R4, A MOV A, R5 ADDC 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

;********温度补偿******************** ;**温度放在60H单元后在调用WENDU来做声速的 ;温度补偿,结果送 R1R0单元,60H为有符号数 WENDU:MOV A,60H RLC A JC WD_1 MOV A,60H MOV B,#06H

48

南昌航空大学学士学位论文

CLR C

MUL AB ;B高位A低位 MOV R1,#0CH;R1放声速的高位 MOV R0,#0F8H;R2放声速的低位 CLR C ADD A,R0 MOV R0,A MOV A,B ADDC A,R1 MOV R1,A RET WD_1:MOV A,60H ANL A,#7FH MOV B,#06H MUL AB MOV R3,A MOV R4,B

MOV R1,#0CH;R1放声速的高位 MOV R0,#0F8H;R2放声速的低位 CLR C MOV A,R0 SUBB A,R3 MOV R0,A MOV A,R1 SUBB A,R4 MOV R1,A RET

; 32位数除以16位数, R7R6R5R4/R3R2=R5R4 余数4舍5入进R5R4 S32_16: MOV A, R6

CLR C ; R7R6R5R4/R3R2=R5R4 SUBB A, R2

49

南昌航空大学学士学位论文

MOV A, R7 ; 当R7R6R3R2时, 得数需要3位数 SUBB A, R3

JNC S32A ; C=0 得数溢出, 退出 MOV B, #10H S32D: 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 XCH A, R7 RLC A

XCH A, R7 ; R7R6R5R4 MOV F0, C ; CLR C

SUBB A, R2 ; R7R6-R3R2=R7R6 MOV R1, A MOV A, R7 SUBB A, R3

JB F0, S32B ; JC S32C ; C=1 S32B: MOV R7, A ; C=0 MOV A, R1 MOV R6, A

INC R4 ; S32C: DJNZ B, S32D ; CLR F0 ; 左移1位 保存移出的最高位 移出的最高位=1 商+1 不够减, 再循环 够减, 商+1 商上1 循环16次 正常出口

50

南昌航空大学学士学位论文

ACALL S4S5R ; 4舍5入 RET ;

S32A: SETB F0 ; 溢出 RET

; 将32位数除以16位数, R7R6R5R4/R3R2=R5R4 ; 后的余数R7R6 4舍5入加入得数R5R4

S4S5R: CLR C ; R7R6为余数 MOV A, R6 ; R3R2为除数 RLC A MOV R6, A XCH A, R7 RLC A

XCH A, R7 ; 余数左移1位

JC S4S5R1 ; C=1, 余数12除数, 得数+1 CLR C SUBB A, R2 MOV A, R7

SUBB A, R3 ; 余数左移1位后减除数 R7R6-R3R2 JC EXIT48 ; C=1, 不够减, 退出 R7R6R3R2 S4S5R1: MOV A, R4 ; C=0, 够减, 余数12除数, 得数+1 ADD A, #1 MOV R4, A MOV A, R5 ADDC A, #0

MOV R5, A ; R5R4+1

EXIT48: RET

;*********************DIR显示处理************** DIR: MOV R0,#40H MOV R1,#97H L_1: CLR P1.0

51

南昌航空大学学士学位论文

MOV R6,#0CH DJNZ R6,$ MOV A,R1 LCALL STFS MOV R6,#06H DJNZ R6,$ MOV A,@R0 ADD A,#0DH MOVC A,@A+PC ACALL STFS MOV R6,#02H DJNZ R6,$ SETB P1.0 INC R0 DEC R1 DJNZ R5,L_1 RET

TAB1:DB 7EH,30H,6DH,79H,33H DB 5BH,5FH,70H,7FH,7BH

DB 77H,1FH,4EH,3DH,4FH,47H,00H,63H,01H // 'A''B''C''D''E' 'F''''度' DB 0FEH,0B0H,0EDH,0F9H DB 0B3H,0DBH,0DFH,0F0H DB 0FFH,0FBH

TAB2:DB 37H,4FH,0EH,0EH,7EH ; H, E L L 0

;****************************二进制变十进制********************* ;二进制转十进制程序 R2R3进行除十取余,结果送显 BINTOTEN:MOV R0,#43H

MOV R6,#05H

L1: ACALL DIV1

52

南昌航空大学学士学位论文

MOV A,R1 MOV @R0,A DEC R0 DJNZ

R6,L1

MOV A,R3 MOV @R0,A

RET

DIV1: MOV R7,#10H

MOV R1,#00H

L2: CLR C

MOV A,R3

RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R1 RLC A MOV R1,A CLR C SUBB A,#0AH JC

L3

MOV R1,A

INC R3

L3: DJNZ R7,L2

RET

;************************发送一字符****************** STFS: MOV R7,#08H ;发送的字符在a中 L12: RLC A MOV P1.2,C SETB P1.1

53

南昌航空大学学士学位论文

MOV R6,#02H DJNZ R6,$ CLR P1.1 MOV R6,#02H DJNZ R6,$ DJNZ R7,L12 RET

;**********************接受一字符********** STJS: MOV R7,#08H ;接受的字符在a中 L13: SETB P1.1 SETB P1.2 MOV R6,#02H DJNZ R6,$ MOV C,P1.2 RLC A CLR P1.1 MOV R6,#01H DJNZ R6,$ DJNZ R7,L13 RET

;****************7279初始化**************** INT_7279:CLR P1.0 MOV R6,#0CH DJNZ R6,$ MOV A,#0A4H ACALL STFS MOV R6,#02H DJNZ R6,$ SETB P1.0 RET

del750: mov r7,#00h ;2ms

54

南昌航空大学学士学位论文

del1: mov r6,#00h del2: mov r5,#02h djnz r5,$ djnz r6,del2 djnz r7,del1

ret END

55

因篇幅问题不能全部显示,请点此查看更多更全内容