超声波测距仪发送接收整套调试.docx
- 文档编号:26671579
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:14
- 大小:275.67KB
超声波测距仪发送接收整套调试.docx
《超声波测距仪发送接收整套调试.docx》由会员分享,可在线阅读,更多相关《超声波测距仪发送接收整套调试.docx(14页珍藏版)》请在冰豆网上搜索。
超声波测距仪发送接收整套调试
第三节.物位仪发送接收整套程序
物位仪最终的目的就是要测量到与物位的距离。
发送接收的软件设计主要由超声波发送程序、超声波接收中断程序、运算程序和显示程序组成。
通过单片机89C52发送矩形波信号,在低电平时候触发换能器,同时打开计数器1,在高电平时候停止发送,给负责接收的锁相环留出时间进行捕捉频率。
在程序设计前还要进行盲区的设置,因为在换能器刚发出频率信号后,由于共振,我们要避免超声波从发射刚开始就传送到接收引起直射波信号,我们需要延时大概4000us到12000us,这个就是我们所说的要设置盲区。
在盲区之后,才打开电子控制开关G4,频率信号进入锁相环LM567,输出端8脚由高电平跃变为低电平,作为中断请求信号,响应中断请求信号后,触发外部中断1进行信号的接收,一旦接收到信号,计数器1立即停止,通过算法子程序将数据进行S=1/2CT的计算后,送到4094驱动数码管显示出测得的结果。
如果计数器溢出还没有收到回波信号,则将关闭计数器T1,并不断发送矩形脉冲。
直到距离在量程以内才行。
发送接收程序的流程图如图6.4所示
图6.4
实际测量举例:
当我们测量1米83距离时候,通过Medwin2.39调试出的特殊功能寄存器和数据区的数据记录如下面两幅图可以看到。
从图6.5可以看出,在外部中断1接收到回波后,计数器1就停止计数了。
这样,可以求得TH1里面的数据是2A,而TL1中的数据是90,我们根据数据计算:
图6.5
图6.6
从图6.6数据存储器中可以看到,20H单元存放的是T—CLK、GAIN4里面数据,即00000101,所以20H里面是05H,而50H、51H分别存放TL1、TH1的值,40H、41H、42H、43H里面就是存放数码管显示的数据,通过4094移位功能,最后显示在数码管上的结果就是183,单位是厘米,如果有四个数码管,理论上,最大可以测到99米距离,计数器1能计算的最大距离大约是10米,所以,显示是足够的。
三.发送接收的源程序:
ORG0000H
SJMPST
ORG0013H
LJMPJIE
ST:
MOVSP,#70H;程序初始化
MOVR0,#00H;
MOV20H,#0FFH;
MOV50H,#00H;令计数器存储单元为零
MOV51H,#00H;
MOVTMOD,#10H;
MOVTCON,#00H;
MOVIE,#00H;
MOVIP,#00H;
MOVTH1,#00H;计数器1为零
MOVTL1,#00H;
SETBEA;开启中断
SETBEX1;外部中断1中断允许位
SETBET0;T0的溢出中断允许位,为1,允许T0中断
SETBPX1;外部中断1为高级优先级中断
SETBIE1;外部中断1请求源,当IE为1,向CPU请求中断
CLRIT1;外部中断1触发方式控制位。
为零则为电平触发方式
MAIN:
CLR00H;控制T-CLK,使其为低电平
CLR01H;控制4060复位RST
CLR02H;控制G4电子开关
CLRP2.3;控制4001与非门,因为4001与非门输出端高电平触发
MOVR0,#0FFH;给出外部扩展地址FFH
MOVA,20H;01H、01H、02都是20H的位地址,控制74HC573
MOVX@R0,A;将门控信号都给0ffH
SETBP2.3;锁存4001
MOVTL1,#00H;对计数器1赋予初值
MOVTH1,#00H;
SETBTR1;在T-CLK发出的一瞬间,开启定时器1
LCALLDEL1;调用T-CLK发出1ms的低电平
SETB00H;控制T-CLK,使其为高电平
SETB01H;RST
CLRP2.3;开启74HC573进行数据传送
MOVR0,#0FFH;给出外部扩展地址
MOVA,20H;01H、01H、02都是20H的位地址,控制
74HC573
MOVX@R0,A;将门控信号都给0ffH
SETBP2.3;锁存4001
LCALLDEL2;设置一米五的盲区时间
SETB02H;打开G4电子开关,使其能进入567而能
够接收到脉冲
CLRP2.3;打开4001
MOVR0,#0FFH;
MOVA,20H;
MOVX@R0,A;
SETBP2.3;锁存4001
LCALLDET;调用600ms的高电平时间
CLRTR1;如果循检不到收到的脉冲,则关闭定时器
LCALLSTOP;中断返回后,将采样到的时间进行数据运
算,调用运算程序
LJMPMAIN;
;Name:
DEL1
;FUNC:
1ms延时程序
DEL1:
MOV30H,#10;1ms延时程序
DEL11:
MOV31H,#50;
DEL12:
NOP
DJNZ31H,DEL12;
DJNZ30H,DEL11;
RET
;Name:
DET
;FUNC:
600ms延时程序
DET:
MOV32H,#100;600ms延时程序
DET1:
MOV33H,#100;
DET2:
MOV34H,#30;
NOP;
DET3:
DJNZ34H,DET3;
DJNZ33H,DET2;
DJNZ32H,DET1;
RET
;Name:
DEL2
;FUNC:
9ms延时程序
DEL2:
MOV35H,#45;9ms延时程序,用于设置盲区
DEL21:
MOV36H,#100;
DEL22:
NOP
DJNZ36H,DEL22;
DJNZ35H,DEL21;
RET
;Name:
STOP
;FUNC:
双字节乘以单字节程序
;INPUT:
被乘数放在54H、53H中,乘数17cm,化成十进制就是11H
;OUTPUT:
乘法运算结果放在58H、57H、55H
STOP:
CLRC;
MOVA,#0FFH;单字节乘单字节,即255*TH1
MOVB,51H;
MULAB;
XCHA,51H;
MOV52H,B;
MOVA,51H;52H51H+00H50H=54H53H
ADDA,50H;
MOV53H,A;
MOVA,52H;
ADDCA,#00H;
MOV54H,A;
MOVA,53H;路程计算
MOVB,#11H;
MULAB;53H*17cm/s
XCHA,55H;53H*17cm/s低位放55H
MOV56H,B;53H*17cm/s高位放56H
MOVA,54H;
MOVB,#11H;
MULAB;54H*17cm/s
ADDA,56H;54H*17cm/s低位和53H*17cm/s相加放到
57H
MOV57H,A;
CLRA;令A等于零,为下步计算做铺垫
ADDCA,B;若有进位,则
MOV58H,A;54H*17cm/s高位和进位加放到58H
;Name:
CHU7
;FUNC:
三字节除双字节商为三字节除法子程序
;INPUT:
被除数放在内部RAM55H、57H、58H单元中,除数放在03H、E8H中
;OUTPUT:
商数放在内部RAM63H、62H、61H单元中,余数放在59H,60H单元中.
MOV64H,#18H;除法计算
MOV59H,#00H
MOV60H,#00H
CHU7:
CLRC
MOVA,55H;被除和扩充位左移
RLCA;
MOV55H,A;
MOVA,57H;
RLCA
MOV57H,A
MOVA,58H
RLCA
MOV58H,A
MOVA,59H;存放余数低位
RLCA
MOV59H,A
MOVA,60H;存放余数高位
RLCA
MOV60H,A;
MOVA,61H;商数左移
RLCA;
MOV61H,A
MOVA,62H
RLCA
MOV62H,A
MOVA,63H
RLCA
MOV63H,A
CLRC
MOVA,59H;判断
SUBBA,#0E8H
MOV65H,A
MOVA,60H
SUBBA,#03H
MOV66H,A
JCLOOP1
INC61H
MOVA,65H;建立余数
MOV59H,A
MOVA,66H
MOV60H,A
LOOP1:
DJNZ64H,CHU7
;入口条件:
待转换的双字节十六进制整数在62H、61H中。
;62H为高八位,61H为底8位
;出口信息:
转换后的三字节BCD码整数在高67H、中68H、低69H中。
;影响资源:
PSW、A、6AH、67H、68H、69H、61H、62H,堆栈需求:
2字节
CLRA;BCD码初始化
MOV67H,A;
MOV68H,A;
MOV69H,A;
MOV6AH,#10H;转换双字节十六进制整数
HB3:
MOVA,61H;从高端移出待转换数的一位到CY中
RLCA
MOV61H,A
MOVA,62H
RLCA
MOV62H,A
MOVA,69H;BCD码带进位自身相加,相当于乘2
ADDCA,69H
DAA;十进制调整
MOV69H,A
MOVA,68H
ADDCA,68H
DAA
MOV68H,A
MOVA,67H
ADDCA,67H
MOV67H,A;双字节十六进制数的万位数不超过6,不用
调整
DJNZ6AH,HB3;处理完16bit
ACALLLED
RET
LED:
MOV40H,69H;显示个位数字
MOVA,40H;
ANLA,#0FH;
LCALLDSPLAY;调用4094显示控制程序
MOV41H,69H;显示十位数字
MOVA,41H;
ANLA,#0F0H;
SWAPA;
LCALLDSPLAY;调用4094显示控制程序
MOV42H,68H;显示百位数字
MOVA,42H;
ANLA,#0FH;
LCALLDSPLAY;调用4094显示控制程序
MOV43H,68H;显示千位数字
MOVA,43H;
ANLA,#0F0H;
SWAPA;
LCALLDSPLAY;调用4094显示控制程序
SETBP1.0;当所有数据都送到4094后,一下子
开启STROBE
CLRP1.0;
RET
DSPLAY:
MOVDPTR,#TAB;设置段码表首地址
MOVCA,@A+DPTR;
MOV44H,#08H;送显示驱动
CLRP1.0;控制4094的STROBE
LOOP3:
CLRC;
RLCA;
MOVP1.3,C;数据由P1.3口输出
CLRP1.2;控制4094时钟端
NOP
SETBP1.2;
DJNZ44H,LOOP3;8次数据送满,就转
RET
JIE:
PUSHACC;保护现场
PUSHPSW;
SETBP3.3;给外部中断1一个强制高电平
JBP3.3,J_R;等待外部中断1接收到低电平
CLRTR1;低电平收到,说明距离已经测到,则关
闭计数器
MOV50H,TL1;将计数器1计到的数据分别存放到
50H、51H
MOV51H,TH1;
NOP
J_R:
POPPSW
POPACC
RETI
TAB:
DB01H,37H,42H,12H,34H
DB18H,08H,33H,00H,10H
DB20H,0CH,49H,06H,48H
DB68H
END
四.实物图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超声波 测距仪 发送 接收 整套 调试