第4章 测距系统软件设计及仿真 其中编译的功能是发现源程序中的语法和逻辑错误,把汇编语言或C语言程序编译为机器码。uvision4底部的Build窗口中会显示构建过程中的输出信息,包括源程序的errors和warnings。在没有errors的情况下,会成功构建出后缀为.hex的可执行文件。图5-1所示为本设计中源程序的编译结果:
图4-3 源程序的编译结果
成功编译出hex可执行文件后,便可将源程序下载到单片机内,进行仿真。由于使用的是STC89C52型单片机,此款单片机在下载时不需要仿真器,只需要STC_ISP下载软件,然后将单片机与电脑用USB传输线连接即可。
软件编译调试完成后,在进行仿真运行前,还需要将硬件连接。本设计中,硬件的连接主要是超声波测距模块的引脚与单片机相应引脚的连接。引脚连接表如表4-2所示:
表4-2 引脚连接表
US-100引脚
VCC RX TX
单片机引脚
+5V P1.0 P1.1
US-100引脚
GND GND
单片机引脚 GND GND
单片机与US-100超声波测距模块的引脚连接图如图4-4所示:
27
燕山大学本科生毕业设计(论文)
图4-4 硬件连接图
4.4 测试结果及误差分析
按照设计的硬件与软件,对整个系统进行调试与仿真。系统的测试部分数据如表4-3所示。
表4-3 测试结果部分数据
实际距离(mm) 测量距离(mm) 误差(mm)
20 19 1
50 53 3
100 100 0
130 125 5
210 212 2
350 345 5
440 444 4
500 508 8
690 688 2
由试验测得的测量值与用尺子测得的实际值之间存在着0-10mm左右的误差,在US-100超声波脉冲测距模块所允许的误差范围内,该调试结果认定正常,且系统的重复性能很好。由此可以认定该课题设计的超声波脉冲测距系统的硬件的选择和软件的设计符合设计要求,很好地实现了测距系统的功能且动态测量效果很好。测试系统的几个实验效果图如图4-5所示,测试基本正确。
28
第4章 测距系统软件设计及仿真
图4-5 实验效果图
误差的存在是正常的现象,因为在实际的测量的过程中,由于测试环境的不严格以及其他各种因素的影响,不可避免的会存在测量误差。测量误差产生的原因可能有如下几种:
⑴超声波传播速度的误差。保证距离计算精度的重要条件是精确稳定的传播速度。超声波的传播速度会受温度、湿度的影响[22],虽然系统采取了温度补偿,测量环境的湿度影响也较小,但是理论计算值还是不能做到与实际传播速度完全一致,从而带来测量误差。
⑵时间t的计算误差,这属于软件系统带来的误差。距离计算的另一个重要条件是发射波与接收波之间的时间间隔t的精确计算。t由单片机的计时时钟决定,这还与单片机的指令执行速度有关。
⑶测距系统内部的误差。这属于硬件系统带来的误差,主要是超声波换能器需要一定的反应时间对回波信号进行处理[23]。这会带来时间的延迟,从而引起误差。
⑷反射角度引起的误差。当反射角度不是90°时,系统测量得到的距离是障碍物与传感器模块之间的距离而不是两个测量平面之间的距离,这也会带来测量误差。
4.5本章小结
本章主要是测距系统软件的设计以及系统的仿真。软件设计部分主要是
29
燕山大学本科生毕业设计(论文) 各个功能模块的软件程序的C语言编程及其关键语句的含义,主要包括:主函数、串口初始化函数、超声波发送函数、写字符函数、数码管扫描函数、数码管显示函数。系统的调试仿真部分,经调试实验结果表明:系统的误差在允许的范围内,可以认为该系统符合设计要求。另一方面,本章还对系统可能存在的引起误差的原因进行了分析,这些误差在一定程度上是无法用软件消除的,所以超声波的测距精度还有待进一步的提高。
30

