完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx

上传人:b****1 文档编号:10908305 上传时间:2023-05-28 格式:DOCX 页数:23 大小:78.64KB
下载 相关 举报
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第1页
第1页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第2页
第2页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第3页
第3页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第4页
第4页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第5页
第5页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第6页
第6页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第7页
第7页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第8页
第8页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第9页
第9页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第10页
第10页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第11页
第11页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第12页
第12页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第13页
第13页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第14页
第14页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第15页
第15页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第16页
第16页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第17页
第17页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第18页
第18页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第19页
第19页 / 共23页
完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx

《完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx》由会员分享,可在线阅读,更多相关《完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx(23页珍藏版)》请在冰点文库上搜索。

完整用51单片机设计超声波测距系统的设计原理及电路附源程序.docx

完整用51单片机设计超声波测距系统的设计原理及电路附源程序

(完整)用51单片机设计超声波测距系统的设计原理及电路附源程序

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)用51单片机设计超声波测距系统的设计原理及电路附源程序)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)用51单片机设计超声波测距系统的设计原理及电路附源程序的全部内容。

基于51单片机的超声波测距仪说明书

引言

超声波测距仪,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。

利用超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量.利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制。

一、性能要求

该超声波测距仪,要求测量范围在0.08—3.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。

二、工作原理及方案论证

超声波传感器及其测距原理

超声波是指频率高于20KHz的机械波。

用超声波传感器产生超声波和接收超声波,习惯上称为超声波换能器或超声波探头.超声波传感器有发送器和接收器。

超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距的原理一般采用渡越时间法TOF(timeofflight)。

首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。

根据要求并综合各方面因素,采用AT89C52单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距仪的系统框图如下图所示:

图1超声波测距仪系统设计框图

三、系统硬件部分

硬件部分主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。

1.单片机系统及显示电路

单片机采用AT89C52来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。

单片机通过P1.1引脚发射脉冲控制超声波的发送,然后单片机不停的检测外中断0口INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。

计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离.显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动.

单片机系统及显示电路如下图所示:

图2单片机系统及显示电路

2。

超声波发射电路

利用555时基电路振荡产生40kHz的超声波信号,使之与换能器的40kHz固有频率一致。

12V电源保证555时基具有足够驱动能力.P1.1为超声波发射控制信号,由单片机控制。

发射电路如图3所示:

图3超声波发射电路原理图

3。

超声波检测接收电路

超声波接收电路采用集成电路CX20106A,这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。

考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。

实验证明其具有很高的灵敏度和较强的抗干扰能力。

适当改变C4的大小,可改变接受电路的灵敏度和抗干扰能力。

接收电路如图4所示:

图4超声波接收电路图

四.系统软件部分

超声波测距程序设计软件部分主要由主程序,超声波发射子程序,超声波接受中断程序及显示子程序组成。

下面对超声波测距仪的算法,主程序,超声波发射子程序和超声波接受中断程序逐一介绍.

1.超声波测距仪的算法设计

下图示意了超声波测距的原理,即超声波发生器T在某一时刻发出的一个超声波信号,当超声波遇到被测物体后反射回来,就被超声波接收器R所接受.这样只要计算出发生信号到接受返回信号所用的时间,就可算出超声波发生器与反射物体的距离.

距离计算公式:

d=s/2=(c*t)/2

*d为被测物与测距器的距离,s为声波的来回路程,c为声速,t为声波来回所用的时间

2。

主程序

主程序框图如右图所示:

主程序首先对系统环境初始化,设置定时器T0工作模式为16位的定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清0。

然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。

由于采用12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,设计时取20℃时的声速为344m/s则有:

d=(C*T0)/2=172T0/10000cm(其中T0为计数器T0的计数值)

测出距离后结果将以十进制BCD码方式LED,然后再发超声波脉冲重复测量过程。

3.超声波发生子程序和超声波接收中断程序

超声波发生子程序的作用是通过P1.1端口发送超声波发射控制脉冲信号,同时把计数器T0打开进行计时。

超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断程序。

进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。

如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。

五.软硬件调试及性能

超声波发射和接收采用Φ15的超声波换能器TCT40-10F1(T发射)和TCT40—10S1(R接收),中心频率为40kHz,保持两换能器中心轴线平行并相距4~8cm。

主要性能指标:

测距仪能测的范围为0。

08~3。

00m,测距仪精度1cm。

程序清单

以下是用汇编语言编写的超声波测距控制源程序:

