求助51单片机如何检测输入的高电平
时间:10-02
整理:3721RD
点击:
最近再弄HC-SR505人体红外传感器,如果有人在传感器就输出3.3V。由于51单片机默认为高电平输出,我要怎么检测传感器输入给51单片机的高电平呢。我试了如果我直接用if(key1==1)来判断,由于默认输出高电平,即使不插上传感器也能让led亮,所以我试了先拉低,再判断高电平,但是输入的高电平却被这一句初始化给拉低了。
实测传感器输出3.3V,加了驱动电路输出5V。我要怎么样才能让51检测到输入的高电平呢?或者HC-SR505你们是怎么使用的?谢谢大家。
以下是我输入5V被拉低的程序,如果去掉初始化key1=0;那么不加传感器也能让led亮,所以也不行。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P0^1;
sbit led=P1^0;
void main()
{
key1=0;
while(1)
{
if(key1==1)
{
delay();
if(key1==1)
{
led=0;
}
}
else
led=1;
}
}
实测传感器输出3.3V,加了驱动电路输出5V。我要怎么样才能让51检测到输入的高电平呢?或者HC-SR505你们是怎么使用的?谢谢大家。
以下是我输入5V被拉低的程序,如果去掉初始化key1=0;那么不加传感器也能让led亮,所以也不行。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P0^1;
sbit led=P1^0;
void main()
{
key1=0;
while(1)
{
if(key1==1)
{
delay();
if(key1==1)
{
led=0;
}
}
else
led=1;
}
}
51单片机的P0口没有内部弱上拉电阻,属开漏型I/O口,需要外接10K电阻上拉才能读P0口,根据你所述的应用,可以外接一个10K电阻上拉,再接一个1K电阻下拉,不对此端口初始化设置,就可以直接读取端口电平:有输入为高,无输入为低。如果用P1~P3的其他端口做输入端,只要外接一个1K电阻下拉就可以了。
可以先用一个开关来代替传感器,来调试这段程序
如果时P1口就直接接个1k的电阻接地就可以读取高电平了吗?我试试
是这样的。字数补丁,字数补丁。