超声波测距

摘要:介绍了一种基于AT89C52单片机的超声波测距系统,由555和运放及比较器配合超声波传感器有效组成了超声波的发射电路和接收电路。同时在数据处理,盲区消隐方面提出了有效解决方法! 从而提高了检测的精度及灵敏度,以及用LCD液晶显示器配合美妙的音乐进行显示。本文主要阐述了超声测距系统的硬件电路构成、工作原理及软件设计方法。该系统硬件结构简单、工作可靠,有良好的测量精度和灵敏度。

[关键字]  超声波  测距  LCD液晶

前言

随着科技的迅猛发展越来越多科技成果被广泛的运用到人们的日常生活当中,给我们的生活带来了诸多方便。这一设计就是本着这个宗旨出发,利用超声波的特性来为我们服务。

人们能听到声音是由于物体振动产生的,它的频率在20HZ-20KHZ范围内,超过20KHZ称为超声波,低于20HZ的称为次声波。常用的超声波频率为几十KHZ-几十MHZ。由于超声波指向性强,因而常于距离的测量。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人,汽车安全,海洋测量等上得到了广泛的应用。本设计提供一种液晶显示测距装置,该装置利用了发射接收一体化的超声波传感器和微处理器。采用超声波传感器分时工作于发射和接收,利用声波在空气中的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物到超声波测距器之间的距离。

距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。尽管测距有多种方式,比如,激光测距,微波测距,红外线测距和超声波测距等。但是,超声波测距不失为一种简单可行的方法。虽然超声波测距电路多种多样,甚至已有专用超声波测距集成电路。但是,有的电路复杂,技术难度大,有的调试困难,有的元件不易购买。本文介绍的电路,成本低廉,性能可靠,所用元件易购,并且利用测距原理,结合单片机的数据处理,使测量精度提高,电路实现容易,无须调试,工作稳定可靠。

目  录

前言 I

第一章  绪论 1

1.1选题背景及研究意义 1

第二章  方案论证 2

2.1超声波测距原理 2

2.2系统的工作原理 2

第三章  系统硬件电路的设计 4

3.1AT89C52单片机 4

3.2超声波发射电路 5

3.3超声波接收电路 8

3.4 LCD液晶显示部分结构 10

3.5音乐播放模块 15

第四章  系统软件设计 16

4.1超声波接收发射软件设计 16

4.2音频脉冲的产生 19

4.3 LCD液晶显示部分软件设计 19

结论 22

参考文献 23

致谢 24

附录 25

第一章  绪论

1.1选题背景及研究意义

1.1.1 选题背景

在日常生活中,有各种各样的测距仪。与激光测距、红外线测距相比,超声波对外界光线、色彩和电磁场不敏感,更适于黑暗、电磁干扰强、有毒、灰尘或烟雾的恶劣环境,在识别透明及漫反射性差的物体上也更有优势。而且超声波还有其指向性强、能量消耗缓慢、传播距离较远等优点。超声波测距是一种非接触式测量,广泛应用于倒车防撞雷达、机器人接近觉、海洋测量、物体识别等领域。距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。

1.1.2研究意义

本设计是超声波测距仪装置,该装置利用了发射接收一体化的超声波传感器和微处理器。采用超声波传感器分时工作于发射和接收,利用声波在空气中的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物到超声波测距器之间的距离。因此经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。在日常生活中起了广泛的作用。

第二章  方案论证

2.1超声波测距原理 

为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器

超声波测距通常采用度越时间法,即利用s=vt/2计算被测物体的距离。式中s为收发头与被测物体之间的距离, v为超声波在介质中的传播速度(v = 331. 41+T/273m/s),t为超声波的往返时间间隔。工作原理为:发射头发出的超声波以速度v在空气中传播,在到达被测物体时被其表面反射返回,由接收头接收,其往返时间为t,由s算出被测物体的距离。T为环境温度,在量精度要求高的场合必须考虑此影响,但在一般情况下,可舍去此法,由软件进行调整补偿。