采用AT89S5212MHz晶振

显示缓冲单元在40H~43H,使用内存44H、45H、46H用于计算距离

20H用于标志

VOUTEQUP1。

0;脉冲输出端口

*中断入口程序*

ORG0000H

LJMPSTART

ORG0003H

LJMPPINT0

ORG000BH

LJMPINTT0

ORG0013H

RETI

ORG001BH

LJMPINTT1

ORG0023H

RETI

ORG002BH

RETI

*主程序*

START:

MOVSP,#4FH

MOVR0,#40H;40~43H为显示数据存放单元(40为最高位)

MOVR7,#0BH

CLEARDISP:

MOV@R0,#00H

INCR0

DJNZR7,CLEARDISP

MOV20H,#00H

MOVTMOD,#21H;T1为8位自动重装模式,T0为16位定时器

MOVTH0,#00H;65ms初值

MOVTL0,#00H;40KHz初值

MOVTH1,#0F2H

MOVTL1,#0F2H

MOVP0,#0FFH

MOVP1,#0FFH

MOVP2,#0FFH

MOVP3,#0FFH

MOVR4,#04H;超声波脉冲个数控制(为赋值的一半)

SETBPX0

SETBET0

STEBEA

CLR00H

SETBTR0;开启测距定时器

START1:

LCALLDISPLAY

JNB00H,START1;收到反射信号时标志位为1

CLREA

LCALLWORK;计算距离子程序

SETBEA

CLR00H

SETBTR0;重新开启测距定时器

MOVR2,#64H;测量间隔控制(约4*100=400ms)

LOOP:

LCALLDISPLAY

DJNZR2,LOOP

SJMPSTART1

*中断程序*

;T0中断,65ms中断一次

INTT0:

CLREA

CLRTR0

MOVTH0,#00H

MOVTL0,#00H

SETBET1

SETBEA

SETBTR0;启动计时器T0,用以计算超声波来回时间

SETBTR1;开启发超声波用定时器T1

OUT:

RETI

 

;T1中断,发超声波用

INTT1:

CPLVOUT

DJNZR4,RETIOUT

CLRTR1;超声波发送完毕,关T1

CLRET1

MOVR4,#04H

SETBEX0;开启接收回波中断

RETIOUT:

RETI

;外中断0,收到回波时进入

PINT0:

CLRTR0;关计数器

CLRTR1

CLRET1

CLREA

CLREX0

MOV44H,TL0;将计数值移入处理单元

MOV45H,TH0

SETB00H;接收成功标志

RETI

*延时程序*

DL1MS:

MOVR6,#14H

DL1:

MOVR7,#19H

DL2:

DJNZR6,DL2

DJNZR6,DL1

RET

 

*显示程序*

;40H为最高位,43H为最低位,先扫描高位

DISPLAY:

MOVR1,#40H;G

MOVR5,#0F7H;G

PLAY:

MOVA,R5

MOVP0,#0FFH

MOVP2,A

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

LCALLDLIMS

INCR1

MOVA,R5

JNBACC。

0,ENDOUT;G

RRA

MOVR5,A

AJMPPLAY

ENDOUT;MOVP2,#0FFH

MOVP0,#0FFH

RET

TAB;DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH

;共阳数码管0,1,2,3,4,5,6,7,8,9,不亮,A,—

*距离计算程序(=计算值×17/1000cm)近似

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;最高位为0,不点亮

JJ0:

MOVAR0

MOVR4,A

MOVAR1

MOVR5A

MOVR3,#00D

MOVR2,#100D

LCALLDIV4BY2

MOV41H,R4

MOVA,41H

JNZJJ1

MOVA,40H;此高位为0,先看最高位是否为不亮

SUBBA,#0AH

JNZJJ1

MOV41H,#0AH;最高位不亮,次高位也不亮

JJ1:

MOVA,R0

MOVR4,A

MOVA,R1

MOVR5,A

MOVR3,#00D

MOVR2,#10D

LCALLDIV4BY2

MOV42H,R4

MOVA42H

JNZJJ2

MOVA,41H;次高位为0,先看次高位是否为不亮

SUBBA,#0AH

JNZJJ2

MOV42H,#0AH;次高位不亮,次高位也不亮

JJ2:

MOV43H,R0

POPB

POPPSW

POPACC

RET

*两字节无符号数乘法程序

MUL2BY2:

CLRA

MOVR7,A

MOVR6,A

MOVR5,A

MOVR4,A

