用51单片机设计超声波测距系统的设计原理及电路_第1页
用51单片机设计超声波测距系统的设计原理及电路_第2页
用51单片机设计超声波测距系统的设计原理及电路_第3页
用51单片机设计超声波测距系统的设计原理及电路_第4页
用51单片机设计超声波测距系统的设计原理及电路_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于51单片机的超声波测距仪说明书引言超声波测距仪,可应用于汽车倒车、建筑施工工地以及一些工业 现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。 利用超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因 而超声波经常用于距离的测量。利用超声波检测往往比较迅速、方便、 计算简单、易于做到实时控制。一、性能要求该超声波测距仪,要求测量范围在0.08-3.00m,测量精度1cm, 测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。二、工作原理及方案论证超声波传感器及其测距原理超声波是指频率高于20KHz的机械波。用超声波传感器产生超 声波和接收超声波,习惯上称为超声波换能器或超

2、声波探头。超声波 传感器有发送器和接收器.超声波传感器是利用压电效应的原理将电 能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超 声波;而在收到回波的时候,则将超声振动转换成电信号。超声波测距的原理一般采用渡越时间法TOF(timeofflight)。 首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声 波的速度就得到二倍的声源与障碍物之间的距离。根据要求并综合各方面因素,采用AT89C52单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定 时器完成,超声波测距仪的系统框图如下图所示:图1超声波测距仪系统设计框图三、系统硬件部分硬件部分主要由单

3、片机系统及显示电路、超声波发射电路和超声 波检测接收电路三部分组成。单片机系统及显示电路单片机采用AT89C52来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.1引脚发射脉 冲控制超声波的发送,然后单片机不停的检测外中断0口 INT0引脚, 当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。 计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传 感器与障碍物之间的距离。显示电路采用简单实用的4位共阳LED数 码管,段码用74LS244驱动,位码用PNP三极管驱动。单片机系统及显示电路如下图所示:Qxccboo-LD-C4SB

4、O-CJOB 04ATMH06 UJlAAOOfe O-C-CJB nAAMOfe OQnvofero in m 11DO 9 寸 Z?0E*20L06AIan-in&+ r3EWniC7+C?+c?330pF尸3.3UFF图4超声波接收电路图系统软件部分超声波测距程序设计软件部分主要由主程序,超声波发射子程 序,超声波接受中断程序及显示子程序组成。下面对超声波测距仪的 算法,主程序,超声波发射子程序和超声波接受中断程序逐一介绍。超声波测距仪的算法设计下图示意了超声波测距的原理,即超声波发生器T在某一时刻发 出的一个超声波信号,当超声波遇到被测物体后反射回来,就被超声 波接收器R所接受。这样只

5、要计算出发生信号到接受返回信号所用的 时间,就可算出超声波发生器与反射物体的距离。距离计算公式:d=s/2=(c*t)/2*d为被测物与测距器的距离,s为声波的来回路程,c为声速,t为声波来回所用的时间部声喧测距原照图主程序主程序框图如右图所示:主程序首先对系统环境初始化,设置定时器T0工作模式为16位的定时计数器模式,卅始:置位总中断允许位EA并给显示端口 P0和亲赢砒P2清0。然后调用超声波发生子程序送出发兴禹波豚抻|一个超声波脉冲,为避免超声波从发射器I眼直接传送到接收器引起的直接波触发,需网臃声波山 延迟0.1ms(这也就是测距器会有一个最|计,距离|小可测距离的原因)后,才打开外中断

6、0接|物熹D.享|收返回的超声波信号。由于采用12MHz的 晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数 器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测 物体与测距仪之间的距离,设计时取20C时的声速为344m/s则有: d=(C*T0)/2=172T0/10000cm (其中T0为计数器T0的计数值)测出距离后结果将以十进制BCD码方式LED,然后再发超声波脉冲重复测量过程。超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过P1.1端口发送超声波发射控制脉冲 信号,同时把计数器T0打开进行计时。超声波测距器主程序利用外 中断0检测返回超声波信

