51单片机控制超声波模块收发超声波
时间:10-02
整理:3721RD
点击:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint i);
void delay20us();
sbit Tx=P1^0;
sbit Rx=P1^2;
sbit Trig=P1^0;
sbit Echo=P3^2;
bit succeed_flag;
uint b;
void main()
{
while(1)
{
Trig=1;//将Trig置为高电平
delay20us();//给20秒的脉冲让超声波模块发出超声波
Trig=0;
delay20us();//给单片机一段反应时间
}
{
while(Echo==0);//等待Echo变为高电平
b++;
succeed_flag=0;
}
if(Echo==1)
{
P2=0x00; //p2口置为低电平
delay(600);
P2=0xff; //p2口置为高电平
delay(600);
}
if(Echo==0)
{
break;
}
}
void delay(uint i)
{
uchar j;
for(i;i>0;i--)
for(j=2555;j>0;j--);
}
void delay20us()
{
uchar a=20;
for(a;a>0;a--);
}
这是我写的超声波收发程序,我的目的是实现当超声波检测到有物体在其检测范围内时,LED灯马上点亮,但是灯亮了之后就不灭了,我想实现物体移动后灯就熄灭,希望大牛指教
#define uchar unsigned char
#define uint unsigned int
void delay(uint i);
void delay20us();
sbit Tx=P1^0;
sbit Rx=P1^2;
sbit Trig=P1^0;
sbit Echo=P3^2;
bit succeed_flag;
uint b;
void main()
{
while(1)
{
Trig=1;//将Trig置为高电平
delay20us();//给20秒的脉冲让超声波模块发出超声波
Trig=0;
delay20us();//给单片机一段反应时间
}
{
while(Echo==0);//等待Echo变为高电平
b++;
succeed_flag=0;
}
if(Echo==1)
{
P2=0x00; //p2口置为低电平
delay(600);
P2=0xff; //p2口置为高电平
delay(600);
}
if(Echo==0)
{
break;
}
}
void delay(uint i)
{
uchar j;
for(i;i>0;i--)
for(j=2555;j>0;j--);
}
void delay20us()
{
uchar a=20;
for(a;a>0;a--);
}
这是我写的超声波收发程序,我的目的是实现当超声波检测到有物体在其检测范围内时,LED灯马上点亮,但是灯亮了之后就不灭了,我想实现物体移动后灯就熄灭,希望大牛指教
while(1)
{
Trig=1;//将Trig置为高电平
delay20us();//给20秒的脉冲让超声波模块发出超声波
Trig=0;
delay20us();//给单片机一段反应时间
}
这个LZ怎么退出来,一直在这死了