用51单片机设计超声波测距系统的设计原理和电路(附源程序)_第1页
用51单片机设计超声波测距系统的设计原理和电路(附源程序)_第2页
用51单片机设计超声波测距系统的设计原理和电路(附源程序)_第3页
用51单片机设计超声波测距系统的设计原理和电路(附源程序)_第4页
用51单片机设计超声波测距系统的设计原理和电路(附源程序)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

4、驱动,位码用 PNP 三极管驱动。 单片机系统及显示电路如下图所示: XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A9

5、22P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52Q19012Q39012Q49012Q290121A021A141A261A382A0112A1132A2152A3171OE12OE191Y0181Y1161Y2141Y3122Y092Y172Y252Y33U274LS244R510510R14.7KR24.7KR34.7KR44.7KVccC13.3uXT112MS1C320pR810KC220pGND图2 单片机系统及显示电路2.超声波发射电路 利用555时基电路振荡产生40kHz 的超声波信号,使之和换能器的40k

6、Hz 固有频率一致。12V 电源保证555时基具有足够驱动能力。P1.1为超声波发射控制信号,由单片机控制。发射电路如图3所示: TRIG2Q3R4p1.1p1.1CVolt5THR6DIS7VCC8GND1555p1.13300PC50.1C6TR51k+12V5kR6 图3 超声波发射电路原理图3.超声波检测接收电路 超声波接收电路采用集成电路 CX20106A,这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHz 和测距超声波频率40KHz 较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。适当改变 C4

7、的大小,可改变接受电路的灵敏度和抗干扰能力。接收电路如图4所示: 图4 超声波接收电路图四系统软件部分四系统软件部分 超声波测距程序设计软件部分主要由主程序,超声波发射子程序,超声波接受中断程序及显示子程序组成。下面对超声波测距仪的算法,主程序,超声波发射子程序和超声波接受中断程序逐一介绍。1超声波测距仪的算法设计 下图示意了超声波测距的原理,即超声波发生器 T 在某一时刻发出的一个超声波信号,当超声波遇到被测物体后反射回来,就被超声波接收器 R 所接受。这样只要计算出发生信号到接受返回信号所用的时间,就可算出超声波发生器和反射物体的距离。距离计算公式:d=s/2=(c*t)/2*d 为被测物

8、和测距器的距离,s 为声波的来回路程,c 为声速,t 为声波来回所用的时间 2.主程序 主程序框图如右图所示:主程序首先对系统环境初始化,设置定时器 T0工作模式为16位的定时计数器模式,置位总中断允许位 EA 并给显示端口P0和 P2清0。然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用12MHz 的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器 T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体和测距仪

9、之间的距离,设计时取20时的声速为344m/s 则有:d=(C*T0)/2=172T0/10000cm(其中 T0为计数器 T0的计数值) 测出距离后结果将以十进制 BCD 码方式 LED,然后再发超声波脉冲重复测量过程。3.超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过 P1.1端口发送超声波发射控制脉冲信号,同时把计数器 T0打开进行计时。超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则

10、定时器 T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。五软硬件调试及性能五软硬件调试及性能 超声波发射和接收采用 15的超声波换能器 TCT40-10F1(T 发射)和 TCT40-10S1(R 接收) ,中心频率为40kHz,保持两换能器中心轴线平行并相距48cm。 主要性能指标:测距仪能测的范围为0.083.00m,测距仪精度1cm。程序清单以下是用汇编语言编写的超声波测距控制源程序:采用 AT89S52 12z 晶振显示缓冲单元在,使用内存 44H、45H、46H 用于计算距离20H 用于标志VOUT EQU P1.0 ;脉冲输出端口*中断入口程序*ORG 0

11、000H LJMP STARTORG 0003H LJMP PINT0ORG 000BH LJMP INTT0ORG 0013H RETIORG 001BH LJMP INTT1ORG 0023HRETIORG 002BH RETI*主程序*START: MOV SP, #4FH MOV R0, #40H ;4043H 为显示数据存放单元(40 为最高位) MOV R7,#0BHCLEARDISP:MOV R0, #00H INC R0 DJNZ R7, CLEARDISP MOV 20H, #00H MOV TMOD, #21H ;T1 为 8 位自动重装模式,T0 为 16 位定时器 MO

12、V TH0, #00H ;65ms 初值 MOV TL0, #00H ;40KHz 初值 MOV TH1, #0F2H MOV TL1, #0F2H MOV P0, #0FFHMOV P1, #0FFH MOV P2, #0FFH MOV P3, #0FFHMOV R4, #04H ;超声波脉冲个数控制(为赋值的一半)SETB PX0SETB ET0STEB EACLR 00HSETB TR0 ;开启测距定时器START1: LCALL DISPLAY JNB 00H, START1 ;收到反射信号时标志位为 1 CLR EA LCALL WORK ;计算距离子程序 SETB EA CLR 0

13、0H SETB TR0 ;重新开启测距定时器 MOV R2, #64H ; 测量间隔控制(约4*100=400ms)LOOP: LCALL DISPLAY DJNZ R2, LOOP SJMP START 1*中断程序*;T0 中断,65ms 中断一次INTT0: CLR EA CLR TR0 MOV TH0, #00H MOV TL0, #00H SETB ET1 SETB EA SETB TR0 ;启动计时器 T0,用以计算超声波来回时间 SETB TR1 ;开启发超声波用定时器 T1OUT: RETI;T1 中断,发超声波用INTT1: CPL VOUT DJNZ R4,RETIOUT

