利用超声波测量距离实例设计02(续)_第1页
利用超声波测量距离实例设计02(续)_第2页
利用超声波测量距离实例设计02(续)_第3页
利用超声波测量距离实例设计02(续)_第4页
利用超声波测量距离实例设计02(续)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、利用超声波测量距离实例设计02(续)摘要:在分析超声波测距原理的基本上,提出设计测距仪的思路和所需考虑的问题,给出实现超声波测距方案的软、硬件设计系统框图。关键词:超声波传感器;超声波;MCS-51;测距;SMC1602A液晶显示器。分块电路详细介绍:1.信号发射驱动:超声波信号由51产生,通过P1.0口输出,一个40kHz的脉冲信号,持续发射216s。原始信号是5p-pV。采用的运放是TL084CN,放大三倍,输出15p-pV。TL084CN: JFET输入四运算放大器, 引脚图:主要工作参数:Vs(最大值)(V):36Vs(最小值)(V):7带宽GBW(典型值)(MHz):3转换速率(典型

2、值)(V/s):13输入失调电压Vio(25)(最大值)(mV):15共模抑制比(最小值)(dB):70噪声电压(典型值)(nV/Hz开平方):18考虑实际后,我们选用15.5V的电源,由于同时要用正负,就要把两个电源连起来使用。导致后来使用的5V时,又使用了另外一组电源,导线拖的较长。经过运放放大,驱动超声波发射头发出40kHz的脉冲超声波。TL084CN,放大三倍,即R2=3R1。令R1=1K,R2=3K。Vcc=15.5v, Vcc=15.5v。2.信号接收放大与整形这一部分具体分为三个环节:接受放大,滤波,检波。总体电路如下:2.1 接收放大:接收头与发射头配对,接受后将超声波调制脉冲

3、变为交变电压信号输入到运放进行放大。TL084CN有4个运放可以同时工作,于是我们的电路中所有的放大工作都在一个芯片里头,包括后面的有源滤波中的运放。检测到接受的原始信号从发射时的方波变为了正弦波,幅值大约在20 mV,于是把放大倍数定在5倍,也就是R3=1k,R4=5.1k。2.2 滤波:放大后的信号介入C1,经C1,R5和运放组成的滤波系统滤波后从运放输出。滤波这块是整个电路设计中改动次数最多的一块,最后决定用一阶有源高通滤波。 C1用的型号是103,也就是0.01F。R56.2k 截止频率f =2.6kHz 采用的是一阶滤波,也就是频率在2.6 kHz以下的信号以20dB的速率衰减。滤去

4、了一些对我们来说的低频噪声。 2.3 检波LM567放大滤波后的信号经过C2入LM567。带有锁定环的音频译码集成块LM567。LM567为通用音调译码器,是一个高稳定性的低频集成锁相环路解码器。 2.3.1 - LM567内部结构及工作原理LM567内部包含了两个鉴相器PD1及PD2、放大器AMP、电压控制振荡器VCO等单元电路。锁相环路输出信号由电压控制振荡器VCO产生,电压控制振荡器的自由振荡频率(即无外加控制电压时的振荡频率)与外接定时元件RC的关系式为:f01/1.1RC选用适当的定时元件,可使LM567的振荡频率在0.01Hz500kHz范围内连续变化。电路工作时,输入信号在鉴相器

5、PD1中与VCO的输出信号鉴相,相差信号经滤波回路滤波后,成为与相差成一定比例的电压信号,用于控制VOC输出频率f0跟踪输入信号的相位变化。若输入信号频率落在锁相环路的捕获带内,则环路锁定,在振荡器输出频率与输入频率相同时,二者之间只有一定相位差而无频率差。PD2的工作方式与PD1略有不同,它是利用压控振荡器输出的信号f0经90移相后再与输入信号进行鉴相,是一正交鉴相器。在环路锁定情况下,PD2的两个输入信号在相位上相差约为90,因而PD2的输出电压达到其输出范围内的最大值,再经运算放大器AMP反相,在其输出端输出一个低电平。AMP的输出端为OC输出方式,低电平输出时可吸收最大100mA的输出

