首页专业论文技术应用政策标准解决方案常用资料经验交流教育培训企业技术专家访谈电力期刊
您现在的位置:北极星电力网 > 技术频道 > 经验交流 > 基于单片机的超声波测距仪LED显示电路的设计(3)

基于单片机的超声波测距仪LED显示电路的设计(3)

北极星电力网技术频道    作者:佚名   2010/11/1 11:00:53   

      3.3系统软件的设计
  
  本设计基于汇编语言编程,其软件设计思路如下:
  
  3.3.1超声波测距仪的算法设计
  
  超声波测距的原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。距离的计算公式为:
  
  d=s/2=(c×t)/2(1)
  
  其中,d为被测物与测距仪的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。其部分源程序如下:
  
  WORK:PUSHACC
  
  PUSHPSW
  
  PUSHB
  
  MOVPSW,#18H
  
  MOVR3,45H
  
  MOVR2,44H
  
  MOVR1,00D
  
  MOVR0,17D
  
  LCALLMUL2BY2
  
  MOVR3,#03H
  
  MOVR2,0E8H
  
  LCALLDIV4BY2
  
  LCALLDIV4BY2
  
  MOV40H,R4
  
  MOVA,40H
  
  JNZJJ0
  
  MOV40H,#0AH
  
  JJ0:MOVA,R0
  
  MOVR4,A
  
  MOVA,R1
  
  MOVR5,A
  
  MOVR3,00D
  
  MOVR2,#100D
  
  LCALLDIV4BY2
  
  MOV41H,R4
  
  MOVA,41H
  
  JNZJJ1
  
  MOVA,40H
  
  SUBBA,#0AH
  
  JNZJJ1
  
  MOV41H,#0AH
  
  JJ1:MOVA,R0
  
  MOVR4,A
  
  MOVA,R1
  
  MOVR5,A
  
  MOVR3,#00D
  
  MOVR2,10D
  
  LCALLDIV4BY2
  
  MOV42H,R4
  
  JNZJJ2
  
  MOVA,41H
  
  SUBBA,#0AH
  
  JNZJJ2
  
  MOV42H,#0AH
  
  JJ2:MOV43H,R0
  
  POPB
  
  POPPSW
  
  POPACC
  
  RET
  
  3.3.2主程序流程图
  
  软件分为两部分,主程序和中断服务程序,如图3-1(a)(b)(c)所示。主程序完成初始化工作、各路超声波发射和接收顺序的控制。
  
  定时中断服务子程序完成三方向超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。
  
  主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P1清0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12MHz的晶振,计数器每计一个数就是1μs,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(2)计算,即可得被测物体与测距仪之间的距离,设计时取20℃时的声速为344m/s则有:
  
  d=(c×t)/2=172T0/10000cm(2)
  
  其中,T0为计数器T0的计算值。
  
  测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。为了有利于程序结构化和容易计算出距离。
  

  3.3.3超声波发生子程序和超声波接收中断程序
  
  超声波发生子程序的作用是通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12μs左右,同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行准确,所以采用汇编语言编程。
  
  超声波测距仪主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。部分源程序如下:
  
  INTT0:CLREA
  
  CLRTR0
  
  MOVTH0,#00H
  
  MOVTL0,#00H
  
  SETBET1
  
  SETBEA
  
  SETBTR0
  
  SETBTR1
  
  OUT:RET;T1中断,发超声波用:
  
  INTT1:CPLVOUT
  
  DJNZR4,RETIOUT
  
  CLRTR1
  
  CLRET1
  
  MOVR4,#04H
  
  SETBEX0
  
  RETIOUT:RETI;外中断0,收到回波时进入
  
  PINT0:CLRTR0
  
  CLRTR1
  
  CLRET1
  
  CLREA
  
  CLREX0
  
  MOV44H,TL0
  
  MOV45H,TH0
  
  SETB00H
  
  RETI

来源:仪表技术
友情链接
北极星工程招聘网北极星电气招聘网北极星火电招聘网北极星风电招聘网北极星水电招聘网北极星环保招聘网北极星光伏招聘网北极星节能招聘网招标信息分类电子资料百年建筑网PLC编程培训

广告直拨:   媒体合作/投稿:陈女士 13693626116

关于北极星 | 广告服务 | 会员服务 | 媒体报道 | 营销方案 | 成功案例 | 招聘服务 | 加入我们 | 网站地图 | 联系我们 | 排行

京ICP证080169号京ICP备09003304号-2京公网安备11010502034458号电子公告服务专项备案

网络文化经营许可证 [2019] 5229-579号广播电视节目制作经营许可证 (京) 字第13229号出版物经营许可证新出发京批字第直200384号人力资源服务许可证1101052014340号

Copyright © 2022 Bjx.com.cn All Rights Reserved. 北京火山动力网络技术有限公司 版权所有