di
it_CTCvoid
TMOD0x21设CTC1工作于模式2
ET00
不允许CTC0中断
voidi
it_INT外部中断初始化为高优先级,并开中断
IP0x01置外部中断INT0优先级为高
TCON0设置外部中断0的中断方式为电平触发
voidserve_INT0i
terrupt0
外部中断0,用于检测接收信号TR00关闭定时器0EX00关中断
timelo
gTL0timelo
gTH0256CLflag1
CTC1中断服务程序,125us中断一次用于发射voidCTC1_INTi
terrupt3
VOLCKVOLCKcshuvoidCTC0_INTi
terrupt1TR00ET00
912
f
voidTimetojuli将测量的时间转换为距离
lo
gi
ilo
gtime
ii340
ii2
umber4i10000000十米
ii
umber410000000
umber3i1000000米
ii
umber31000000
umber2i100000分米
ii
umber2100000
umber1i10000厘米
iilo
g
umber110000
umber0i1000毫米
uchargetkey读键盘
主程序
voidmai
i
tikey
i
it_CTC初始化定时器
i
it_INT初始化外部中断
CLflag1测量标志
fori6i4idispi0xff
cshu0传数
delay200
延时
IE0x80
开中断
ET10ET00
TR10TR00
TL1T12usTH1T12us
while1
keygetkey读键盘
ifkey0x0feCLflag1测量
key0CLflag0
cshu0
TL1T12usTH1T12us
TL00TH00定时器0的初始时间
TR01启动定时器0,开始记时
TR11启动定时器1,发送信号
ET11
1012
fwhilecshu12
ET10
发十个脉冲串
TR10
delay95
EX01
whileCLflag
ifcshu10CLflag1
Timetojuli
dispfb
uchargetkey
charflag
ucharkeykeytemp
flag0
keytempP1
ifkeytemp0xffretur
255
else
flag1
delay100
keyP1
ifkeykeytempretur
key
elseretur
255
五、实验结果及分析
表2是利用本文的测距仪进行实际测量的结果。由表中数据可见在20~150cm范围内误差相对较小;小于20cm范围内误差较大,这是因为超声波距离测量存在一定范围的盲区盲区的出现是因为发出信号必须有一个上升时间当距离太近时计算机系统已不能处理迅速返回的反射波信号所以距离小于02米测量误差明显增加。
300cm以后的数据误差明显增大这是由于发射功率不够大接收到的信号很微弱引入了一些干扰因素。但电路引入温度补偿电路后总的实验结果误差在厘米级基本上可以满足测量要求。
1112
f实际距离cm
测量结果cm
误差
实际距离cm
测量结果cm
误差
2001951300126308
3004005006007009001000
31
39
51
60
69
88100
33325
2
01432220
1500200r