超声波测距电路+汇编程序

发布者:pengbinyyy最新更新时间:2015-06-16 来源: 51hei关键字:超声波测距  汇编程序  STC89C52 手机看文章 扫描二维码
随时随地手机看文章
我现在在做超声波测距,用的是非门 + CX20106A方案。发射部分用非门驱动,如下:

 (原文件名:超声波发射电路原理图.gif) 

 


我手上没有74ALS04或74LS04,所以用74HC04和HCF4069UBE代替。

超声波接收采用CX20106A,如下:

 (原文件名:接收电路 .jpg) 

 


我用的CX20106A是拆机件。

用万用板搭好电路之后,在网上找到了一些参考汇编程序,我修改后可以通过串口发到PC显示超声波往返的时间:
;/////////////////////////////////////////////////////// 
;               USE  BY :超声波测距器                  
;               IC      :STC89C52                      
;               OSCCAL  :XT   (12M)                                  
;///////////////////////////////////////////////////////
;
       T2CON    EQU     0C8H
       T2MOD    EQU     0C9H
       RCAP2L   EQU     0CAH
       RCAP2H   EQU     0CBH
       TH2      EQU     0CDH
       TL2      EQU     0CCH       
       VOUT     EQU     P3.7                    ;超声波输出端口

;********************************************
;*             中断入口程序                 *
;********************************************
;
      ORG 0000H        ;复位
      LJMP  START           
      ORG 0003H        ;外部中断0
      LJMP  PINT0     
      ORG 000BH        ;T0溢出中断 
      RETI     
      ORG 0013H        ;外部中断1
      RETI   
      ORG 001BH        ;T1溢出中断   
      LJMP  INTT1   
      ORG 0023H        ;串口中断
      RETI   
      ORG 002BH        ;T2EN端负跳变(52系列)
      RETI     [page]
;
;********************************************
;*               主 程 序                   *
;********************************************
;
           START:  MOV     SP,#4FH                   
                   MOV     SCON,#50H     ;串口方式1工作,8位数据位,1位停止位,无奇偶校验,允许接收
                   MOV     T2MOD,#00H    ;DCEN = 0,向上计数
                   MOV     RCAP2H,#0FEH  ;定时器T2置重装数,波特率:1200. (12MHz)
                   MOV     RCAP2L,#0C8H
                   MOV     TH2,#0FEH     ;定时器T2置初值
                   MOV     TL2,#0C8H  
                   MOV     T2CON,#34H    ;T2工作方式:波特率发生器,同时启动Time2定时器 
                   CLR     TI  
                   CLR     30H           
                   
                   MOV     TMOD,#11H     ;T1、T0为16位定时器
                   MOV     TH0,#00H      ;65毫秒初值
                   MOV     TL0,#00H
                   MOV     TH1,#00H     
                   MOV     TL1,#00H
                   MOV     P0,#0FFH
                   MOV     P1,#0FFH
                   MOV     P2,#0FFH
                   MOV     P3,#0FFH
                   MOV     R4,#04H       ;超声波脉冲个数控制(为赋值的一半,即2个超声波)
                   SETB    PX0
                   CLR     IE0           ;外部中断0中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件自动将IE0位清0
                   SETB    IT0           ;当IT0 = 1时,则外部中断0(INT0 )端口由“1 ”→“0 ”下降沿跳变,激活中断请求标志位IE0,向主机请求中断处理
                   SETB    ET1           ;允许T1中断
                   SETB    EA
                   SETB    TR1           ;开启测距定时器
;main主循环开始                   
            start1: 
                    JNB    30H,$         ;收到反射信号时标志位为1
                    
                    CLR    EA            ;不让T1中断                 
                    MOV    R2,#64H       ;测量间隔控制(约5*100=500MS). 64H = 100
              LOOP: LCALL  DL1MS
                    LCALL  DL1MS
                    LCALL  DL1MS
                    LCALL  DL1MS
                    LCALL  DL1MS                    
                    DJNZ   R2,LOOP  
                                      
                    CLR    30H           ;清除反射信号标志位
                    CLR    ET0           ;关闭T0中断
                    MOV    TH0,00H
                    MOV    TL0,00H
                    SETB   TR1           ;重新开启测距定时器
                    SETB   EA                   
                    SJMP   start1
;main主循环结束
 
;****************************************************
;*                    中断程序                      *
;****************************************************
 
