最近在做毕设用到一个超声波测距模块(HC-SR04),模块是学校库房领的。今天用了站里一个博主的程序,我把蜂鸣器部分改成了LED灯。结果好像一点反应也没有,大家能不能帮我瞧瞧是哪里出了问题。单片机用的是STC15F2K60S2
以下是站里找的程序附上原地址(https://blog.csdn.net/qiwenzhai/article/details/89040941)
#include "STC15.h"
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
sbit Trig=P0^6; //控制端
sbit Echo=P0^5; //接收端
sbit Beep=P0^7; //原理是蜂鸣器改成了LED灯
unsigned char T0RH=0;
unsigned char T0RL=0;
void Start_Buzz()
{
Beep= 1;
} //灯亮
void Stop_Buzz()
{
Beep= 0;
} //灯灭
void time_init()
{
EA=1;
TMOD=0x11;
TH0 = 0;
TL0 = 0;
} //初始化定时器
void Delay_us(unsigned char t)
{
while(--t);
} //大约延时t*2+5us 超声波模块用
void timer0()interrupt 1
{
TH0 = 0;
TL0 = 0;
} //中断程序 初始化赋值 重新计数 超声波模块用 计算时间
void main()
{
unsigned int time,distance;
Trig=0;
Echo=0;
time_init();
Stop_Buzz();
while(1)
{
Trig=1;
Delay_us(10);
Trig=0;
while(Echo==0);
TR0=1;
while(Echo);
TR0=0;
time=TH0*256+TL0;
distance=(int)(time*0.017); //计算路程 单位为cm
TH0=0;
TL0=0;
if(distance<30) //如果距离小于30cm 蜂鸣器响
{
Start_Buzz(); //用于控制蜂鸣器的音高
}
}
}
下面这是原理图
运行结果及报错内容:
毫无反应。555