MOV46H,#10H

MULLOOP1:

CLRC

MOVA,R4

RLCA

MOVR4,A

MOVA,R5

RLCA

MOVR5,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R7

RLCA

MOVR7,A

MOVA,R0

RLCA

MOVR0,A

MOVA,R1

RLCA

MOVR1,A

JNCMULLOOP2

MOVA,R4

ADDA,R2

MOVR4,A

MOVA,R5

ADDCA,R3

MOVR5,A

MOVA,R6

ADDCA,#00H

MOVR6,A

MOVA,R7

ADDCA,#00H

MOVR7,A

MULLOOP2:

DJNZ46H,MULLOOP1

RET

*四字节/两字节无符号数除法程序*

DIV4BY2:

MOV46H,#20H

MOVR0,#00H

MOVR1,#00H

DIVLOOP1:

MOVA,R4

RLCA

MOVR4,A

MOVA,R5

RLCA

MOVR5,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R7

RLCA

MOVR7,A

MOVA,R0

RLCA

MOVR0,A

MOVA,R1

RLCA

MOVR1,A

CLRC

MOVA,R0

SUBBA,R2

MOVB,A

MOVA,R1

SUBBA,R3

JCDIVLOOP2

MOVR0,B

MOVR1,A

DIVLOOP2:

CPLC

DJNZ46H,DIVLOOP1

MOVA,R4

RLCA

MOVR4,A

MOVA,R5

RLCA

MOVR5,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R7

RLCA

MOVR7,A

RET

END

附C51程序

#include〈reg51。

h〉

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

externvoidcs_t(void);

externvoiddelay(uint);

externvoiddisplay(uchar*);

//datauchardisplay(uchar*);

datauchartestok;

 

voidmain(void)

{

datauchardispram[5];

datauinti;

dataulongtime;

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=(time<〈8)|TL0;

time*=172;

time/=10000;

dispram[0]=(uchar)(time%10);

time/=10;

dispram[1]=(uchar)(time%10);

time/=10;

dispram[2]=(uchar)(time%10);

dispram[3]=(uchar)(time/10);

if(0==dispram[3])dispram[3]=17;

}else

{

dispram[0]=16;

dispram[1]=16;

dispram[2]=16;

dispram[3]=16;

for(i=0;i〈300;i++)display(dispram);

}

 

voidcs_r(void)interrupt0

{

TR0=0;

ET0=0;

EX0=0;

testok=1;

 

voidovertime(void)interrupt1

{

EX0=0;

TR0=0;

ET0=0;

testok=2;

NAMECS_T

PR?

CS_T?

CS_TSEGMENTCODE

PUBLICCS_T

RSEG?

PR?

CS_T?

CS_T

CS_T:

PUSHACC

MOVTH0,#00H

MOVTL0,#00H

MOVA,#4D

SETBTR0

CS_T1:

CPLp1。

0

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZACC,CS_T1

POPACC

RET

;

END

namedelay

pr?

_delay?

delaysegmentcode

public_delay

rseg?

pr?

_delay?

delay

_delay:

pushacc

mova,r7

jzdela1

incr6

dela1:

movr5,#50d

djnzr5,$

djnzr7,dela1

djnzr6,dela1

popacc

ret

end

NAMEDISPLAY

PR?

_DISPLAY?

displaysegmentcode

co?

_DISPLAY?

displaysegmentdata

EXTRNCODE(_DELAY)

PUBLIC_DISPLAY

RSEG?

CO?

_DISPLAY?

DISPLAY

_display?

byte:

dispbit:

ds1

dispnum:

ds1

rseg?

pr?

_display?

display

_display:

pushacc

pushdph

pushdpl

pushpsw

incdispnum

mova,dispnum

cjnea,#4d,disp1

DISP1:

JCDISP2

MOVDISPNUM,#00H

MOVDISPBIT,#0FEH

DISP2:

MOVA,R1

ADDA,DISPNUM

MOVR0,A

MOVA,@R0

MOVDPTR,#DISPTABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,DISPNUM

CJNEA,#2D,DISP3

CLRP0.7

DISP3:

MOVP2,DISPBIT

MOVR5,#00H

MOVR7,#0AH

LCALL_DELAY

MOVP0,#0FFH

MOVP2,#0FFH

MOVA,DISPBIT

RLA

MOVDISPBIT,A

POPPSW

POPDPL

POPDPH

POPACC

RET

DISPTABLE:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH

END

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2