找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4888|回复: 8
收起左侧

单片机 HC-RS501人体红外感应模块

[复制链接]
ID:171205 发表于 2017-3-16 14:26 | 显示全部楼层 |阅读模式
我用的是stc89c52单片机,这是我写的程序和人体红外感应模块与单片机的连接。
为什么实现不了功能。我想实现一个红外模块感应到人,led就发光,可是led却常亮?求哪位大神帮我一下???
#include <reg52.h>
   sbit DQ=P2^2;
#define uint unsigned int
   void delayus(uint xms)
   {
   uint i,j;
   for(i=xms;i>0;i--)
   for(j=118;j>0;j--);
   }
   void main()
   {
    while(1)
    {
    if(DQ==1);
    P1=0x00;
     delayus(1000);
     P1=0xff;
    }
     }
IMG_20170316_074747.jpg
IMG_20170316_074747.jpg
IMG_20170316_131057.jpg
IMG_20170316_074747.jpg
IMG_20170316_074820.jpg
回复

使用道具 举报

ID:240604 发表于 2017-11-23 19:42 | 显示全部楼层
请问您有解决办法了么
回复

使用道具 举报

ID:262633 发表于 2019-3-6 20:12 | 显示全部楼层
灯灭哪里加一个延时 试一下
回复

使用道具 举报

ID:285473 发表于 2019-3-6 21:09 | 显示全部楼层
P1=0x00;
delay(100);//为灭的时间
P1=0xff;
delay(100)//为亮的时间
回复

使用道具 举报

ID:483837 发表于 2019-3-6 21:18 | 显示全部楼层
你的那个if语句后面不应该加分号,红外的那个模块检测到人后会持续输出一段时间的高电平,你这个延时肯定是不够的,还不如改为if else结构
回复

使用道具 举报

ID:485899 发表于 2019-3-6 22:18 | 显示全部楼层
  if(DQ==1)

     P1=0x00;//LED ON
     delayus(1000);
     P1=0xff;//LED OFF

   
回复

使用道具 举报

ID:429598 发表于 2019-12-19 19:44 | 显示全部楼层
问题出在if(DQ==1)之后的分号
回复

使用道具 举报

ID:668827 发表于 2019-12-20 11:30 | 显示全部楼层
标点符号使用错误,if语句
回复

使用道具 举报

ID:712404 发表于 2020-3-20 20:02 来自手机 | 显示全部楼层
楼主,我想请教一下你做的这个防盗装置,可以给个联系方式吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表