6、电流。该端口的低电平输出信号除可由上拉电阻转换为电压信号以与TTL或CMOS接口电路相匹配外,还可直接驱动LED及小型继电器等较大负载。值得一提的是,接在2脚的环路滤波电容C2与内部电阻一道构成锁相环路的RC积分滤波器,该滤波器时间常数的大小在很大程度上决定了锁相环路的环路带宽BW的大小。当BW较大时,捕获范围大而稳定性差。减小BW则正好相反,其稳定性较好而捕获范围变小。LM567在正常工作时的最小输入信号为25mV。当用于单音解码时,其工作特性为:当LM567信号输入端加入幅度为25mV以上的交流信号且频率落入f0BW范围内时,输出端输出一个低电平的检测信号,这就是所谓的“频率继电器”特性。

7、2.3.2 LM567管脚排列及功能LM567其、脚外接的电阻和电容决定了内部压控振荡器的中心频率f0f01/1.1RC。、脚通常分别通过一电容器接地,形成输出滤波网络和环路单级低通滤波网络。脚所接电容决定锁相环路的捕捉带宽:电容值越大,环路带宽越窄。脚所接电容的容量应至少是脚电容的2倍。脚是输入端,要求输入信号25mV。脚是逻辑输出端,其内部是一个集电极开路的三极管,允许最大灌电流为100mA。LM567的工作电压为4.759V,工作频率从直流到500kHz,静态工作电流约8mA。2.3.3 - LM567特性:逻辑兼容输出具有吸收100mA电流能力 可调带宽从0%至14% 宽信号输出与噪声

8、的高抑制 对假信号抗干扰 高稳定的中心频率 中心频率调节从0.01Hz到500kHz 电源电压4.759V LM567的内部电路及详细工作过程非常复杂,这里仅将其基本功能概述如下:当LM567的脚输入幅度25mV、频率在其带宽内的信号时,脚由高电平变成低电平,脚输出经频率/电压变换的调制信号;如果在器件的脚输入音频信号,则在脚输出受脚输入调制信号调制的调频方波信号。2.3.4 LM567在本实验中的应用。在我们这个实验中仅利用了LM567接收到大于25mV相同频率的载波信号后脚的电压由高变低这一特性,作为中断请求信号,送至单片机处理。通过R6C3调中心频率f:超声波信号的频率是41.67kHz

9、,所以RC选用C3的型号:103,即C3F,于是R6=2.18 kC4,C5形成输出滤波网络。C4决定锁相环路的捕捉带宽:电容值越大,环路带宽越窄。C5 2C4选用C4型号为22,即, C4=F C5型号103,即,C5=F,符合C5 2C4的要求。其他元件大小:C2=1F, R72 k引脚4接Vcc=+5V,引脚7接地。引脚8通过上拉电阻R7接至Vcc, 同时作为中断信号引入INT0。 当LM567接收到大于25mV,40kHz的载波信号后8脚的电压由高变低,引起INT0下跳沿触发中断。3.液晶显示器SMC1602显示结果3.1 SMC1602是一种16字2行的字符型液晶显示模块,其引脚及其

10、功能图如下图:3.2 SMC1602的内部结构SMC1602主要是由DDRAM 、CGROM 、CGRAM、 IR 、DR 、BF 、AC等大规模集成电路组成。DDRAM为数据显示用的RAM(Data Display RAM,简称DDRAM),有以存放要LCD显示的数据,只要将标准的ASCII码放入DDRAM,内部控制线路就会自动将数据传送到显示器上,并显示出该ASCII码对应的字符;CGRAM为字型 字符产生器的RAM(Character Generator RAM,简称CGRAM),可 供使用者存储特殊造型的造型码,CGRAM最多可存储8个造型;IR为指令寄存器(Instruction R

11、egister,简称 IR),负责存储MCU要写给LCD的指令码,当RS及引脚信号为0时且Enable引脚信号由1变为0时,D0D7引脚上的数据便会存入到IR寄存器中;DR为数据寄存器(Data Register,简称DR),它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及引脚信号为1且Enable引脚信号由1变为0时,读取数据;当RS引脚信号为1,引脚信号为0且Enable引脚信号由1变为0时,存入数据;BF为忙碌信号(Busy Flag,简称BF),当BF为1时,不接收微机送来的数据或指令;当

12、BF为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0;AC为地址计数器(Address Counter,简称AC),负责计数写入/读出CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。其内部结构框图如下所示:3.3 液晶显示器SMC1602与MCU51相连的电路图定义: 一. 超声波系统软件设计 这里仅写出总程序,详细的程序模块分解,设计原理等,请见下文“六.2软件部分的编程问题 ” RS EQU P3.0 RW EQU P3.1 E EQU P3.5 f bit 01h ORG 0000H ;上电,程序入口 AJMP M

