1668|4

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求大神看看,哪里出错了 [复制链接]

当有光照时,无论周围是否有人,继电器都是处于断开;

当晚上时,只要周围有人走过,继电器会吸合,当人离开后10S左右继电器自动断开;

继电器工作具有指示灯指示,接线柱可以接220V的灯;
灯不亮,是哪里搓搓,真的看不懂了

人体检测智能灯控制.DSN

129.83 KB, 下载次数: 1

人体检测智能灯控制.hex

339 Bytes, 下载次数: 0

此帖出自单片机论坛

最新回复

“灯不亮,是哪里搓搓,真的看不懂了” 如果继电器动作正常(继电器动作时目视可以看到,也可以听到声音),最大的可能,是灯泡烧毁。 换个灯泡试试。若还不亮,再检查电路。   详情 回复 发表于 2015-12-28 14:24
点赞 关注
 

回复
举报

151

帖子

2

TA的资源

一粒金砂(中级)

沙发
 
把电路图和源码pose上
此帖出自单片机论坛
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
蓝猫淘气 发表于 2015-12-28 14:14
把电路图和源码pose上

#include                 //头文件
#include

#define uchar unsigned char        //宏定义
#define uint unsigned int

uchar leave=1;//标记当前是关灯,1关。0开

void main()
{
        T0_init();         //定时器0初始化
        while(1)
        {
                if(guang==0)        //检测光线偏暗
                {
                        if(rs==1)        //判断是否有人.有人进入打开灯
                        {
                                relay=0;        //吸合继电器,打开灯
                                T0_num=0;       
                                time=0;
                                TR0=0;
                                leave=1;
                        }
                        else                //否则表示人走
                        {
                                if(leave==1)  //开始定时20s,定时时间到就自动关闭灯
                                        TR0=1;
                                else
                                        relay=1;  //定时时间到,关闭灯
                        }
                }
                else                //光线偏亮,无需开灯
                {
                        relay=1; //关闭灯
                }
        }
}#ifndef _INTERRUPT_H_
#define _INTERRUPT_H_
#include

#define uchar unsigned char
#define uint unsigned int

/**********************引脚定义************************/
sbit relay=P2^1; //继电器定义
sbit guang=P3^7; //光敏电阻输入
sbit rs=P3^2;         //人体热释传感器输入
/**********************变量定义************************/
uchar T0_num;
uchar time;
extern uchar leave;
/*********************************************************
函数名称:void T0_init()
函数作用:定时器0初始化函数
参数说明:
*********************************************************/
void T0_init()
{
        EA=1;                  //开总中断
        ET0=1;                 //定时器T0中断允许         
        TMOD=0x01;             //使用定时器T0、T1的模式1
        TH0=(65536-50000)/256; //定时器T0的高8位赋初值
        TL0=(65536-50000)%256; //定时器T0的高8位赋初值
        TR0=0;                                   //关闭定时器
}

/*********************************************************
函数名称:void T0_interrupt(void) interrupt 1 using 0
函数作用:定时器0中断处理函数
参数说明:
*********************************************************/
void T0_interrupt(void) interrupt 1 using 0
{                 
        TH0=(65536-50000)/256; //定时器T0的高8位重新赋初值
        TL0=(65536-50000)%256; //定时器T0的高8位重新赋初值

        T0_num++;
        if(T0_num==20)         //20*50ms=1s定时完成
        {
                T0_num=0;         //清除后,重新开始定时
                time++;                 //秒数加1
        }
        if(time==20)         //20S到
        {
                TR0=0;                 //关闭定时
                leave=0;
                time=0;                 //清除秒数
        }                                        
}

#endif
此帖出自单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
这是图片

QQ图片20151228142151.png (330.15 KB, 下载次数: 0)

QQ图片20151228142151.png
此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

5
 
“灯不亮,是哪里搓搓,真的看不懂了”
如果继电器动作正常(继电器动作时目视可以看到,也可以听到声音),最大的可能,是灯泡烧毁。
换个灯泡试试。若还不亮,再检查电路。

此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表