#用51单片机设计超声波测距系统的设计原理和电路附源程序.docx
- 文档编号:28474111
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:51
- 大小:2.18MB
#用51单片机设计超声波测距系统的设计原理和电路附源程序.docx
《#用51单片机设计超声波测距系统的设计原理和电路附源程序.docx》由会员分享,可在线阅读,更多相关《#用51单片机设计超声波测距系统的设计原理和电路附源程序.docx(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三极管驱动。
单片机系统及显示电路如下图所示:
.
.
.
.
c
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
/
.
0
/
.
1
/
.
/
6
.
.
3
P
2
/
.
/
.
.
.
.
.
.
.
.
4
Q
2
1
0
9
4
R
K
7
4
3
Q
2
1
0
9
3
R
K
7
4
2
Q
2
1
0
9
2
R
K
7
4
0
1
5
1
Q
2
1
0
9
R
0
1
5
8642
11119753
1
R
K
7
4
01230123YYYYYYYY11112222
c
V
2
U
01230123AAAAAAAA11112222
24681357
1111
EE
OO
12
19
1
4
4
2
S
L
4
7
9876543233333333
1234567822222222
0123456711111111
0
D
A
0
0
P
1
D
A
1
0
P
2
D
A
2
0
P
3
D
A
3
0
P
4
D
A
4
0
P
5
D
A
5
0
P
6
D
A
6
0
P
7
D
A
7
0
P
8
A
0
2
P
9
A
1
2
P
0
1
A
2
2
P
1
1
A
3
2
P
2
1
A
4
2
P
3
1
A
5
2
P
4
1
A
6
2
P
5
1
A
7
2
P
D
X
R
0
3
P
D
X
T
1
3
P
0
T
N
I
2
3
P
1
T
N
I
3
3
P
T
4
3
P
T
5
3
P
RD
WR
/7
3
P
1
U
1
L
A
T
X
2
L
A
T
X
T
S
R
N
EE
SLA
PAE
T
0
1
P
X
E
2
T
1
1
P
2
1
P
3
1
P
4
1
P
5
1
P
6
1
P
7
1
P
2
5
C
9
8
T
A
9
1
8
1
9
901
233
12345678
1
T
X
M
2
1
1
S
2
C
p
0
2
3
C
p
0
2
8
R
K
0
1
1
C
u
3
3
D
N
G
图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
LOOP:
LCALLDISPLAY
DJNZR2,LOOP
SJMPSTART1
;重新开启测距定时器
;测量间隔控制(约4*100=400ms)
*中断程序*
;T0中断,65ms中断一次
INTT0:
CLREA
CLRTR0
MOVTH0,#00H
MOVTL0,#00H
SETBET1
SETBEA
SETBTR0;启动计时器T0,用以计算超声波来回时间
SETBTR1;开启发超声波用定时器T1
OUT:
RETI
;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
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR6,DL2
DJNZR6,DL1
RET
;超声波发送完毕,关T1
;开启接收回波中断
;关计数器
;将计数值移入处理单元
;接收成功标志*延时程序*
*显示程序*
;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
JJ1:
JJ2:
MUL2BY2:
MULLOOP1:
JNZJJ1
MOV41H,#0AH;最高位不亮,次高位也不亮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;次高位不亮,次高位也不亮MOV43H,R0
POPB
POPPSW
POPACC
RET
*两字节无符号数乘法程序
CLRA
MOVR7,A
MOVR6,A
MOVR5,A
MOVR4,A
MOV46H,#10H
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
MULLOOP2:
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
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
#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
CCCC0.7
DDDD3:
MOVP2,DISPBIT
MOVR5,#00H
MOVR7,#0AH
LCALL_DELAY
MOVP0,#0FFH
MOVP2,#0FFH
MOVA,DISPBIT
RLA
MOVDISPBIT,A
POPPSW
POPDPL
POPDPH
POPACC
RET
DISPTABLE:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0
FFH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 设计 超声波 测距 系统 原理 电路 源程序