13、AIN ORG 0003H ;外部中断0入口 AJMP INT ;转中断程序 ORG 0030H ;数据存储区入口MAIN: mov sp,#0050h ;数据清零 ;MOV 30H,#0 ;MOV 31H,#0 ;MOV 32H,#0 ;MOV 33H,#0 ;MOV 34H,#0 ;MOV 35H,#0 ;MOV 36H,#0 ;MOV 37H,#0 ;MOV 40H,#0 ;MOV 41H,#0 ;MOV 42H,#0 ;MOV 43H,#0 ;MOV 44H,#0 ;MOV 45H,#0 ;MOV 46H,#0 ;MOV 47H,#0 ;MOV 48H,#0 ;MOV 49H,#0 ;

14、显示的初始化 acall t5 ;延时15ms acall t5 acall t5 mov p0,#38h ;写指令38H(不检测忙信号) ;acall enable ;acall t5 mov p0,#38h ;acall enable ;acall t5 mov p0,#38h ;acall enable ;acall t5 mov p0,#38h ;显示模式2行 acall enable mov p0,#08h ;关显示 acall enable mov p0,#01h ;清屏 acall enable MOV P0,#06h ;光标右移 ACALL ENABLE mov p0,#0Eh

15、 ;显示开,显示光标,不闪烁; acall enable SETB IT0 ;INT0边沿触发,下跳沿有效 CLR ET0 ;关T0溢出中断 MOV TH0,#00H ;定时器清零 MOV TL0,#00H MOV tmod,#01H ;选择定时/计数器0,用定时器模式,选择方式1工作 SETB PX0 ;定义外部中断0为高优先级中断 SETB P1.0 JIANCE: JNB P1.2,AA ;用P1.2作为用户的外部控制口,高电位或悬空等待检测,低电位运行程序 SJMP JIANCE AA: MOV TH0,#00H ;定时器清零 MOV TL0,#00H SETB EX0 ;开外部中断0

16、允许 SETB EA ;开总中断 SETB TR0 ;启动定时器T0 puzel: mov 14h, #12h ;超声波发射持续210us here: cpl p1.0 ;输出40kHz方波 nop ; nop ; nop ; nop ; nop ; nop ; nop ; nop ; nop ; djnz 14h,here ;控制发射周期数(即发射时间) jnb f,$ ;等待中断,用f作为发射程序和中断程序的接口 clr f ;使下次发射时能无限循环等待中断 jmp AA ;重新发射 INT: CLR EA ;关总中断 CLR TR0 ;关定时器 SETB f ;中止发射程序等待 PUSH

17、 PSW ;保护现场 PUSH ACC CLR EX0 ;关外部中断0 MOV R5,TH0 ;读取时间值 MOV R4,TL0 MOV 36H,R5 ;R5,R4做乘数 MOV 37H,R4 CLR C ;排除未经反射的超声波直接入接受口 MOV A,R5 SUBB A,#01H JNC TRAN LJMP OUT TRAN: MOV R6,#11H ;R6做被乘数,计算得所测距离的二进制数 CLR C ;二字节数与一字节数相乘 MOV A,R6 MOV B,R4 MUL AB MOV 30H,A MOV 35H,A MOV R3,B MOV A,R6 MOV B,R5 MUL AB CLR

18、 C ADD A,R3 MOV 31H,A MOV 34H,A mov a,b ADDC a,#00H MOV 32H,a MOV 33H,A ;计算得所测距离的二进制数,结果在33H、34H、35H里,从高位到低位排列 ;3字节二进制数转化成BCD数BCD: MOV R1,#40H MOV R2,#03 INC R2 CLR ABB0: MOV R1,A INC R1 DJNZ R2,BB0 MOV A,#03 MOV B,#8 MUL AB MOV R3,A ;R3为24位,即总循环次数BB3: MOV R0,#30H MOV R2,#3 CLR CBB1: MOV A,R0 RLC A