由于超声波也是一种声波,其声速c与温度有关,附表1列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,就可以求出距离。这就是超声波测距原理。

表1  温度与声速的关系

温度(

-30

-20

-10

0

10

20

30

100

声速(m/s)

313

319

325

333

338

344

349

386

 2.2系统的工作原理  

系统的工作是由软件和硬件的配合过程。先由微机使555使能端置1,继而555送出40kHz频率的方波信号经过压电换能器(超声波发射头)将信号发射出去及发射超声波,同时该时刻启动定时器开时计时。该信号遇到障碍物反射回来在此称为回波。同时,压电换能器(超声波接收头)将接收的回波及接收超声波,通过信号处理的检波放大,及通过三级放大后再送到比较器进行比较输出比较电压, 输出电压经过三极管以后,使之电压与AT89C52的I/O口相匹配最后送至微机处理。最后进行LCD液晶显示同时配上美妙的音乐。超声波测距系统设计框图如图2.1所示。

图2.1超声波测距系统组成框图

第三章  系统硬件电路的设计

硬件电路主要分为单片机系统及显示电路、超声波发射电路、超声波接收电路和电路音乐回放电路等部分组成。

3.1AT89C52单片机

AT89C52是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。

单片机正常工作时,都需要有一个时钟电路,和一个复位电路。本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路。如图3.1所示。

图3.1 单片机的最小电路

3.1.1时钟电路

计算机工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲

是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作。单片机内部电路就在惟一的时钟信号控制下严格的按时序进行工作。要给单片机提供时序要有相

关的硬件电路,即振荡器和时钟电路。因此选择了内部时钟方式。利用蕊片内部的振荡器,然后在引脚XTAL1和XTAL两端跨接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路如图1所示,外接晶振时,C1和C2值通常选择为30PF左右。C1,C2对频率有微调作用。晶体的频率范围可在1.2~12MHZ之间选择。在实际连接中,为了减少寄生电容,更好地保证振荡器稳定。可靠地工作,振荡器和电容应尽可能安装得与单片机蕊片靠近。

3.1.2复位电路

有图可以看出,是按键电平复位电路,相当于按复位键后复位端通过电阻与Vcc电源接通。复位是单片机的初始化操作。单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路来实现。

3.2超声波发射电路

发射电路由555 构成的多谐振荡器和超声波发射头组成。

3.2.1多谐振荡器

采用555 构成多谐振荡器可以实现宽范围占空比的调节!并且电路设计简单!占用面积小。 如图3.2所示 ,由单片机AT89C52的P2.3口发出同步脉冲信号!该同步脉冲启动多谐振荡器!使其输出40KHZ的高频电压信号! 经过整形直接加至超声波换能器探头! 根据逆压电效应! 产生振动频率为40KHZ的超声波。

     

            图3.2   超声波发射电路

接通电源后,电容C被充电,VC上升,当VC上升到2/3VCC时,触发器被复位,同时放电BJT T导通,此时Vo为低电平,电容C通过R2和T放电,使VC下降。当VC下降到1/3VCC时,触发器又被置位,Vo翻转为高电平。电容器C放电所需的时间为

当C放电结束时,T截止,VCC将能过R1,R2向电容器充电,VC由1/3VCC上升到2/3VCC所需的时间为

当VC上升到2/3VCC时,触发器又发生翻转,如此周而复始,在输出端就得到一个周期性的方波,其频率为

由于555内部的比较器的灵敏度较高,而且采用差分电路形式,它的振荡频率受电源电压的温度变化的影响很小。

                 图3.3   555的工作波形图

从555的工作波形图,可看出占空比是固定不变的。为了调解的方便,我把R1和R2都换成了电位器,就形成了占空比可调的电位器。使的超声波的发射电路更加具有高效性。也能满足波尽可能的减小失真。从面达到测距更长的效果。

3.2.2超声波传感器

从图3.2超声波的发射电路上看还有一个超声波传感器。它具有把电信号转化为机械信号,同时又能把机械信号转化为电信号的功能。在设计中选择了压电式超声波发声器。压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图3.4所示,它有两个压电晶片和一个共振板。压电晶体组成的超声波传感器是一种可逆传感器,它可以将电能转变成机械振荡而产生超声波,同时它接收到超声波时,也能转变成电能,所以它可以分成发送器或接收器。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。本文所采用的超声波传感器是T/R-40-16(其中T表示发送,R表示接收,40表示频率为40KHZ,16表示其外径尺寸,以毫米计

 图3.4  超声波传感器结构

3.3超声波接收电路

超声波接收电路包括由MC3403构成的三级回波放大电路以及LM358电压比较整形电路两部分,与超声波接收传感器T-40-16配合使用,实现超声波的接收功能。

                      图3.5 超声波接收电路

3.3.1放大电路及其参数的设计

当测量距离较大时,超声波的回波较弱,这时候就需要将信号放大,否则其转换成电信号的幅值也会比较小。如图3.5所示,设计中,采用三级放大电路,将信号最大能放大50万倍。其中运算放大器IC3A、IC3B放大倍数为100倍,IC3C放大倍数为可调的。根据公式Au=R6/R4(以第一级放大电路为例),可以求得各放大电路的参数。计算后,取值如下,R3=10K,R4=10K,R6=1M,R7=1M。第三给放大是可调的Au=Rx/R2.其中R2=10K。Rx为500K可调的滑动变阻器。所以放大倍数是在(0~50)之间。从图3.5中,可以看到各个运放的基准电压都是可调的。这样更有利于达到自己想要的理想结果。超声波接收头接收到的40 kHz反射波交流信号。电容C5、C9、C12的作用为滤掉直流信号,对电容的大小无特别要求,所以一律选为1000PF。其中的放大电路是由MC3403构成的。MC3403是四低功耗运算放大器。它的引脚结构如图3.6所示。

图3.6 MC3403的引脚结构

3.3.2电压比较电路及其参数的设计

电压比较器的功能是比较两个电压值的大小,例如,将一个信号电压U1和另一个参考电压UR进行比较,在U1>UR和U1<UR时,电压比较器输出两个不同的电平,即高电平和低电平。比较器的输出通常只有高电平和低电平两个稳定状态,因此它相当于一个受输入信号控制的开关,当输入电压经过阈值时开关动作,使输出从一个电平跳转到另一个电平。系统中,比较器的作用是将信号电压与设定的基准电压相比较,当信号电压大于基准电压时,比较器输出正脉冲,Q1导通,P2.5接收负脉冲信号,单片机CPU发出中断,记录发射信号与接受信号之间的时间,并计算距离。在比较器的设计中要考虑两点因素:第一,要使Q1导通;第二,要使经过三极管以后的电压与AT89C52的P2.5口相匹配。为了

在实际应用时能得到合适的参数,将R10设计为最大阻值为5.1 kΩ的电阻,这样,R10的阻值便可得到满足上述条件的电压信号。用做电压比较器的的LM358,从图3.5可以看出比较器的的基准电压是可调的,因为从超声波接收的信号,要求有很高的灵敏度和精度,从放大电路出来的电压变化是非常微妙的,必须配和可调的基准电压采能满足进行比较达到达到设计中的需要。LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。图3.7为LM358的引脚结构图。

                      图3.7  LM358的引脚结

3.4 LCD液晶显示部分结构

在显示模块中,选择了JM12864J型图形点阵液晶显示模块进行显示。通过硬件电路和软件结合使得在液晶中显示如图3.8所示。JM12864J一共有有20个引脚,包括数据引脚,控制引脚和电源引脚,硬件电路非常简单。强大的功能主要是通过软件实现。

                   图3.8  LCD显示屏

3.4.1 LCD的参数和性能及引脚介绍

    JM12864J是一种图形点阵液晶显示器,它主要由行驱动器/ 列驱动器及128×64全点阵液晶显示器组成.可完成图形显示,也可以显示8×4(16×16点阵)汉字.LCD显示器是把LCD显示屏和控制模块结合在一起组成一个的整体。

主要技术参数和性能:

  • 电源:VDD:+5VLCD外接驱动电压为 -3.0∽-8.0V
  • 显示内容:128()×64()
  • 全屏幕点阵
  • 七种指令
  • CPU接口采用8位数据总线并行输入输出和8条控制线.
  • 占空比1/64
  • 工作温度:-10  +60 ,存储温度: -20℃  +70℃

显示器模块的外部接口是通过它的外接引脚,由外部对其进行读写操作共同形成的。外部引脚提供了接口的通道,而外部单片机对模块的读写操作则执行了单片机的模块之间的信息交流,也就是显示内容的交流.JM12864J一共有20个引脚,外部引脚编号为1~20。外接引脚编号、符号及其含义如表2所示。

表2外部引脚及含义

管脚号

管脚名称

电平

管脚功能描述

1

VSS

0V

电源地

2

VDD

5.0V

电源电压

3

V0

-

液晶显示器驱动电压:0~-5V

4

RS

H/L

RS=“H”,表示DB7~DB0为显示数据

RS=“L”,表示DB7~DB0为显示指令数据

5

R/W

H/L

R/W=“H”,E=“H”,数据被读到DB7~DB0

R/W=“L”,E=“HL”, DB7~DB0的数据被写到IRDR

6

E

H/L

使能信号:R/W=“L”,E信号下降沿锁存DB7~DB0

          R/W=“H”,E=“H” DDRAM数据读到DB7~DB0         

7~14

DB0~DB7

H/L

数据总线

15

CS1

H/L

H:选择芯片(右半屏)信号

16

CS2

H/L

H:选择芯片(左半屏)信号

17

RESET

H/L

复位信号,低电平复位

18

VOUT

-10V

LCD驱动负电压

19

LED+

DC+5V

LED背光板电源

20

LED-

DC0V

LED背光板电源

3.4.2 AT89C52和LCD显示器模块的接口

AT89C52和LCD显示器模块的接口包括硬件接口和软件接口两个部分。硬件接口是指AT89C52和LCD显示器模块的信息逻辑接线方法。软件接口是指AT89C52对LCD显示器模块的显示控制方法及程序。下面分别介绍这两种接口

方法。

3.4.2.1 AT89C52和LCD显示器模块的硬件接口

    AT89C52和JM12864J的硬件接口连线如图3.9所示。在图中看出,LCD显示器模块的能动信号E是由AT89C52的P3.2控制。当P3.2电平由高到低产生一个下降沿脉冲,就产生能动信号E。

AT89C52的P3端口的P3.0~P3.5用于产生控制信号,用于控制LCD显示模块的工作。

其中P3.0用于产生数据指令标志信号RS;P3.1用于产生读写信号R/W;P3.3、P3.4用于产生选择信号CS1、CS2;P3.5用于产生复位信号RST。

AT89C52的P1端口用于传送数据或指令,故P1.0~P1.7和LCD显示器模块的DB0~DB7相连。

为使显示屏能具有满意的亮度,在+5V和-5V之间接一个电位器,用于调节VEE的电压。VEE的电压一般取0~-5V。

图3.9 AT89C52和LCD显示器模块接口

3.4.2.2 AT89C52和LCD显示器模块的软件接口

在JM12864J型LCD显示器模块就用中,有7种指令格式。这些指令用于

对模块执行专门的控制功能,为些指令及其功能分别说明如下。

1)显示开关控制(DISPLAY ON/OFF)

代码

R/W

RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  0

  0   

  0

  0

  1

  1

  1

  1

  1

 D

D=1:开显示(DISPLAY ON)  意即显示器可以进行各种显示操作

   D=0:关显示(DISPLAY OFF) 意即不能对显示器进行各种显示操作                

2)设置显示起始行(DISPLAY START LINE)