;T1中断,发超声波用     ;T1中断,65毫秒中断一次
INTT1:          CLR     EA
                CLR     TR0
                CLR     EX0
                MOV     TH0,#00H
                MOV     TL0,#00H
                MOV     TH1,#00H
                MOV     TL1,#00H
                SETB    ET0             ;外部中断0中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件自动将IE0位清0
                SETB    EA
                SETB    TR0             ;启动计数器T0,用以计算超声波传播时间
intt11:
                CPL     VOUT            ;发射40KHZ超声波. 晶振:12MHz,1us
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop 
                nop                             
                DJNZ    R4,intt11       ;2us
                                        ;超声波发送完毕 
                CLR     IE0
                MOV     R4,#04H
                LCALL   DL1MS           ;延时2ms,避开发射的直达声波信号,消除余震 
                LCALL   DL1MS        
                SETB    EX0             ;开启接收回波中断
                
RETIOUT:        RETI

;外中断0,收到回波时进入
PINT0:          nop
                jb      P3.2,pint0_exit
                CLR     TR0             ;关闭T0                 
                CLR     EA             
                CLR     EX0                  
                
                MOV     SBUF,TH0
                JNB     TI,$
                CLR     TI
                
                MOV     SBUF,TL0
                JNB     TI,$
                CLR     TI                
              
                MOV     TH0,#00H
                MOV     TL0,#00H
                JNB     p3.2,$
                SETB    30H             ;接收成功标志
pint0_exit:
                RETI
;

;****************************************************
;*                    延时程序                      *
;****************************************************
;
DL1MS: 
               push    06H
               push    07H
 
               MOV    R6,#14H    ;14H = 20
        DL1:   MOV    R7,#19H    ;19H = 25
        DL2:   DJNZ   R7,DL2     ;2us * 25 = 50
               DJNZ   R6,DL1     ;50us * 20 = 1000us
               pop    07H
               pop    06H
               RET
;

;
DL100US: 
               push    06H
 
               MOV    R6,#32H    ;32H = 50
        DL3:   DJNZ   R7,DL3     ;2us * 50 = 100us
               pop    07H
               pop    06H
               RET
;

   END

关键字:超声波测距  汇编程序  STC89C52 引用地址:超声波测距电路+汇编程序

上一篇:基于51单片机驱动S8330E C语言程序
下一篇:51单片机C语言us级的精确延时

推荐阅读最新更新时间:2024-03-16 14:04

