超声波测距程序分析这里的 while(Echo==0); //等待Echo回波引脚变高电平 作用是什么为什么这个程序只能测5CM以下,而且不准.//超声波模块程序//超声波模块程序//Trig = P2^0//Echo = P3^2#include #define uch

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 04:45:38
超声波测距程序分析这里的 while(Echo==0); //等待Echo回波引脚变高电平 作用是什么为什么这个程序只能测5CM以下,而且不准.//超声波模块程序//超声波模块程序//Trig = P2^0//Echo = P3^2#include #define uch

超声波测距程序分析这里的 while(Echo==0); //等待Echo回波引脚变高电平 作用是什么为什么这个程序只能测5CM以下,而且不准.//超声波模块程序//超声波模块程序//Trig = P2^0//Echo = P3^2#include #define uch
超声波测距程序分析
这里的 while(Echo==0); //等待Echo回波引脚变高电平 作用是什么
为什么这个程序只能测5CM以下,而且不准.
//超声波模块程序
//超声波模块程序
//Trig = P2^0
//Echo = P3^2
#include
#define uchar unsigned char
#define uint unsigned int
int time;
int succeed_flag;
uchar timeL;
uchar timeH;
sbit Trig=P1^0;
sbit Echo=P3^2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table1[]={0,1,2,3,4,5,6,7};
//
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//
void delay_20us()
{
uchar a ;
for(a=0;a

超声波测距程序分析这里的 while(Echo==0); //等待Echo回波引脚变高电平 作用是什么为什么这个程序只能测5CM以下,而且不准.//超声波模块程序//超声波模块程序//Trig = P2^0//Echo = P3^2#include #define uch
程序我没有仔细看,有些思路你考虑一下:
1、不知道你用的哪个型号的单片机,计数器所用的时钟频率是多少?5cm意味着约300uS的声波传输时间,结合你的计数频率和计数器的位数,看看300uS你的计数器有没有溢出;
2、超过5cm的时候,用示波器探一下有没有收到声波信号,可能是你的放大倍数不够,信号太弱导致信号没有被识别;
3、仔细考虑一下你的收发探头的安装方式,有没有可能接收到直射波,我觉得这种可能性要大一些;超声测距,接收探头必须只接收到反射波,否则测出来肯定不准确;
4、测试不准确,可以考虑进行多次测量,去掉一半的异常值(比如说测回来8个数,去掉2个最大的,再去掉2个最小的),然后取平均;这样测出来的结果相对准确一些.
就是这些了,