代码

R/W

RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  0

 0   

  1

  1

 A5

 A4

 A3

 A2

 A1

 A0

    Z地址计数器是一个6位计数器。此计数器具备循环计数功能,是用于显示行扫描同步的。当一行扫描完成,此地址计数器自动加1,指向下一行扫描。RST复位后Z地址计数器为0。显示起始行是由Z地址计数器控制的。A5~A0  6位地址自动送入Z地址计数器,起始行的地址可以是0~63的任意一行。

例如:

选择A5~A062,则起始行与DDRAM行的对应关系如下:

DDRAM 行:62 63  0  1  2  3 ·················  28 29

屏幕显示行: 1  2  3   4  5  6·················  31 32

3) 设置页地址(SET PAGE “X ADDRESS”)

代码

R/W

RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  0

  0   

  1

  0

  1

  1

  1

 A2

 A1

 A0

所谓页地址就是DDRAM的行地址,8行为一页,模块共64行即8,A2~A0表示0~7页。读写数据对地址没有影响,页地址由本指令或RST信号改变复位后页地址为0。页地址与DDRAM的对应关系见DDRAM地址表。

4)  设置Y地址(SET Y ADDRESS)

代码

R/W

RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  0

  0   

  0

  1

 A5

 A4

 A3

 A2

 A1

 A0

    此指令的作用是将A5~A0送入Y地址计数器,作为DDRAMY地址指针。在对DDRAM进行读写操作后,Y地址指针自动加1,指向下一个DDRAM单元。

