基于51单片机的自动窗帘控制系统

发布时间:2025-01-07 11:02

安装自动窗帘控制系统 #生活技巧# #居家生活技巧# #懒人生活技巧# #自动化生活小物#

1. 简介
自动窗帘控制系统核心采用的是单片机STC89C52,其次利用了光照传感器、按键、显示屏以及信号调理电路等外围电路,使整个系统在各模块的配合下可实现半自动控制、自动控制、定时控制等功能。其主要功能有6个,分别为:
(1)手动控制:该功能是根据用户的需求通过按键进行窗帘的开关,此功能可以使窗帘的开闭处于任何一种状态;
(2)光照自动控制:系统可以根据用户设定的光照强度值通过感光器采集光照自动开关窗帘;
(3)时间控制:此功能是根据用户设定的时间一次性开关窗帘,并显示当前温度。
(4)温度报警系统:可以自行设置温度报警温度。
(5)时间显示及闹钟系统:可以自行设置闹钟时间。
(6)手动自动控制按键随时切换

2.硬件设计
自动窗帘控制系统的构成主要由STC89C52单片机最小系统、蜂鸣器报警电路、电源模块、按键电路、LCD1602液晶显示电路、步进电机驱动电路、DS1302时钟电路、光照检测模块和温度检测电路组成。其系统框图如图:
在这里插入图片描述
(1)光照检测电路
窗帘自动控制系统的光控功能是可以根据光照的强弱来自动控制窗帘的开闭的,因此需要用到光照传感元器件,在本设计中采用了光敏电阻,并和一个常规电阻串联在一起,根据光线的变化改变光敏电阻的分压值,然后通过ADC0832数模转换芯片传输给单片机,经过单片机处理后在液晶上显示。电路图如图:
在这里插入图片描述
(2)灯光驱动电路
灯光电路使用了3个LED灯作为光源,采用了三极管作为LED灯开关的控制芯片,同时也对驱动电流进行放大,以达到LED灯工作电流的要求。原理图如图:
在这里插入图片描述
(3)步进电机驱动电路
本系统的设计目的为了高效控制步进电机的转动,因此需要将单片机发出的脉冲转化为步进角度,才能控制步进电机转动,我们在这里采用ULN2003作为步进电机的驱动芯片,其作用为增强单片机的驱动能力。其工作原理为:根据单片机引脚的输出状态,使ULN2003与单片机连接的四个管脚中每时刻只有一个管脚处于导通状态(采用单拍方式对步进电机控制),其他管脚处于断开状态。这样就使得与ULN2003连接的步进电机只有一个引出端导通。驱动原理图如图:
在这里插入图片描述
(4)按键电路
按键在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单片机的主要手段。本设计中的按键采用独立按键式,共有五个。其中S2是自动和手动切换键,S3是设置退出键,S4是手动反转和设置参数减键,S5是手动正转和设置参数加键,S6是参数设置键。电路图如图:
在这里插入图片描述
(5)DS1302时钟电路
本设计采用DS1302时钟芯片为系统提供时钟源,它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;电路如图:
在这里插入图片描述
电路图中,Vcc1为后备电源,Vcc2为主电源。VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。

3.软件设计
系统软件设计主要有几部分组成,主要分为主程序和各个模块子程序。
(1)主程序设计
主程序构成无限循环,主要完成单片机初始化,关中断,菜单显示内容初始化,按键扫描,电机运行,计时等功能。流程图如图:
在这里插入图片描述
代码:

void main() {init_eepom(); //初始化EEPROMinit_1602(); //lcd1602初始化init_1602_dis_csf(); //lcd1602初始化显示init_ds1302_io(); //初始化ds1302Ioinit_time0(); //初始化定时器menu_1_break(); //菜单初始界面init_ds1302(); //ds1302初始化temperature1 = read1_temp(); //读温度1delay_1ms(650);while(1){key(); //按键程序if(key_can < 10){key_with();}shoudong_kaiguan(); //手动开关窗帘if(flag_200ms == 1){flag_200ms = 0;temperature1 = read1_temp(); //读温度1环境温度if(temperature1 >= 99)temperature1 = 99;zinengchuanglian_dis(); //智能窗帘处理函数guanxian = ad0832read(1,0) * 9.0 / 255;if((menu_1 == 0)){read_time(); //读时间init_1602_ds1302(); //显示时钟write_sfm_18b20(2,13,temperature1);//显示温度write_sfm1(2,0,guanxian);//显示温度if(guanxian <= guanxian_set) LED=0;else LED=1;if(temperature1 >= t_high)beep =~beep; //温度报警 ,蜂鸣器报警elsebeep = 1;}}bujindj(); //步进电机函数} }

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647

(2)步进电机驱动程序设计
步进电机程序设计主要实现的功能为判断旋转方向;按顺序传送控制脉冲;判断所要求的控制步数是否传送完毕。程序流程图如图:
在这里插入图片描述
代码:

uchar flag_z_f; //正反标志位 0为顺时钟 1为逆时史上转 unsigned char code zheng[4]={0xf8,0xf4,0xf2,0xf1};//正转表格 unsigned char code fan[4]={0xf1,0xf2,0xf4,0xf8};//反转表格 uint bjdj_value; //步进电机的量 uchar bjdj_zidong; //步进电机的量自动 void bujindj() //步进电机函数 {static uchar i;if(flag_z_f != 0){if(flag_z_f == 1) //开{if(bjdj_value >= 254){flag_z_f = 0;bjdj_value = 254;P2 = P2 & 0xf0;//让4个IO口都不输出write_eepom(); //保存}elsebjdj_value ++;}if(flag_z_f == 2) //关{if(bjdj_value <= 1){flag_z_f = 0;bjdj_value = 1;P2 = P2 & 0xf0;//让4个IO口都不输出write_eepom(); //保存}elsebjdj_value --;}for(i=0;i<4;i++) //4相{if(flag_z_f == 1) //开P2=zheng[i];// & (P2 | 0xf0); //else if(flag_z_f == 2)//关P2=fan[i];// & (P2 | 0xf0); //delay_uint(500); //改变这个参数可以调整电机转速}} }

123456789101112131415161718192021222324252627282930313233343536373839404142434445

由于代码较多,其他子程序就不一一介绍,有兴趣可下载源码去看看。

源码+AD原理图 下载:关注公众号,首页回复“自动窗帘”获取资料
在这里插入图片描述

网址:基于51单片机的自动窗帘控制系统 https://www.yuejiaxmz.com/news/view/662053

相关内容

51单片机、DS18B20、智能窗帘控制系统
基于51单片机的智能照明控制系统
基于51单片机无线蓝牙智能家居控制系统设计
基于单片机智能窗户自动控制系统设计
基于51单片机楼梯清洁机器人控制系统设计
基于51单片机的家电控制系统设计
基于51单片机的教室智能照明控制系统
自动窗帘控制系统
基于51单片机的教室智能照明控制系统(程序+原理图+PCB+Proteus)
基于51单片机项目程序——智能家居控制系统

随便看看