微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机控制超声波模块收发超声波

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灯马上点亮,但是灯亮了之后就不灭了,我想实现物体移动后灯就熄灭,希望大牛指教

while(1)
        {
                Trig=1;//将Trig置为高电平
                delay20us();//给20秒的脉冲让超声波模块发出超声波
                Trig=0;
                delay20us();//给单片机一段反应时间
        }
这个LZ怎么退出来,一直在这死了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top