DDRAM地址表如表3所示。

表3 DDRAM地址表

      

     CS1=1

CS2=1

Y=

0

1

……

62

63

0

1

……

62

63

行号

X=

0

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

0

7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

8

55

X=7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

56

63

  1.  读状态(STATUS READ)

代码

R/W

 RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  0

  1   

BUSY

  0

ON/OFF

RET

  0

  0

  0

 0

R/W=1  RS=0,E信号为“H”的作用下,状态分别输出到数据总线(DB7~DB0)的相应位。

BF:  BF标志组件内部的工作情况。BF=1表示组件在进行内部操作,此时组件不接受外总指令和数据;BF=0时,组件为准备状态,随时可接受外总指令和数据。

ON/OFF: 表示DFF触发器的状态,用于控制屏幕显示的开和关。

RST:    RST=1表示内部正在初始化,此时组件不接受任何指令和数据

6)  写显示数据(WRITE DISPLAY DATE)  

代码

R/W

 RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  0

  1   

 D7

 D6

 D5

 D4

 D3

 D2

 D1

 D0

    D7~D0为显示数据,此指令把D7~D0写入相应的DDRAM单元,Y地址指针自动加1

7)  读显示数据(READ DISPLAY DATE)  

代码

R/W

RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

形式

  1

  1   

 D7

 D6

 D5

 D4

 D3

 D2

 D1

 D0

    此指令把DDRAM的内容D7~D0读到数据总线DB7~DB0Y地址指针自动加1

3.5音乐播放模块

在音乐播放模块中,硬件电路主要是由功率放大器LM386和杨声器构成。和单片机的硬件接线图如图3.9所示.从图中可以看出AT89C52单片机的P2.7口来控制扬声器来播放的,图中3.10所示,LM386构成的是增益为50的放大电路,一些滤波电容配合,尽量减小失真,使得声间能达到清晰宏亮的效果。电路简单,只要配合软件使得I/O中输出不同的音频脉冲,就能放出美妙的音乐。

LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。当1脚和8脚之间开路时,电压增益为26DB;若在1脚和8脚之间加一只外接电阻和电容,

      图3.10 LM386的硬件接线图

便可将电压增益调为任意值,则增益可达46DB,改变阻容值则增益可在26DB-46DB之间任意选取。电阻值越小增益越大。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于供电的场合。因而在便携式无线电设备、收音机、录音机、小型放大设备中得到广泛应用。LM386的引脚结构如图3.11所示。

图3.11 LM386的引脚结构

第四章  系统软件设计

系统软件部分包括主程序、中断子程序和其他子程序。主程序完成系统初始化后调用LCD液晶显示程序,再调用测距在内的各个子程序完成距离测量并显示输出。各子程序主要有:延时子程序、距离计算子程序及BCD码转换子程序,压缩BCD码乘法子程序,压缩BCD码加子法程序等。主程序流程图如图4.1所示。

