hc-sr501如何使用?我一个接地,一个接电源,一个信号线。

我的程序是传感器输出一个低电平产生中断,步进电机转一圈。结果电机一直转。我用了PROTEUS仿真,程序没有问题。是硬件的问题。它是人离开输出低电平,可我就没有离开,怎么还会有低电平产生中断?这传感器是出来什么问题?
程序:#include"reg52.h"
#include"intrins.h"
#include"math.h"
#define uchar unsigned char
#define uint unsigned int
/*****************步进电机正向旋转相序表**************************/
unsigned char code FFW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};

void Delay_stepmotor(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++);
}
}
void stepmotor_zz(unsigned int n) //步进电机正转
{
unsigned char i;
unsigned int j;
for (j=0; j<8*64*n; j++)
{
for (i=0; i<8; i++)
{
P1=FFW[i];
Delay_stepmotor(1);
}
}
}
void Int0() interrupt 0 using 1
{ stepmotor_zz(1) ;

}
void main()
{ EA=1; //开总中断
EX0=1; //允许外部中断0中断
IT0=1;
while(1)
{
}

}

hcsr501=1就是定义该端口为输入模式,因为51单片机输出高电平时是弱上拉。信号经biss0001内部的两级放大电路输出,输出端接一个上拉电阻,防止信号过小。

a不等于2且不为0的时候有唯一解。

a=0时无解

a=2时有无数个解

a大于0且a不等于2时有正解。

另外LED2一会亮一会灭是模块本身在检测到有人时,其输出高电平(或者低电平)之后会有延时。建议用万用表测量模块输出引脚的输出电平是否正确,再检查程序。

扩展资料:

同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51, PHILIPS,和WINBOND等,我们常说的已经停产的89C51指的是ATMEL公司的 AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取代了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。

参考资料来源:百度百科-51单片机

温馨提示:答案为网友推荐,仅供参考
相似回答