问题是这样的,我在淘宝上买了一个传说中的人体红外感应模块,它是这样的,感应到人体的时候模块会输出高电平,没感应到的时候会输出低电平。。。
模块提供了3个引脚,一个GND,一个VCC,一个是输出引脚,我就直接把它的GND,vcc接51单片机的GND跟VCC了,把它的输出引脚直接接在了单片机的 IO 口上,然后写程序不停的检测 IO口状态,结果发现根本就没发现那个模块输出高电平啊。。。不管我人站在哪个位置,,它都是一直输出低电平。。。更离谱的是,我把模块的VCC拔起来,只给它接了GND跟输出引脚,它也能输出低电平。。。什么情况啊。。。我跟卖家联系了,结果它说他们一天卖了几十个都没人反应有问题,然后又寄了一个给我了,还是一样的情况。。是不是哪里要做处理才能直接接单片机 IO 啊。。。求大神啊。。。小弟在线等啊
问题已经解决了,我百度了好久,发现是因为51单片机内部有傻100k的上拉电阻,所以高电平驱动能力很弱,这个人体红外模块输出的是3.3V,应该是不够高所以单片机内部检测不到高电平?是这样理解的吧。。。。我按照网上说的,先把 IO口置为高,然后再去读取 IO口就能读取出外部输入的电平了。。。问题虽然是解决了,但是我不懂为什么先置高再读取即可读出外部输入的电平?求硬件方面的前辈解释一下啊。谢谢了
问题找到了,我接的是51单片机,内部都有100k的上拉电阻。。。