4.1超声波接收发射软件设计

4.1.1距离计算问题

超声波发射接收所测距离的软件设计中,让单片机省去了繁杂的除法计算。以170乘上超声波从发射到接收的时间。即有压缩BCD码乘法进行计算。当然我们知道,定时器计数的最大值是65535us,如果以这个时间乘以170m距离能达到11.140950m.。因此在设计中,考虑到用上了定时器0溢出标志TF0。当超声波从发射到接收的时间超过了65535us,就把TF0置1,然后软件将TF0清0。接着开始计数。最后是把后来的计数时间乘以170。所得的结果加上11.140950N。N为TF1置1次数。即调用压缩BCD码加法。最后就进行解压缩进行显示。把所得的结果的每一位分配到不同的地址上。最后就根据地址确定位数了。超声波接收发射软件流程图如图4.2所示。

4.1.2串扰问题

设计中,超声波发射极和接收极距离较近,这样,当发射极发射超声波后,有部分超声波没经过障碍物反射就直接绕射到接收极上,这部分信号是无用的,会引起系统误测。设计中采用延时技术来解决这个问题,并设定延时时间为1 ms,即在发射极发射超声波1 ms内,没有启动定时器 ,接收电路对此期间接收到的任何信号不予理睬,1 ms后立即启动T0,这时接收到的信号才有效,并在接收到回波信号的同时,T0停。此时T0所记录的CPU发送脉冲信号的前沿到回波脉冲信号之间的时间才是需要的.

图4.1 主程序流程图

4.1.3二/十进制数(BCD码)的转换问题

为了简化硬件电路和节省转换时间,首先用二进制对每1位十进制数字编码,即BCD码,这种编码方式的特点是保留十进制的权,而数字用二进制表示。这时获得的是压缩的BCD码,要想获得要显示的十进制数,还必须执行一个分

离BCD码的子程序———分别屏蔽每一字节高低4位,然后将所获得的高低4

位分别存放在1个字节中。

图4.2  超声波接收发射软件流程图

4.2音频脉冲的产生

要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,就可以在I/O端上得到此脉冲。

利用AT89C52的内部定时器使期工作在计数器模式MODE1下,改变计数器值TH1及TL1以产生不同频率的方法。

   例如,频率为523HZ,其周期T=1/523=1912us,因此,只要令计数器计时956us/1us=956,在每计数956次时将I/O反相,就可得到中间DO(523HZ)。计数脉冲值与频率的关系如下。

      N=Fi÷2÷Fr

式中  N—计数值;

Fi-内部计时一次为1us,故其频率为1MHZ;

Fr-要产生的频率。

其计数的方法如下:

T=65536-N=65536-Fi÷2÷Fr

每个音符使用一个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,如果1拍为0.4S,1/4拍是0.1s,只要设定延迟时间就可求得节拍时间。假设1/4拍为1DELAY,则1拍应为4DELAY,依次类推。所以,只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数

4.3 LCD液晶显示部分软件设计