19、;通过带进位左移取出最高位 MOV R0,A INC R0 DJNZ R2,BB1 MOV R2,#3 INC R2 MOV R1,#40HBB2: MOV A,R1 ADDC A,R1 ;2+新位值 DA A ;BCD数相加十进制调整 MOV R1,A INC R1 DJNZ R2,BB2 DJNZ R3,BB3 ;控制总循环次数 ;所测距离的十进制数,结果在42H、41H、40H里,从高位到低位排列 ;BCD数转换为ASCII码 mov a,42h anl a,#0f0h swap a add a,#30h mov 45h,a ;最高位放在45h中 mov a,42h anl a,#0fh

20、 add a,#30h mov 46h,a ;第2位放在46h中 mov a,41h anl a,#0f0h swap a add a,#30h mov 47h,a ;第3位放在47h中 mov a,41h anl a,#0fh add a,#30h mov 48h,a ;第4位放在48h中 mov a,40h anl a,#0f0h swap a add a,#30h mov 49h,a ;第5位放在49h中 mov p0,#80h ;最高位数字显示在第一行第一个 acall enable mov a,45h acall write mov p0,#81h ;第二位数字显示在第一行第二个 a

21、call enable mov a,46h acall write mov p0,#82h ;第三位数字显示在第一行第三个 acall enable mov a,47h acall write mov p0,#83h ;小数点显示在第一行第四个 acall enable mov a,#2eh acall write mov p0,#84h ;第四位数字显示在第一行第五个 acall enable mov a,48h acall write mov p0,#85h ;第五位数字显示在第一行第六个 acall enable mov a,49h acall write mov p0,#86h ;字母

22、C显示在第一行第七个 acall enable mov a,#43h acall write mov p0,#87h ;字母M显示在第一行第八个 acall enable mov a,#4Dh acall write mov r6,0ffh ;延时52561280ms,相当于1.2s左右显示一个数据 delay: acall t5 djnz r6,delay OUT: POP PSW ;恢复现场 POP ACC clr ie0 ;开中断 MOV TH0,#00H ;定时器清零 MOV TL0,#00H RETI ;中断结束,返回 ;延时5ms的子程序t5: mov r3,#0ah d1:mov

23、 r4,#0ffh d2:djnz r4,d2 ;256*2=500us djnz r3,d1 ;500*10=5000us=5ms ret ;使能子程序ENABLE:CLR RS ;RS清零,选择命令寄存器 CLR RW ;RW清零,选择写入 CLR E ;禁止使能 ACALL t5 ;调用延时5ms子程式 SETB E ;启动使能 RET write: mov p0,a setb rs ;RS置1,选择数据寄存器 clr rw ;RW清零,选择写入 nop ;延时 clr e ;禁止使能 acall t5 ;禁止使能 setb e ;启动使能 ret end 二. 问题与分析实验中的问题还

24、是很多的,硬件部分和软件部分都出现了很多问题。1. 硬件部分的电路问题:1.1电源问题:由于实验的放大要用到运放器件TL084CN,这个器件的电源输出和最后它能放大输出的最大电压是相同的,从51出来的信号是5V的方波,所以如果你选择正负12V的电源,即使放大3倍,最大输出也是12V。所以后来我们选择了15.5V作为TL084CN的工作电源。(TL084CN的最大工作电源为18V)由于同时要用正负电源,就要把两个电源连起来使用。导致后来使用5V电源时,又用了另外一组电源,导线拖的较长。使用两组电源还有一个问题需要注意,两组电源的地线要接在一起,就是共地问题,开始我们没有留意,以至于TL084CN

25、的正负电位很不稳定,经常是正18V,负12V,后来共地后电压就很稳定了。改进:可以用DC-DC转换器把5V的电源作为输入,输出为15V的电源,这样就不需要使用两组电源,电源噪声也小,也不存在共地,导线拖长,仪器移动不便等问题,能使电路更为稳定。1.2放大问题放大倍数和相关的参数和检波中使用的LM567有很大的关系。LM567输入信号必需大于25mV,输出端8脚才会由高电平跃变为低电平,引起跳变,作为中断请求信号。而实际上我们发现LM567的性能在信号幅值更大的时候更好,例如80mV。所以我们就以接入LM567的信号幅值在80mV为放大的标准进行调试。首先是发射信号的放大问题,我们比较过发射信号