14、CLR TR1 ;超声波发送完毕,关 T1 CLR ET1 MOV R4,#04H SETB EX0 ;开启接收回波中断RETIOUT: RETI;外中断 0,收到回波时进入PINT0: CLR TR0 ;关计数器 CLR TR1 CLR ET1 CLR EA CLR EX0 MOV 44H, TL0 ;将计数值移入处理单元 MOV 45H, TH0 SETB 00H ;接收成功标志 RETI*延时程序*DL1MS: MOV R6, #14HDL1: MOV R7, #19HDL2: DJNZ R6, DL2 DJNZ R6, DL1 RET*显示程序*;40H 为最高位,43H 为最低位,先

15、扫描高位DISPLAY:MOVR1, #40H;GMOVR5,#0F7H;GPLAY:MOVA, R5MOVP0, #0FFHMOVP2, AMOVA, R1MOVDPTR, #TABMOVC A, 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,

16、8,9,不亮,A, *距离计算程序(=计算值17/1000cm) 近似WORK:PUSHACCPUSHPSW PUSHBMOVPSW, #18HMOVR3, 45HMOVR2, 44HMOVR1, #00D MOVR0, #17DLCALL MUL2BY2MOVR3, #03HMOVR2, #0E8H LCALLDIV4BY2LCALLDIV4BY2MOV40H, R4MOVA, 40HJNZJJ0MOV40H, #0AH ;最高位为 0,不点亮JJ0:MOVAR0MOVR4, AMOVAR1MOVR5 AMOV R3, #00DMOVR2, #100DLCALLDIV4BY2MOV41H,

17、R4MOVA, 41H JNZJJ1MOVA, 40H ;此高位为 0,先看最高位是否为不亮 SUBB A, #0AHJNZJJ1MOV41H, #0AH ; 最高位不亮,次高位也不亮JJ1:MOVA, R0MOVR4, AMOVA, R1MOVR5, AMOVR3, #00DMOVR2, #10DLCALL DIV4BY2MOV42H, R4MOVA42HJNZJJ2MOVA, 41H ;次高位为 0,先看次高位是否为不亮SUBB A, #0AHJNZJJ2MOV42H, #0AH ;次高位不亮,次高位也不亮JJ2:MOV43H, R0POPBPOPPSWPOPACCRET *两字节无符号数

18、乘法程序 MUL2BY2:CLRAMOVR7, AMOVR6, AMOV R5, AMOVR4, AMOV46H, #10HMULLOOP1:CLRCMOVA, R4RLCAMOVR4, AMOVA, R5RLCAMOVR5, AMOVA, R6RLCAMOVR6, AMOVA, R7RLCAMOV R7, AMOV A, R0RLC AMOVR0, AMOVA, R1RLCAMOVR1, AJNCMULLOOP2MOVA, R4ADDA, R2MOVR4, AMOVA, R5ADDC A, R3MOVR5, AMOVA, R6ADDC A, #00HMOVR6, AMOVA, R7ADDC

19、A, #00HMOVR7, AMULLOOP2:DJNZ46H, MULLOOP1RET*四字节/两字节无符号数除法程序*DIV4BY2:MOV46H, #20HMOVR0, #00HMOVR1, #00HDIVLOOP1: MOVA, R4 RLCAMOVR4, AMOVA, R5RLCAMOVR5, AMOVA, R6RLCAMOVR6, AMOVA, R7RLCAMOVR7, AMOVA, R0RLCAMOVR0, AMOVA, R1RLCAMOVR1, A CLRCMOVA, R0SUBB A, R2MOVB, AMOV A, R1SUBB A, R3JCDIVLOOP2MOVR0,

20、BMOVR1, ADIVLOOP2:CPLCDJNZ46H, DIVLOOP1MOVA, R4RLCAMOVR4, AMOVA, R5RLCAMOVR5, AMOVA, R6 RLCAMOVR6, AMOVA, R7RLCAMOVR7, ARET;END 附 C51 程序#INCLUDE #DEFINE UCHAR UNSIGNED CHAR#DEFINE UINT UNSIGNED INT#DEFINE ULONG UNSIGNED LONG EXTERN VOID CS_T(VOID);EXTERN VOID DELAY(UINT);EXTERN VOID DISPLAY(UCHAR*);

21、/DATA UCHAR DISPLAY(UCHAR*);DATA UCHAR TESTOK;VOID MAIN (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

22、=(UCHAR) (TIME%10); TIME/=10; DISPRAM1=(UCHAR) (TIME%10); TIME/=10; DISPRAM2=(UCHAR) (TIME%10); DISPRAM3=(UCHAR) (TIME/10); IF (0=DISPRAM3) DISPRAM3=17; ELSE DISPRAM 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; T

23、ESTOK=1;VOID OVERTIME(VOID) INTERRUPT 1 EX0=0; TR0=0; ET0=0; TESTOK=2; NAME CS_T?PR?CS_T?CS_T SEGMENT CODE PUBLIC CS_T RSEG ?PR?CS_T?CS_T CS_T: PUSH ACC MOV TH0, #00H MOV TL0, #00H MOV A, #4D SETB TR0CS_T1: CPL p1.0 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ ACC,CS_T1 POP ACC RET ; END NAME DELAY?PR?_DELAY?DELAY SEGMENT CODEPUBLIC _DELAY RSEG ?PR?_DELAY?DELAY_DELAY: PUSH ACC MOV A,R7 JZ DELA1 INC R6DELA1: MOV R5,#50D

温馨提示

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

评论

0/150

提交评论