JM12864J有128χ64的点的显示阵列。可显示汉字(4χ8个16χ16点阵汉字),也可显示数字(4χ16个16χ8点阵数字)。在软件编程必须要严格遵守点阵的坐标位置,否则就容易汉字数字的重叠,达不到理想的效果,出现一批乱码。在软件设计中,首先要写入全部字符。查要寻址的的二进制编码的坐标位置,定位好后,就写进二进制字符。紧接着就是内部写数据代码指针定位,再写入数据。每一次写字符时,都是写字符的上半部,接着再写字符的下半部。同时必须配合刷新程序,才能在屏幕上显示清晰的效果,不会出现乱码。

4.3.1读/写时序

利用单片机可以实现对LCD显示器模块的读写操作,也就是把显示信息取出或写入到模块中的显示数据存储器DDRAM中读写有一定的时序要求。这时分别介绍其读时序和写时序。

4.3.1.1JM12864J型LCD显示模块的读时序

    LCD显示器模块的读时序由信号E,R/W,CS,RS和DB0~DB7组成。E是能动信号,R/W是读写信号,RS是显示/指令标志位,CS是选择信号,DB0~DB7是数据信号。

JM12864J的读时序如图4.3所示。从图中可以看出:R/W=1时,执行读操作,在E信号的上升沿开始执行读出,把JM12864J内的DDRAM内容读出到数据总线DB0~DB7上。这时如果RS=1,则读出的是显示数据:如果RS=0,则读出的是指令数据。CS2=1,CS1=0,读右半屏的内容:CS2=0,CS1=1,读左半屏的内容。

                 图4.3  JM12864J的读时序

4.3.1.2JM12864J型LCD显示器模块的写时序

JM12864J的写时序如图4.4所示。写时序和读时序的区别在于R/W信号为低电平,即R/W=0。这时,必须先把写入的数据由外部单片机送入数据总线DB0~DB7,然后在能动信号E的下降沿时,把数据从DB0~DB7写入到模块的显示数据存储器DDRAM中。同样,在RS=1时,写入的是数据;RS=0时,写入的是指令。在CS2=1,CS1=0时,把数据写入右半屏;在CS2=0,CS1=1时,把数据写入左半屏。

               图4.4 JM12864J的写时序

结论

系统测量范围较大(最大限定2.5 m),测量误差小,所用都是常规部件,具有较强的实用价值。另外,由于其结构简单、体积小、抗干扰性能好,所以比较适用于行走机器人。当然,要满足更高的精度要求,还须进行适当改进,例如可增加温度补偿单元;在某些特殊场合的应用中,还要考虑超声波的入射角、反射角以及超声波传播介质的密度、表面光滑度等因素。在设计中感觉在硬件方面还存在的诸多问题。在超声波发射电路中,曾经试用过晶体管来加大功率,但是无法达到预想的效果。在超声波接收接收电路中,波形失真太大,而且杂波信号也非常的强,有时候甚至超过接收到的信号,结果是肯定达不到灵敏度和精度要求。也尝试过在放大电路后出来加上整流电路,把交流信号转化直流信号送到比较器进行比较结果也无法达到预想的效果。而且整个系统相当的不稳定,必须要时不时地进行调试,才能使系统正常的工作。如果要进一步展开研究,在超声波发射电路中,加上达林顿管,进行两级功率放大,可能能过使超声波发射的更长,达到距离更远的效果。在超声波接收电路中,可以当超声波接收到信号,将机械信号转化为电信号时,就进行整流,把交流信号转化为直流电压信号,然后进行三级放大,可能能达到比较好的果。也可以在超声波接收电路加上高阻滤波电路和低阻滤波电路,滤除杂波,只让40KHZ的信号能过,这样就可以消除外界的干扰。或者还可以,将比较器换在音频译码集成块LM567,把它调成只让40KHX的信号通过,当接收到40KHZ的信号时,输出端就变成低电平,可以触发单片机,这样就可以使系统更稳定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值