26、的放大和接受信号的放大,相比而言,发射信号的放大噪声问题要小很多,而且因为当时还未经空气,杂波的干扰也小,因此当时是想在发射信号处尽可能的放大,但是后来发现即使发射信号从15V增到18V,接受的原始信号幅值还是在15mV左右,过分放大没有必要,因此最后定在放大3倍。然后是接受信号的放大问题,接受到的原始信号幅值在1520mV左右,根据放大到80mV的原则,放大定为5倍。1.3滤波问题 这一块电路是所有部分中改动次数最多的一块。包括滤波的方式和限频大小。 1.3.1 滤波方式的选择我们先后想过一阶高通滤波,二阶高通,RC带通滤波,有源滤波。首先想到的是一阶高通,因为最方便,电路如下:使用C=0.

27、01F (103), R=6.2 k。 不久觉得一阶高通的衰减太小了,想采用二阶高通,于是又把电路改为: C1=C2=0.01F (103), R1=6.2 k, R2=2R1=12.4k但是发现滤波的效果和一阶差别不大,但却减弱了整个电路的稳定性。后来又想到可以使用带通电路,使得杂波进一步减小,于是把滤波电路又改为:R1=R3=R,C1=C2, R2=2R, R4=1 k,R5=1.5 k可是这时候发现带通电路的稳定性更差,而且它的RC电路基本上构成了一个选频网络,很容易自激振荡,尤其后面又和运放接在一起。最后我们在一阶高通的基础上选择了有源一阶高通滤波,加入了无放大倍数的运放,增加了电路的

28、稳定性。使得最后的滤波电路定为: C=103, R=6.2 k1.3.2 滤波的限频大小开始我们以40 kHz为截止频率,然后通过计算:选择C=103, 则R=382后来发现这样滤波把截止频率定的太高,还滤除了信号部分的有用分量。于是降低频率,使用C=103, R=6.2 k,计算:f =2.6kHz滤除了大部分的杂波,而对信号基本无影响。 1.4 LM567的检波问题整个实验中最大的问题出在LM567上,在一个星期以前我们就已经做完了软件和硬件,调试后发现,显示的数值总是在不停的跳变,有正确的也有不正确的。而且有很多数值非常小,例如0.2, 0.5, 1.5之类的,分析以后认为是LM567跳

29、变的过于频繁,即使对于一次信号,它也会在开始跳变后不久又重新引起跳变一次,这样,明明只是一次测量,却引起了好几次跳变,而软件的中断却是根据跳变来的,然后进行测距计算,因此LM567不稳定的跳变使得我们的结果数据很不稳定。在张日欣老师的指导下,我们使用函数信号发生器代替接受信号,调制函数信号发生器产生41.67kHz的正弦信号直接进行LM567的调试,发现LM567的跳变在纯中心频率信号的条件下还是出现不稳定的情况,于是开始更改LM567的管脚1和管脚2所接电容的大小,通过这个来调试它的稳定情况。1.5 电容和电阻整个实验中,用于不断的涉及放大参数和选频的问题,因此对电阻和电容的大小有很精确的要

30、求。可是实验室中有的电容和电阻型号有限,1k10k的电阻只有1k, 2k, 5.1k, 6.2k, 电容有50F,10F,3.3F,2.2F,1F,104(0.1F), 223(0.022F), 103(0.01F), 再小就只有332和22的电容了。电阻的问题我们也曾用过滑动变阻器,这样电阻变动调整也方便一些,但是后来发现变阻器的阻值误差很大,而且稍微一碰触阻值又会跳变。于是还是选择固定电阻来配置我们所需要的阻值,这就需要非常大的计算量。例如我们调制LM567的时候,以41.67 kHz为中心,C选择103,那么R值的大小就是2.18 k,这个阻值是个关键,如果偏差大了就对LM567的检波造

31、成很大的影响,于是开始了艰难的配置电阻的过程。首先是想到3 k和8 k并联:= + R= 2.18 k开始以为这个数值刚好,于是开始配电阻:实验室没有3 k和8 k的电阻,只好用1 k和2 k串联成3k,然后用2 k 和6.2 k串联成8.2 k,然后再将两者并联,一个电阻值用到了4个电阻:由于这个配置中使用的是6.2 k的电阻,所以导致后来用万用表测得实际阻值大于2.18 k,变成了2.22k,偏大。于是计算3 k和7 k并联:= + R2.1 k ,配置过程同上,312,725.1,同样因为5.1k造成了阻值偏大,用万用表检验后得实际电阻为2.14 k。显然,2.18在两者之间,也就是3

