基于51单片机的超声波测距1.docx
- 文档编号:11719433
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:90.25KB
基于51单片机的超声波测距1.docx
《基于51单片机的超声波测距1.docx》由会员分享,可在线阅读,更多相关《基于51单片机的超声波测距1.docx(17页珍藏版)》请在冰点文库上搜索。
基于51单片机的超声波测距1
一设计题目基于51单片机的超声波测距
二设计者
姓名
班级
学号
组号
三、设计思路及框图、原理图
任务:
以单片机为核心,设计并制作一超声波测距系统基本要求:
利用时间差测距,不考虑温度变化
用数码管显示测试结果
工作频率:
450kHz
测距范围:
0.5~10米
测试精度:
10%
发挥部分尽量增大测控范围,提高测试精度
1.系统的硬件结构设计
1.1.超声波发生电路
发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的450kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。
输出端采两个反向器并联,用以提高驱动能力。
上位电阻R1O、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。
1.2超声波检测接收电路
采用集成电路CX20106A为超声波接收芯片。
实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。
适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。
1.3显示电路
显示电路主要由74ls273芯片驱动,用PNPC8550三级管进行位选,七段共阳极数码管显示。
2.系统的软件结构设计
设计思路
主程序中包括温度补偿子程序,计算子程序,显示子程序。
采用汇编编程。
首先进行系统初始化。
其次利用循环产生4个40KHZ的方波,由输出口进行输出,并开始计时。
第三等待中断,若超声波被接收探头捕捉到,那么通过中断可测得超声波在环境中的传播时长。
第四进行计算,求得测距仪到被测物的距离。
第五进行距离显示。
四.工作原理描述
超声波发生器发出的超声波以速度V在空气中传播,至被测物体时反射并返回至接收器,测得其往返时间为T,则与被测物体的距离为S=VT/2.因此次设计题目不要求考虑温度变化对V的影响,故设V是一定的,s=340t/2.
在此采用AT89C52单片机为控制器,用数码管显示测试结果,超声波驱动信号用单片机定时器。
五.器件清单
序号
器件
型号
封装
数量
1
单片机
AT89C52
DIP
1
2
反相器
74LS04
3
集成电路
CX20106A
4
74ls273
5
数码管
CON10
6
三极管
PNPC8550
3
7
电阻
4.7K
4
8
200k
22k
1k
2
按键开关
switch
1
晶振
12MHz
1
电容
3.3uf
2
330pf
1
0.056uf
1
33pf
2
0.1uf
1
附录程序清单
VOUTEQUP1.0
TEMP1EQU36H
TEP1EQU37H
DQEQUP1.7
FLAG1EQU38H
ORG0000H
JMPSTART
ORG0003H
JMPPINT0
;************主程序******************
START:
MOVP3,0FFH
MOVP0,0FFH
MOVP1,0FFH
MOVP2,0FFH
MOVTMOD,#01H
MOVTH0,#00H
MOVTL0,#00H
CLRIE0
SETBPX0
SETBEA
SETBEX0
CLRIT0
MOVR4,#4
SETBTR0
k:
CPLP1.0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR4,K
JNBIE0,$
LCALLTEMP
LCALLGET_TEMPER
LCALLCHANGE
LCALLWORK
LCALLDISPLAY1
LJMPSTART
PINT0:
CLRTR0
CLREX0
MOV30H,TL0
MOV31H,TH0
RETI
TEMP:
SETBDQ
NOP
CLRDQ
MOVR0,#0FBH;给延时程序赋初值
TSR1:
DJNZR0,TSR1;延时
SETBDQ
MOVR0,#25H;给延时程序赋初值
TSR2:
JNBDQ,TSR3;S18B20是否存在,存在就跳转到TSR3
DJNZR0,TSR2;不存在等待
TSR3:
SETBFLAG1;置标志位,表明DS18B20存在;
CLRP2.0;二极管指示
AJMPTSR5
TSR4:
CLRFLAG1
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6;延时
TSR7:
SETBDQ;表明不存在
RET
********读转换后的温度值*********
GET_TEMPER:
SETBDQ
LCALLTEMP
JBFLAG1,TSS2
RET;若不存在则返回
TSS2:
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#44H;发出温度转换命令
LCALLWRITE_18B20
LCALLTEMP
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#0BEH;发出读温度换命令
LCALLWRITE_18B20
LCALLREAD2_18B20;读两个字节的温度
RET
;*******写ds18b20汇编程序*******
WRITE_18B20:
MOVR2,#8
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
;**读18B20程序,读出两个字节的温度**
READ2_18B20:
MOVR4,#2;低位存在29H,高位存在28H
MOVR1,#29H
RE00:
MOVR2,#8
RE01:
CLRC
SETBC
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
;****读出的温度进行数据转换********
CHANGE:
MOVA,29H;
MOVC,28H.0;将28H中的最低位移入C
RRCA
MOVC,28H.1
RRCA
MOVC,28H.2
RRCA
MOVC,28H.3
RRCA
MOV29H,A
LCALLCONVERSE
RET
;*************DISPLAY******
CONVERSE:
MOVA,29H;将29H中的十六进制数转换成10进制
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVTEMP1,A
TABLE:
DB165D,165D,165D,166D,166D,166D,167D,167D,167D,167D
DB168D,168D,168D,169D,169D,169D,170D,170D,170D,171D
DB171D,171D,172D,172D,172D,173D,173D,173D,174D,174D
DB174D,174D,175D,175D,175D
RET
;*******计算子程序*********
WORK:
;MOVPSW,#18h;选择3区R系列寄存器
MOVR3,31H
MOVR2,30H
MOVR1,#00D
MOVR0,TEMP1
LCALLMUL2BY2
MOVR3,#27H
MOVR2,#10H
LCALLDIV4BY2
LCALLHBCD
RET
*两字节无符号数乘法程序*
;R7R6R5R4<=R3R2*R1R0速度X时间/2
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
*四字节/两字节无符号数除法程序*
;R7R6R5R4/R3R2=R7R6R5R4(商)...R1R0(余数)/10000
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
;*****************************;
;十六进制双字节转三字节十进制;
;*****************************;
HBCD:
MOVA,R5
MOVR6,A
MOVA,R4
MOVR7,A
HB2:
CLRA
MOVR3,A
MOVR4,A
MOVR5,A
MOVR2,#10H
HB3:
MOVA,R7
RLCA
MOVR7,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
MOVA,R3
ADDCA,R3
MOVR3,A
DJNZR2,HB3
MOVA,R5
ANLA,#0FH
MOV40H,A
MOVA,R5
ANLA,#0F0H
SWAPA
MOV41H,A
MOVA,R4
MOV42H,A
RET
;************************************
;显示子程序
;************************************
DISPLAY1:
MOVDPTR,#TABLE1
MOVR0,#4
DP1:
MOVR1,#250
LOOP:
MOVA,40H;显示低位
MOVCA,@A+DPTR
MOVP0,A
CLRP1.4
SETBP1.4
CLRP1.4
CLRP2.5
ACALLDELAY1
SETBP2.5
MOVA,41H;显示中位
MOVCA,@A+DPTR
MOVP0,A
SETBP1.4
CLRP1.4
CLRP2.6
ACALLDELAY1
SETBP2.6
MOVA,42H;显示高位
JZL
MOVCA,@A+DPTR
MOVP0,A
SETBP1.4
CLRP1.4
CLRP2.7
L:
ACALLDELAY1
SETBP2.7
DJNZR1,LOOP
DJNZR0,DP1
RET
TABLE1:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
DELAY1:
MOVR7,#80
DJNZR7,$
RET
DELAY:
MOVR5,#100
D:
MOVR6,#150
DJNZR6,$
DJNZR5,D
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 超声波 测距