基于51单片机的智能自动窗帘设计

一.硬件方案

自动窗帘系统硬件电路主要由感光检测电路,时钟电路,电机控制电路、按键电路等外围电路构成。该设计则主要讨论了自动窗帘系统的设计过程,硬件电路设计,软件调试过程。通过本系统可以实现通过光照强度实现窗帘开关自动控制、定时控制和手动控制等不同的控制方式。
硬件主要采用51单片机+LCD1602液晶显示+DS18B20+光敏电阻+DS1302+步进电机+ULN2003设计而成;如图:
在这里插入图片描述

二.设计功能

(1)液晶实时显示目前的状态,包括温度、模式、光线强度、时间等信息。
(2)智能窗帘可以根据外界光线的强弱来进行自动开关窗户,光线强弱的上下限可以按键调节。
(3)具有手动控制功能,可以手动开/关窗户。
(4)可以通过按键设定窗帘开启的时间和自行关闭的时间。
(5)可以通过按键设定温度值,低于或者高于设定值进行开/关窗户。

三.设计原理图

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

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

四.软件设计

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

(2)主程序源码

/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
	uchar light;
	
	LcdInit();			// 执行液晶初始化	
	DS1302_Init();	// 时钟芯片的初始化
	LcdShowInit();	// 液晶显示内容的初始化
	
	if(DS1302_Read_Byte(0x81)>=128)			// 判断时钟芯片是否正在运行
	{
		DS1302_Write_Time();							// 如果没有,则初始化一个时间
	}
	
	while(1)
	{
		DS1302_Read_Time();				// 获取当前时钟芯片的时间,存在数组time_buf中
		FlashTime();							// 刷新时间显示

		light=Get_ADC0832();			// 读取光照强度
		light=light/2.5;					// 缩小光照检测结果(在0-99)
		if(light>99)							// 如果大于99
			light=99;								// 则依然保持99
		LcdGotoXY(1,14);					// 光标定位
		LcdPrintNum(light);				// 显示光照强度
		
		KeyScanf1();							// 按键扫描(时间的设置)
		KeyScanf2();							// 按键扫描(阈值的设置)
		KeyScanf3();							// 按键扫描(模式切换)
	
		/*手动控制模式*/
		if(gMode==1)
		{
			if(KeyDown_P==0)		// 如果关窗帘键按下了	
			{
				if(Led_P==0)			// 如果窗帘当前是打开的
				{
					Close();				// 则光标窗帘
				}
			}
			if(KeyUp_P==0)			// 如果开窗帘键按下了
			{
				if(Led_P==1)			// 如果窗帘当前是关闭的
				{
					Open();					// 则打开窗帘
				}
			}	
		}
		
		/*时间控制模式*/
		if(gMode==2)
		{
			if((TimeBuff[4]==CloseHour)&&(TimeBuff[5]==CloseMinute)&&(TimeBuff[6]==0))	// 如果到了关窗帘的时间	
			{
				if(Led_P==0)			// 如果窗帘当前是打开的
				{
					Close();				// 则光标窗帘
				}
			}
			if((TimeBuff[4]==OpenHour)&&(TimeBuff[5]==OpenMinute)&&(TimeBuff[6]==0))		// 如果到了开窗帘的时间	
			{
				if(Led_P==1)			// 如果窗帘当前是关闭的
				{
					Open();					// 则打开窗帘
				}
			}	
		}
		
		/*光线控制模式*/
		if(gMode==3)
		{
			if(light<gLight)		// 当前光线小于设置的阈值
			{
				if(Led_P==0)			// 如果窗帘当前是打开的
				{
					Close();				// 则光标窗帘
				}
			}
			else								// 当前光线大于或等于设置的阈值
			{
				if(Led_P==1)			// 如果窗帘当前是关闭的
				{
					Open();					// 则打开窗帘
				}
			}	
		}
		
		DelayMs(100);							// 延时0.1秒
	}
}

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

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

一.硬件方案

