该文档涉及的知识点主要集中在如何使用单片机STC90C516设计一个带温度补偿的超声波测距系统。以下是相关知识点的详细说明:
1. **超声波测距原理**:利用超声波发射和接收的时间差来计算距离。超声波在空气中的速度(V)与环境温度有关,可以通过公式V=334.1m/s+Temperature*0.61计算,其中Temperature为摄氏度。
2. **单片机型号**:STC90C516是一款8位单片机,工作频率为12MHz。它有内部定时器(如T0)用于时间计数,以及IO端口用于控制硬件设备。
3. **HC-SR04超声波传感器**:该传感器使用两个IO端口,Trig用于发送触发脉冲,Echo用于接收回响信号。通过精确控制脉冲宽度和测量回响时间,可以计算出与目标物的距离。
4. **温度测量**:使用DS18B20数字温度传感器测量环境温度,获取精确的温度数据,以便于计算声速。
5. **程序流程**:
- 连续进行7次超声波测距,每次间隔80ms。
- 对测量结果进行排序,去除最大和最小的2个值,对剩下的3个值取平均,以提高测量精度。
- 结果通过LCD1602显示器显示,并根据测量范围决定是否发出报警声音。
6. **计时器配置**:使用单片机的T0定时器进行时间计数,由于晶振频率为12MHz,每个机器周期为1us,因此可以精确计算超声波传播时间。
7. **代码结构**:
- `Delay4us()`宏定义了一个4us的延迟函数,用于产生微小的延时。
- 全局变量定义了如DistanceValue(存储测量距离),SPEEDSOUND(声速),XTALTIME(单片机计数周期)等。
- 外部函数声明,如LCD初始化、温度读取、距离测量、数值处理、蜂鸣器控制等。
8. **数值转换**:`UnsigedIntToString`函数将无符号整数转换为字符串,便于在LCD上显示。
9. **错误处理**:当测量结果超出预设范围(2cm~400cm)时,系统会通过蜂鸣器发出报警,并在LCD上显示“Out of Range”。
10. **LCD1602显示器**:用以显示测量距离和温度的提示信息,以及具体数值。
11. **温度补偿**:根据实时温度计算声速,确保在不同环境下测量的准确性。
这个程序实现了结合温度补偿的超声波测距系统,具备较高的测量精度和环境适应性,同时通过LCD提供直观的数据显示,方便用户了解当前的测距和温度状况。