基于STC89C52单片机和DS18B20温度传感器实现温度采集系统的设计
随着现代信息技术的高速发展,数据采集方面的技术也在不断地向前发展,并在信息技术中占有重要地位,是否及时准确采集数据以及数据是何方式采集都成为关注的焦点。随着嵌入式技术的不断发展,各种数据采集系统不断应用于各个领域。温度采集在智能家居、工业控制、智能农业等方面都应用。本温度采集系统下位机采用STC89C52单片机为主控制器,采用DS18B20温度传感器采集温度,上位机使用VB编写程序,通过串口采集数据,存入Access数据库,并实时在界面上显示温度变化曲线。 1 系统的整体设计 本温度采集系统的总体框图如图1所示,系统下位机即单片机系统采用的是现成的开发板,开发板上自带了DS18B20的温度传感器,开发板也自带了能够维持单片机正
[单片机]
基于<font color='red'>STC89C52</font>单片机和DS18B20温度传感器实现温度采集系统的设计
51单片机时钟汇编程序
终于到了 感动ing...自己也可以DIY一个电子时钟了。 电路板和原件要另外找,南宁市的电子元件稀少得真难找啊,弄好后焊接,看来要找个好点的焊台,这样焊接电路时比较方便。 电路如下: ;简单的89C2051时钟程序 ;显示方式为.12:34之12小时制 ;P1口输出段数据,P3口输出位数据 ;P1.7为秒点,P3.7为PM输出 ;P3.4校时,P3.5校分 ;晶振12MHz flash equ 31h sec equ 32h ;定义秒存储位置 min equ 33h ;定义分存储位置 hour equ 34h hourk bit p3.4 ;调时按钮 mink bit
[单片机]
STM32驱动URM04超声波测距模块
URM04简介: URM04采用了RS485串行通信总线的架构,支持多传感器的并行工作,有着两个RS-485接口,最多支持32个超声波的并联, 内置温度传感器辅助校正距离值,同时支持温度的测量 应用场合:移动机器人,停车场,安全检测,超声波空间定位。 性能描述: 工作电源:+5V 接口方式:RS485 RS485总线通讯, 超声波距离测量: 最大距离4cm―500cm 测量范围角度: 60度 芯片型号:Atmel公司的ATmega8芯片 MAX202 MAX485 ST温度测量芯片 测量流程: 1触发超声波与温度测量指令 发送指令后,超声波开始测量,温度开始测量,无返回值 2延时30MS 超声波最大测距5米,
[单片机]
STM32驱动URM04<font color='red'>超声波测距</font>模块
基于AT89S52单片机的超声波测距原理图
该超声波测距系统,电路简单,工作稳定,无需调试,制作成功率高。采用AT89S52单片机作处理器,工作电源:AC6V及电脑USB口两种供电方式;测距范围:40cm~700cm(盲区40cm),测量结果由三位数码管直接显示出来,当测量超过上限值收不到回波时显示 C C C , 测量低于下限值40cm时显示 - - - 。模块上设有一输出端口,用于输出报警信号,当测量结果小于设定的报警值时继电器吸合。报警值可通过板上的两个按键开关K1、K2设定,设定值范围40cm~600cm。 51单片机超声波DIY
[单片机]
DSP的汇编程序优化
1 引言   数字信号处理器(DSP)相对于模拟信号处理器有很大的优越性,表现在精度高,灵活性大,可靠性好,易于大规模集成等方面。随着半导体制造工艺的发展和计算机体系结构的改进,数字信号处理器的功能越来越强大,对信号处理系统的研究重点又重新回到软件算法上,而不再像过去那样过多地考虑硬件的可实现性。随着DSP运算能力的不断提高,能够实时处理的信号带宽也大大增加,数字信号处理的研究重点也由最初的非实时性应用转向高速实时应用。   目前大多数DSP虽然都支持C语言编程,但是在实际工程应用中,最常用的方法是用C语言编写流程控制。搭建工程框架,具体的算法模块及比较耗时的功能模块还是采用汇编语言来编写。这是因为C语言虽然具有易读性、可
[嵌入式]
超声波测距系统中单片机的应用
引言   在自主行走机器人系统中,机器人要实现在未知和不确定环境下行走,必须实时采集环境信息,以实现避障和导航,这必须依靠能实现感知环境信息的传感器系统来实现。视觉、红外、激光、超声波等传感器都在行走机器人中得到广泛应用。由于超声波测距方法设备简单、价格便宜、体积小、设计简单、易于做到实时控制,并且在测量距离、测量精度等方面能达到工业实用的要求,因此得到了广泛的应用。本文所介绍的机器人采用三方超声波测距系统,该系统可为机器人识别其运动的前方、左方和右方环境而提供关于运动距离的信息。   1 超声波测距原理   超声波发生器内部由两个压电片和一个共振板组成。当它的两极外加脉冲信号,且其频率等于压电晶片的固有振荡频率时,压
[工业控制]
<font color='red'>超声波测距</font>系统中单片机的应用
基于STC89C52单片机的LED调光系统电路设计
LED 的排列方式及LED 光源的规范决定着基本的驱动器要求。 LED驱动器的主要功能就是在一定的工作条件范围下限制流过LED的电流,而无论输入及输出电压如何变化。最常用的是采用变压器来进行电气隔离。下文论述了LED照明设计需要考虑的调光因素。 正是因为调光的要求所以驱动LED 面临着不少挑战,如正向电压会随着温度、电流的变化而变化,而不同个体、不同批次、不同供应商的LED 正向电压也会有差异;另外,LED 的“色点”也会随着电流及温度的变化而漂移。 下文 LED采用多个串联的方式,供电电源为12V电,所以使用了一级升压电路。 系统组成 LED调光系统组成框图如图1.1所示。 图1 LED调光系统组成框图 单元硬件电
[电源管理]
基于<font color='red'>STC89C52</font>单片机的LED调光系统电路设计
单片机成长之路(51基础篇) - 004 STC89C52MCU 软件系统复位
用户应用程序在运行过程中,有时会有特殊需求,需要实现单片机系统复位(热启动之一),传统的8051单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。STC单片机增加了相应的硬件功能,内部的ISP/IAP控制寄存器ISP_CONTR便可以实现此功能。用户只需简单的控制ISP_CONTR特殊功能寄存器的其中两位SWBS和SWRST就可以实现系统复位。 ISP/IAP控制寄存器(ISP_CONTR) STC单片机ISP/IAP控制寄存器在特殊功能寄存器中的字节地址为E7H,不能位寻址,该寄存器用来管理和ISP/IAP相关的功能设定及是否软件复位等。单片机复位时该寄存器全部被清0。其各位的定义如表4.3.1所示。
[单片机]
单片机成长之路(51基础篇) - 004 <font color='red'>STC89C52</font>MCU 软件系统复位
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved