基于51单片机的智能台灯设计

一.硬件方案

本文介绍了一种基于PWM调光的智能台灯设计。把单片机技术和PWM调光技术结合起来实现台灯光强的调节。即在不改变PWM方波周期的前提下,利用单片机控制PWM的占空比,从而来改变电压的大小实现灯光亮度的调节。
当人体在台灯的范围内且环境光线较弱时,自动感应开灯,且灯的亮度随着环境光线的改变而自动调节,一旦人离开台灯范围,即红外热释传感器检测不到有人时,1分钟后自动熄灯。
主要由51单片机+光线检测雾传感+ADC0832模数芯片+人体检测模块+按键+LED灯等;如图:
在这里插入图片描述

二.设计功能

(1)上电之后,绿色的 LED 灯点亮,代表当前是自动控制模式。
(2)通过按键 1,可以在手动模式(绿灯灭)和自动模式(绿灯亮)之间来回切换 .
(3)在手动模式下,可以通过按键 2 降低亮度,按键 3 增加亮度。
(4)在自动模式下,首先要检测到有人,才进行亮度的自动控制,否则台灯熄灭。 可以挡住光敏电阻的光线,或用手电筒来照射光敏电阻,模拟光照的变化,从而就可以 看到台灯的亮度会随着环境中的光照强度的改变而改变,效果是光照越弱,台灯越亮。 如果人体传感器 1 分钟检测不到有人,台灯就会自动熄灭。
(5)无论是自动模式还是手动模式,都是把亮度分为 10 个等级的。
(6)人体感应检测功能只在自动模式下有效。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)Protues仿真图如下:
在这里插入图片描述
(3)PCB图如下:
在这里插入图片描述

四.软件设计

(1)程序流程图
在这里插入图片描述

(2)主程序源码

/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
	uchar ret;
	
	TimerInit(); 					// 定时器初始化
	
	LED=0;								// 指示灯点亮(自动模式指示灯)
	ret=Get_ADC0832();		// 获取AD采集结果(环境光照强度)
	AutoControl(ret);			// 上电先进行一次自动亮度控制	
	AutoControl(ret+7);
	
	while(1)
	{
		/* 模式切换控制 */
		if(Key1==0)					// 如果按键1被按下去
		{
			LED=~LED;					// 切换LED灯状态
			DelayMs(10);			// 延时消除按键按下的抖动
			while(!Key1);			// 等待按键释放
			DelayMs(10);			// 延时消除按键松开的抖动
		}
			
		/* 亮度控制 */
		if(LED==1)							// 如果LED是灭的
		{
			ManualControl();			// 则进行手动控制
		}
		else										// 如果LED是亮的
		{
			if(gTime<60000)
			{
				ret=Get_ADC0832();		// 获取AD采集结果(环境光照强度)
				AutoControl(ret);			// 进行自动控制	
				DelayMs(200);
			}
		}
		
		/*检测是否有人*/
		if(Module==1)
		{
			gTime=0;										// 检测到有人,则把60秒计时清零
		}
		if(gTime>60000)								// 如果gTime的值超过了60000
		{
			gTime=60000;								// 则把gTime的值重新赋值为60000,避免过大溢出
			gIndex=0;										// 如果1分钟检测不到有人,则把台灯熄灭
		}
	}
}

如需资料请关注公众号“单片机实例设计”,首页回复“台灯”获取资料;
在这里插入图片描述

版权声明:本文为CSDN博主「单片机实例设计」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/eletronicfish/article/details/120110084

一.硬件方案

本文介绍了一种基于PWM调光的智能台灯设计。把单片机技术和PWM调光技术结合起来实现台灯光强的调节。即在不改变PWM方波周期的前提下,利用单片机控制PWM的占空比,从而来改变电压的大小实现灯光亮度的调节。
当人体在台灯的范围内且环境光线较弱时,自动感应开灯,且灯的亮度随着环境光线的改变而自动调节,一旦人离开台灯范围,即红外热释传感器检测不到有人时,1分钟后自动熄灯。
主要由51单片机+光线检测雾传感+ADC0832模数芯片+人体检测模块+按键+LED灯等;如图:
在这里插入图片描述

二.设计功能

(1)上电之后,绿色的 LED 灯点亮,代表当前是自动控制模式。
(2)通过按键 1,可以在手动模式(绿灯灭)和自动模式(绿灯亮)之间来回切换 .
(3)在手动模式下,可以通过按键 2 降低亮度,按键 3 增加亮度。
(4)在自动模式下,首先要检测到有人,才进行亮度的自动控制,否则台灯熄灭。 可以挡住光敏电阻的光线,或用手电筒来照射光敏电阻,模拟光照的变化,从而就可以 看到台灯的亮度会随着环境中的光照强度的改变而改变,效果是光照越弱,台灯越亮。 如果人体传感器 1 分钟检测不到有人,台灯就会自动熄灭。
(5)无论是自动模式还是手动模式,都是把亮度分为 10 个等级的。
(6)人体感应检测功能只在自动模式下有效。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)Protues仿真图如下:
在这里插入图片描述
(3)PCB图如下:
在这里插入图片描述

四.软件设计

(1)程序流程图
在这里插入图片描述

(2)主程序源码

/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
	uchar ret;
	
	TimerInit(); 					// 定时器初始化
	
	LED=0;								// 指示灯点亮(自动模式指示灯)
	ret=Get_ADC0832();		// 获取AD采集结果(环境光照强度)
	AutoControl(ret);			// 上电先进行一次自动亮度控制	
	AutoControl(ret+7);
	
	while(1)
	{
		/* 模式切换控制 */
		if(Key1==0)					// 如果按键1被按下去
		{
			LED=~LED;					// 切换LED灯状态
			DelayMs(10);			// 延时消除按键按下的抖动
			while(!Key1);			// 等待按键释放
			DelayMs(10);			// 延时消除按键松开的抖动
		}
			
		/* 亮度控制 */
		if(LED==1)							// 如果LED是灭的
		{
			ManualControl();			// 则进行手动控制
		}
		else										// 如果LED是亮的
		{
			if(gTime<60000)
			{
				ret=Get_ADC0832();		// 获取AD采集结果(环境光照强度)
				AutoControl(ret);			// 进行自动控制	
				DelayMs(200);
			}
		}
		
		/*检测是否有人*/
		if(Module==1)
		{
			gTime=0;										// 检测到有人,则把60秒计时清零
		}
		if(gTime>60000)								// 如果gTime的值超过了60000
		{
			gTime=60000;								// 则把gTime的值重新赋值为60000,避免过大溢出
			gIndex=0;										// 如果1分钟检测不到有人,则把台灯熄灭
		}
	}
}

如需资料请关注公众号“单片机实例设计”,首页回复“台灯”获取资料;
在这里插入图片描述

版权声明:本文为CSDN博主「单片机实例设计」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/eletronicfish/article/details/120110084

生成海报
点赞 0

单片机实例设计

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于STM32单片机的电子密码锁设计

一.硬件方案 本设计采用STM32F103C8T6单片机作为主控芯片,结合外围的矩阵按键输入、LCD1602液晶显示、报警、开锁等电路模块实现开锁、上锁、报警、密码更改等功能,设计了一款可以多次修改密码并且具有报警

STM32的RFID智能门禁系统设计

一.硬件方案 门禁系统采用STM32 单片机作为控制核心,外围加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及液晶显示电路等。门禁系统主要组成:由CPU、复位电路、电源指示、工作指示、振荡电路、蜂鸣器电路、门控