自动窗帘系统硬件电路主要由感光检测电路,时钟电路,电机控制电路、按键电路等外围电路构成。该设计则主要讨论了自动窗帘系统的设计过程,硬件电路设计,软件调试过程。通过本系统可以实现通过光照强度实现窗帘开关自动控制、定时控制和手动控制等不同的控制方式。
硬件主要采用51单片机+LCD1602液晶显示+DS18B20+光敏电阻+DS1302+步进电机+ULN2003设计而成;如图:
在这里插入图片描述

二.设计功能

(1)液晶实时显示目前的状态,包括温度、模式、光线强度、时间等信息。
(2)智能窗帘可以根据外界光线的强弱来进行自动开关窗户,光线强弱的上下限可以按键调节。
(3)具有手动控制功能,可以手动开/关窗户。
(4)可以通过按键设定窗帘开启的时间和自行关闭的时间。
(5)可以通过按键设定温度值,低于或者高于设定值进行开/关窗户。

三.设计原理图

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

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

四.软件设计

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

(2)主程序源码

/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
	uchar light;
	
	LcdInit();			// 执行液晶初始化	
	DS1302_Init();	// 时钟芯片的初始化
	LcdShowInit();	// 液晶显示内容的初始化
	
	if(DS1302_Read_Byte(0x81)>=128)			// 判断时钟芯片是否正在运行
	{
		DS1302_Write_Time();							// 如果没有,则初始化一个时间
	}
	
	while(1)
	{
		DS1302_Read_Time();				// 获取当前时钟芯片的时间,存在数组time_buf中
		FlashTime();							// 刷新时间显示

		light=Get_ADC0832();			// 读取光照强度
		light=light/2.5;					// 缩小光照检测结果(在0-99)
		if(light>99)							// 如果大于99
			light=99;								// 则依然保持99
		LcdGotoXY(1,14);					// 光标定位
		LcdPrintNum(light);				// 显示光照强度
		
		KeyScanf1();							// 按键扫描(时间的设置)
		KeyScanf2();							// 按键扫描(阈值的设置)
		KeyScanf3();							// 按键扫描(模式切换)
	
		/*手动控制模式*/
		if(gMode==1)
		{
			if(KeyDown_P==0)		// 如果关窗帘键按下了	
			{
				if(Led_P==0)			// 如果窗帘当前是打开的
				{
					Close();				// 则光标窗帘
				}
			}
			if(KeyUp_P==0)			// 如果开窗帘键按下了
			{
				if(Led_P==1)			// 如果窗帘当前是关闭的
				{
					Open();					// 则打开窗帘
				}
			}	
		}
		
		/*时间控制模式*/
		if(gMode==2)
		{
			if((TimeBuff[4]==CloseHour)&&(TimeBuff[5]==CloseMinute)&&(TimeBuff[6]==0))	// 如果到了关窗帘的时间	
			{
				if(Led_P==0)			// 如果窗帘当前是打开的
				{
					Close();				// 则光标窗帘
				}
			}
			if((TimeBuff[4]==OpenHour)&&(TimeBuff[5]==OpenMinute)&&(TimeBuff[6]==0))		// 如果到了开窗帘的时间	
			{
				if(Led_P==1)			// 如果窗帘当前是关闭的
				{
					Open();					// 则打开窗帘
				}
			}	
		}
		
		/*光线控制模式*/
		if(gMode==3)
		{
			if(light<gLight)		// 当前光线小于设置的阈值
			{
				if(Led_P==0)			// 如果窗帘当前是打开的
				{
					Close();				// 则光标窗帘
				}
			}
			else								// 当前光线大于或等于设置的阈值
			{
				if(Led_P==1)			// 如果窗帘当前是关闭的
				{
					Open();					// 则打开窗帘
				}
			}	
		}
		
		DelayMs(100);							// 延时0.1秒
	}
}

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

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

生成海报
点赞 0

单片机实例设计

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

暂无评论

发表评论

相关推荐

STM32的RFID智能门禁系统设计

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

基于51单片机的智能自动窗帘设计

一.硬件方案 自动窗帘系统硬件电路主要由感光检测电路,时钟电路,电机控制电路、按键电路等外围电路构成。该设计则主要讨论了自动窗帘系统的设计过程,硬件电路设计,软件调试过程。通过本系统可以

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许