1、晚上,感应到声音或者感应到有动的物体,灯亮延时一段时间后熄灭,如果一直检测到声音或者有物体动便常亮直到检测不到为止。(不用像一些过道声控灯那样,才上几步楼梯灯灭了 吼一声、上几步楼梯灯又灭了 又吼一声)白天,不论是否感应到什么灯都不亮 2、可通过按键调整灯亮延时时长。 3、主控面板三颗led。 按键一直按下时显示灯亮延时时长,按键不按下时 显示各个感应模块状态(例:检测到时晚上时最左边一颗灯,当感应到有动的物体时 中间一颗灯亮,当检测到声音时 最右边一颗灯亮) 二、用途: 可用于过道、走廊等各种不好关灯或者懒得关灯的场合
三、Mading Process: (原理图)
(刻板、焊接)
(组装测试)
(神功成.......)
遇到的困难:做的过程中算有点难度的是,在灯延时亮的过程中,接收到信号,要让它从接受到信号这个时刻为起点 重新延时下去灯不灭,例:在一个小时里它一直检测到有人,那么它会亮一个小时,中途一直不灭。 【源程序】 /**************************************//* 声控:高电平有信号,低电平无信号 */ /* 红外:高电平有信号,低电平无信号 */ /* 光控:高电平白天,低电平夜晚 */ /* LED低电平亮,高电平灭 */ /**************************************/ #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit GPIO_Day_Night = P1^3; //光感接口 sbit GPIO_Sound = P1^4;//声控接口 sbit GPIO_Infra = P1^5; //红外接口 sbit GPIO_jdq = P3^5; //电灯接口 低电平点亮 sbit GPIO_KDelaytime = P3^7; //改变光亮时长 sbit GPIO_LED1=P1^2; //延时显示LED1 sbit GPIO_LED2=P1^1; //延时显示LED2 sbit GPIO_LED3=P1^0; //延时显示LED3 uchar Key_time; //按键次数 uint Delay_LED_time;//中断里为延时服务的自增亮 uint Temp_DelayLed;//灯亮延时时长计数函数 bit flag_day_night;//日、夜标志位 void Timer_Init();//初始化函数 void Delay12_Ms(uint ms);//12MHZ晶振精确延时1ms void Light_delay_time(); //按键设置延时 void LED_Display();//感应LED亮 void main() { Timer_Init();//中断定时器初始化 while(1){ Light_delay_time(); //按键设置 if(GPIO_Day_Night==0){//if光敏-无光-晚-传感器检测,
(责任编辑:admin) |