大佬帮我看看,哪里出了问题,超声波测距测量不准确。感觉每次测量结果显示的数字是随机数。
/*******************************************************
* STC32G12K128 超声波测距 + 4位共阴数码管显示
* HC-SR04 + 内部IRC 33.1776MHz
******************************************************/
#include "STC32G.H"
#include <intrins.h>
#define SYSCLK 33177600 // 内部IRC频率
#define SOUND_SPEED 0.0343 // cm/us
/*---------------- 全局变量 ----------------*/
bit echo_flag = 0; // 回波标志
sbit P3_3 = P3^3;
unsigned long time_us = 0; // 回波高电平时间(us)
float distance_cm = 0.0; // 距离(cm)
/*---------------- 数码管段码(共阴) ----------------*/
unsigned char code seg_tab =
{
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
/*---------------- 延时函数 ----------------*/
void DelayMs(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms;
- 最近查阅:
