51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」本系统以51单片机为核心,重点研究并开发了一套以STC89C52单片机为核心的智能化窗帘控制系统

目录

一、任务简述

二、总体设计

 三、硬件设计

1、最小系统模块

2、液晶显示电路

 3、时钟模块

4、电机驱动模块 

 四、软件设计

1、总体设计

2、代码展示


一、任务简述

       本系统以51单片机为核心,重点研究并开发了一套以STC89C52单片机为核心的智能化窗帘控制系统。本系统利用红外遥控器及电机驱动动技术,可自动开启、定时开启、手动开启及遥控控制。同时,该系统还具有光敏电阻传感器,可根据外界光线强度,对窗帘进行自动开闭,实现了对系统的智能化控制。本文详细介绍了该系统的软、硬件设计。在硬件方面,主要进行了元件选择和电路原理图、仿真图设计等方面的工作。其中,软件设计主要包括了主程序,光照传感器程序,定时器程序,液晶显示器程序,红外遥控程序等。在软件方面,系统的总体设计是在KeilC51集成开发系统的基础上,使用 C语言编写程序,并在KeilC51集成开发平台上完成;经过多次反复测试系统稳定性,使得系统能够达到根据太阳光的强弱,实现自动控制、定时控制、手动控制和远程控制的目的。

二、总体设计

        一种以51单片机为核心,与电阻、电容和晶体振荡相结合的微型计算机系统。该机采用 MCU作为主要控制元件,包括:1602型 LCD,可以在同一时间内显示出日期、时间、时间、亮度等基础参数;该系统采用DS1302型微处理器。以此单片机为核心,对其进行了时钟信号处理。将进入计时状态,此时,单片计算机仅需要读取计时信息;利用光敏电阻器和ADC0832对光强明信号进行处理,实现了对光强信号的数字处理和显示;窗帘采用步进电机驱动,而不是采用仿真控制,并采用 LED显示屏显示窗帘当前的切换状态;此外,该设计还设有5个按钮,可用于调节目前的时间,并可设定窗帘切换时间及光控阈值等;并且还能通过远程控制窗帘的开启和关闭。最终,电源由通用的5V的USB供电。

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

 三、硬件设计

1、最小系统模块

       STC89C52是一种高性能的、低电压的、8位的单片机,片内包有8 K的可反复洗写的 Flash只读程序存储器和256×8 bit的随机访问数据存储器(RAM)。本装置使用了 ATMEL公司的高密度、不易失性存储技术,并满足MCS-51标准。STC89C52采用8位 CPU和 FLASH作为内核,能适应更多更复杂的要求。STC89C52有三个机型,分别为 PDIP, PQFP/TQFP, PLCC,可适应不同的需求。

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

 

2、液晶显示电路

        LCD显示屏具有质量轻,价格低,功耗低、高信息量(文字、图表、曲线等)、使用寿命长、无电磁辐射等特点,被广泛用于便携式电子设备。

        本系统采用工业汉字液晶显示器“1602”,一次可显示16个汉字两列,并能方便地显示英文中的大小写字母、阿拉伯数字和常见的符号。通过自定义还能显示汉字。

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

 3、时钟模块

       文中选用了DS1302作为时钟电路,通过串行接口进行数据传送,通过程序对其进行断电保护和向其注入微量电流。如今人们通常使用STM32。使用768千赫玆的晶体振荡器。本款具有记忆功能的时计,能同时显示年月日时分秒,并具有“闰年”修正功能。采用2.0 V~5.5 V供电。该系统使用三线接口实现与中央处理器的同步通讯,并且可以脉冲传输多位的时钟和 RAM数据。DS1302具有31×8大小的随机性记忆体,用以临时存储数据。DS1302是一个与DS1202相容的改良版,但是增加了一个备用电源插头。

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

4、电机驱动模块 

       在此基础上,提出了一种基于开环控制的步进电机,使其在输入端具有良好的线性特性,并在此基础上对其进行了调速。在无负荷时,步进电动机的速度及位置依赖于脉冲个数及频率,而不依赖于负荷。电动机是通过步进传动机构进行的,在预定的方向上做“步距角”移动,使得电机每次移动都有一个固定的角度。提出了利用脉冲个数对角位移进行精密控制的新方法。

         由于单片机的输入/输出不足,因此在 MCU和步进马达之间插入了 TI公司的达林顿阵列高压芯片,才能完成对电机的控制。它的特点是:大的电流增益、高的工作电压、宽的工作温度范围和高的负荷容量。适用于对功率要求较高、工作温度较高的场合。

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

 四、软件设计

1、总体设计

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

2、代码展示

#include <reg52.h>
#include <intrins.h>
// 主函数
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秒
	}
}

51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」

  有问题,私聊。微信:lwfw123456789

今天的文章51单片机智能窗帘程序_基于STM自动窗帘系统设计「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86228.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注