32、k和7.5 k并联:= + R2.1 4k312,7.5=5+2.5, 2.5k又要用到2个5k的并联, 于是电阻配置为:检测后实际电阻为2.19k,偏差很小,终于基本符合了要求。电容的问题也类似,调试过程中有时候不得不也用两个电容并联的方法来增大电容值。例如,没有334(0.4F)和503(0.05F)的电容,就只能通过并联104,以及并联223来近似。给电路带来了很大的繁复。2 软件部分的编程问题:由于以前学过的汇编语言是8096单片机的,而且我们在微机式医学仪器设计课上学的也都是些理论性很强的知识,与现在这个C51汇编语言还是有很大不同的,总的来说还是有很大难度的。这一块的主要问题有四个

33、:从51发射40kHz的信号以用于驱动超声波发射头;从LM567跳变引起INT0跳变中断,中断的入口,返回,以及与发射驱动程序的接口;从INT0中断开始读取定时器数据,计算所测距离,并转化为ASCII码;把所测距离经由液晶显示器显示。 2.1 超声波发射驱动程序从51发射40kHz的信号有多种方法,经过选择我们没有采取用定时器的方法,而是通过直接对P1.0进行赋值和取反,这样更简单一些。具体思路:要使方波的频率达到实验所要求的40kHz。要使方波的周期为25s,也就是说半周期是12.5s, 即每经过12.5s进行一次取反操作,由于单片机的晶振频率是12MHz,所以指令的机器周期是1s,只可能经

34、过12个机器周期进行一次取反操作,这说明实际上从51发出的波的周期是24个机器周期,也就是24s,所以激发的超声波的频率实际为41.67kHz。在半周期的12s里,除去取反的cpl操作指令的一个机器周期和跳转到循环djnz操作指令的两个机器周期,还有9s, 因此还要加上九个空操作即nop。2.2中断的入口,返回,以及与发射驱动程序的接口。实验电路中把INT0接入LM567的8脚,那么当LM567接受到频率为41.67kHz BW,幅值大于25mV的信号时,8脚从高位5V跳至低位0V,使INT0也从高位跳至低位,负跳沿触发中断,进入中断程序。进入中断后首要就是关总中断(CLR EA)和停定时器0

35、(CLR TR0),先关总中断保证在中断程序运行时不被打断,否则根本无法进行计算和码制的转换等等。然后停定时器0,也就是说从INT0跳变到定时器停止,有一个光中断指令的延时,也就是1s。中断要保护现场(程序状态字和累加器等等),也就是PUSH PSW和PUSH ACC。这些指令的顺序是以计时误差最少为原则的。中断结束后要恢复现场(POP PSW和POP ACC),开中断(SETB EA), 定时器清零。然后返回中断点。程序的一个难点在于中断和发射程序的接口。即如何使发射程序等待中断,并在中断完成之后发射新一轮的方波,这一点我们参考了51应用书中的一个类似的例子,基本思路是在发射过一轮方波后,为

36、了停止发射,加入一个等待中断的操作(即使程序陷入一个无限循环),而在中断结束后跳出这个循环,开始新一轮的发射。关键就是在中断程序中安插一个语句作为中断和主程序的接口。于是,我们设计在程序开头引入一个变量f,当f为零时,超声程序开始无限空操作循环。而在中断程序中将f重新置为一,由于中断程序执行时,其他程序无法执行,则等中断完成后,返回现场,f=1,发射程序就会跳出循环,开始下一语句,重新把f清零(即使得下一轮发射时能等待中断),然后开始新一轮得发射。2.3读取定时器数据,计算所测距离,并转化为ASCII码2.3.1 通过定时器数据计算所测距离。定时器的数据存储在TH0和TL0两个字节中,由于我们采用定时器0的1方式,因此TMOD赋00000001B,采用定时器模式和1方式即16位计时器计时。定时器的自增是以一个机器指令为单位,也就是单位为1s。我们用定时器的数据去和17相乘,得出一个以厘米为单位的距离,最高精确位为毫米。原理如下:定时器为16位,也就是说计时的最大值为(1)s,待测的最大距离记为d,则按原理:, (v=340m/s) ,d=170t(t单位为s, d单位为m)1710t( t单位为s, d单位为m)=17t( t单位为s, d单位为m

温馨提示

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

评论

0/150

提交评论