382 基于51单片机的声光控智能灯设计【毕设课设】

基于51单片机的声光控灯设计

1. 单片机型号 :STC89C52/51、AT89C52/51、AT89S52/51可以任选 。

2.继电器吸合模拟开灯、继电器断开模拟关灯、发光二极管为开灯指示灯,继电器后面的接线柱是可以自己接220V的电灯的。

3.利用光敏传感器感应光线亮暗变化,通过LM393电压比较器判断光线强弱,有光线强弱指示灯哦,当光线暗时指示灯点亮,当光线强时指示灯灭,能很清楚的知道光敏传感器接收到外界光线强弱的变化哦。

4.采用驻极体话筒判断是否有声音,当感应到有声音小灯会亮,否则熄灭,这样能很清楚的知道传感器是否感应到声音哦。

5.当光线变暗并且感应到有声音时,继电器会吸合小灯点亮模拟开灯。智能延时,当没有人了会延时10秒后自动把灯关了(继电器断开)。从而实现节能智能控制。当光线比较强时并且感应有声音时,继电器是不会吸合的。

6.当光线变暗并且连续感应到有声音时,会继续延时10秒哦,直到没有声音才会延时关闭继电器模拟关灯哦。

7.优点:

(1)每一个传感器都有对应的指示灯,这样我们很清楚的知道每一个传感器的工作状态哦,方便实用。

(2)采用智能延时关灯哦,即能自动实现开关灯又能节能更环保哦。

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1l7rNrG4ixPytFUV50NQqTg?pwd=8888

部分代码展示

#include <reg52.h>
#define uchar unsigned char 
#define uint unsigned int

sbit light=P3^1;			//光线输入
sbit sound=P3^0;			//声音输入
sbit LED_onoff=P3^3;		//按键:手动开关灯
sbit change=P3^2;			//按键:模式切换

sbit led=P0^0;				//模式指示灯
sbit LED_out=P2^6;			//输出控制灯
bit Mode=0;		 //=0自动  =1手动
uchar sec=0;				//定义秒变量  控制灯亮时间

void delay(uint xms)		//延时函数  约为1ms
{
	uint i,j;
	for(i=0;i<xms;i++)
	for(j=0;j<110;j++);
}
void init()					//初始化函数 定时器等
{
	TMOD=0x01;
	ET0=1;
	EA=1;
	TH0=0x3c;
	TL0=0xb0;
	TR0=0;
}
void key()					//按键函数
{
	if(change==0)			//模式切换按下时
	{
		delay(50);			//去抖
		if(change==0)		//再次判断是否按下
		{
			Mode=!Mode;				   //切换模式
			led=Mode;				   //控制模式指示灯的亮灭
			if(Mode==1)	   //切换到手动模式时如果灯是亮的  就熄灭灯	 如果灯是灭的  就点亮灯
			LED_out=!LED_out;
			else if(Mode==0) //切换到自动模式时如果灯是亮的就计时sec后熄灯
			{
				if(LED_out==0)
				{
					TR0=1;
					sec=0;
				}
				else
				delay(500);
			}
			while(!change);				 //按键释放
		}
	}
	if(LED_onoff==0&&Mode==1)			 //手动开关灯按键
	{
		delay(50);
		if(LED_onoff==0&&Mode==1)
		{
			LED_out=!LED_out;			 //控制灯的开关
			if(LED_out==0)
			{
				TR0=1;						//打开定时器
				sec=0;						//sec清零
			}
			else
			TR0=0;
			while(!LED_onoff);			 //按键释放
		}
	}
}
void main()								//主函数
{
	init();								//调用初始化函数
//	light=0;
//	sound=0; 
	led=Mode;							//控制模式指示灯的开关:初始位自动模式  
	while(1)							//进入while循环
	{
		key();							//扫描按键
		if(light==0&&sound==0&&Mode==0)	//自动模式时 判断声光是否都满足条件(光线暗&&声音有)
		{
			LED_out=0;					//点亮输出
			TR0=1;						//打开定时器
			sec=0;						//sec清零
		}
	}
}

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值