7、号,一旦接收到返回超声波信号(INT0引脚 出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器 T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未 检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将 测距成功标志字赋值2以表示此次测距不成功。软硬件调试及性能超声波发射和接收采用15的超声波换能器TCT40-10F1 (T发 射)和TCT40-10S1 (R接收),中心频率为40kHz,保持两换能器中心 轴线平行并相距48cm。主要性能指标:测距仪能测的范围为0.083.00m,测距仪精度 1cm。程序清单以下是用汇编语言编写的超声波测距控制源程序:采用AT89

8、S52 12MHz晶振显示缓冲单元在4 0H-43H,使用内存44H、45H、46H用于计算距离 20H用于标志VOUT EQU P1.0;脉冲输出端口*中断入口程序*ORG 0000HLJMP STARTORG 0003HLJMP PINT0ORG 000BHLJMPINTT0ORG0013HRETIORG001BHLJMPINTT1ORG0023HRETIORG002BHRETI*主程序*START: MOV SP, #4FHMOV R0, #40H;4043H为显示数据存放单元(40为最高位)MOV R7,#0BHCLEARDISP:MOV R0, #00HINCR0DJNZR7, CL

9、EARDISPMOV20H, #00HMOVTMOD, #21H;T1为8位自动重装模式,T0为16位定时器MOVTH0, #00H;65ms 初值MOVTL0, #00H;40KHz 初值MOVTH1, #0F2HMOVTL1, #0F2HMOVP0, #0FFHMOVP1, #0FFHMOVP2, #0FFHMOVP3, #0FFHMOVR4, #04H;超声波脉冲个数控制(为赋值的 半)SETBPX0SETBET0STEBEACLR00HSETBTR0;开启测距定时器START1:LCALL DISPLAYJNB00H, START1;收到反射信号时标志位为1CLREALCALL WOR

10、K;计算距离子程序SETBEACLR00HSETBTR0;重新开启测距定时器MOVR2, #64H; 测量间隔控制(约4*100=400ms)LOOP:LCALLDJNZSJMPDISPLAYR2, LOOPSTART 1*中断程序*;T0中断,65ms中断一次INTT0:CLREACLRTR0MOVTH0, #00HMOVTL0, #00HSETBET1SETBEASETBTR0;启动计时器T0,用以计算超声波来回时间SETBTR1;开启发超声波用定时器T1OUT:RETI;T1中断,发超声波用INTT1:CPLVOUTDJNZR4,RETIOUTCLRTR1;超声波发送完毕,关T1CLRE

11、T1MOVR4,#04HSETBEX0;开启接收回波中断RETIOUT:RETI汐卜中断0,收到回波时进入PINT0:CLRTR0;关计数器CLRTR1CLRET1CLREACLREX0MOV44H, TL0;将计数值移入处理单元MOV45H, TH0SETB00H;接收成功标志RETI*延时程序*DL1MS:MOVR6, #14HDL1:MOVR7, #19HDL2:DJNZR6, DL2DJNZR6, DL1RET*显示程序*;40H为最高位,43H为最低位,先扫描高位DISPLAY:MOVMOVR1, #40H;G R5,#0F7H;GPLAY:MOVA, R5MOVP0, #0FFHM

12、OVP2, AMOVA, R1MOVDPTR, #TABMOVCA, A+DPTRMOVP0, ALCALL DLIMSINCR1MOVA, R5JNBACC.0, ENDOUT;GRRAMOVR5, AAJMPPLAYENDOUT;MOVP2, #0FFHMOVP0, #0FFHRETTAB; DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH ;共阳数码管 0 ,1, 2,3,4,5,6,7,8,9,不亮,A,*距离计算程序(=计算值X 17/1000cm)近似WORK:PUSHACCPUSHPSWPUSHBMOVPS

13、W, #18HMOVR3, 45HMOVR2, 44HMOVR1, #00DMOVR0, #17DLCALL MUL2BY2MOV R3, #03HMOV R2, #0E8HLCALL DIV4BY2LCALL DIV4BY2JJ0:JJ1:JJ2:MUL2BY2:MOV 40H, R4MOV A, 40HJNZ JJ0;最高位为0,不点亮MOV 40H, #0AHMOV A R0MOV R4, AMOV A R1MOV R5 AMOV R3, #00DMOV R2, #100DLCALL DIV4BY2MOV 41H, R4MOV A, 41HJNZ JJ1MOV A, 40H;此高位为0,

14、先看最高位是否为不亮SUBB A, #0AHJNZ JJ1MOV 41H, #0AH; 最高位不亮,次高位也不亮MOV A, R0MOV R4, AMOV A, R1MOV R5, AMOV R3, #00DMOV R2, #10DLCALL DIV4BY2MOV 42H, R4MOV A 42HJNZ JJ2MOV A, 41H;次高位为0,先看次高位是否为不亮SUBB A, #0AHJNZ JJ2MOV 42H, #0AH;次高位不亮,次高位也不亮MOV 43H, R0POP BPOP PSWPOP ACCRET*两字节无符号数乘法程序CLR AMOV R7, AMOVR6, AMOVR5

15、, AMOVR4, AMOV46H, #10HMULLOOP1: CLRCMOVA, R4RLCAMOVR4, AMOVA, R5RLCAMOVR5, AMOVA, R6RLCAMOVR6, AMOVA, R7RLCAMOVR7, AMOVA, R0RLCAMOVR0, AMOVA, R1RLCAMOVR1, AJNCMULLOOP2MOVA, R4ADDA, R2MOVR4, AMOVA, R5ADDCA, R3MOVR5, AMOVA, R6ADDCA, #00HMOVR6, AMOVA, R7ADDCA, #00HMOVR7, AMULLOOP2: DJNZ46H, MULLOOP1RE

16、T*四字节/两字节无符DIV4BY2:MOV46H, #20HMOVR0, #00HMOVR1, #00H数除法程序*DIVLOOP1:MOVA, R4RLCAMOVR4, AMOVA, R5RLCAMOVR5, AMOVA, R6RLCAMOVR6, AMOVA, R7RLCAMOVR7, AMOVA, R0RLCAMOVR0, AMOVA, R1RLCAMOVR1, ACLRCMOVA, R0SUBBA, R2MOVB, AMOVA, R1SUBBA, R3JCDIVLOOP2MOVR0, BMOVR1, ADIVLOOP2:CPLCDJNZ46H, DIVLOOP1MOVA, R4RLC

17、AMOVR4, AMOVA, R5RLCAMOVR5, AMOVA, R6RLCAMOVR6, AMOVA, R7RLCAMOVR7, ARET;END附C51程序#INCLUDE #DEFINE UCHAR UNSIGNED CHAR#DEFINE UINT UNSIGNED INT#DEFINE ULONG UNSIGNED LONGEXTERN VOID CS_T(VOID);EXTERN VOID DELAY(UINT);EXTERN VOID DISPLAY(UCHAR*);/DATA UCHAR DISPLAY(UCHAR*);DATA UCHAR TESTOK;VOID MAIN

18、 (VOID)DATA UCHAR DISPRAM5;DATA UINT I;DATA ULONG TIME;P0=0XFF;P2=0XFF;TMOD=0X11;IE=0X80;WHILE (1)CS_T();DELAY(1);TESTOK=0;EX0=1;ET0=1;WHILE(! TESTOK) DISPLAY(DISPRAM);IF (1=TESTOK)TIME=TH0;TIME=(TIME8)| TL0;TIME*=172;TIME/=10000;DISPRAM0=(UCHAR) (TIME%10);TIME/=10;DISPRAM1=(UCHAR) (TIME%10);TIME/=1

19、0;DISPRAM2=(UCHAR) (TIME%10);DISPRAM3=(UCHAR) (TIME/10);IF (0=DISPRAM3) DISPRAM3=17; ELSEDISPRAM 0=16;DISPRAM 1=16;DISPRAM 2=16;DISPRAM 3=16;FOR (I=0;I300;I+) DISPLAY(DISPRAM);VOID CS_R(VOID) INTERRUPT 0 TR0=0;ET0=0;EX0=0;TESTOK=1;VOID OVERTIME(VOID) INTERRUPT 1EX0=0;TR0=0;ET0=0;NAME CS_TTESTOK=2;PR

20、CS_TCS_TSEGMENTCODEPUBLICCS_TRSEG?PR?CS_T?CS_TCS_T:PUSHACCMOVTH0, #00HMOVTL0, #00HMOVA, #4DSETBTR0CS_T1:CPLp1.0NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPDJNZACC,CS_T1POPACCRET;ENDNAME DELAYPR DELAYDELAY SEGMENT CODEPUBLIC _DELAY RSEG ?PR?_DELAY?DELAY _DELAY:PUSH ACCMOV A,R7 JZ DELA1 INC R6DELA1: MOV R5,#50D DJNZ R5, $ DJNZ R7,DELA1 DJNZ R6,DELA1 POP ACCRETENDNAME

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论