0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STC89C52单片机的自动窗帘控制系统设计

CHANBAEK 来源:电子应用学习馆 作者:一只会飞的大鱼儿 2023-03-31 14:34 次阅读

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连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。

(6)总体电路图

截图20230301181746.png

3.软件设计

系统软件设计主要有几部分组成,主要分为主程序和各个模块子程序。

(1)主程序设计

主程序构成无限循环,主要完成单片机初始化,关中断,菜单显示内容初始化,按键扫描,电机运行,计时等功能。 流程图如图:

在这里插入图片描述

代码:

void main()
{  
  init_eepom();     //初始化EEPROM
  init_1602();     //lcd1602初始化
  init_1602_dis_csf(); //lcd1602初始化显示
  init_ds1302_io();   //初始化ds1302Io
  init_time0();     //初始化定时器
  menu_1_break();       //菜单初始界面
  init_ds1302();     //ds1302初始化
  temperature1 = read1_temp();  //读温度1
  delay_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;   //温度报警 ,蜂鸣器报警
        else 
          beep = 1;        
      }
    }
    bujindj();   //步进电机函数
  }
}

(2)步进电机驱动程序设计

步进电机程序设计主要实现的功能为判断旋转方向; 按顺序传送控制脉冲; 判断所要求的控制步数是否传送完毕。 程序流程图如图:

在这里插入图片描述

代码:

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();  //保存
      }else 
        bjdj_value ++;  
    }
    if(flag_z_f == 2)     //关
    {        
      if(bjdj_value <= 1)
      {
        flag_z_f = 0;
        bjdj_value = 1;
        P2 = P2 & 0xf0;  //让4个IO口都不输出
        write_eepom();  //保存
      }else  
        bjdj_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);        //改变这个参数可以调整电机转速
    }
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632839
  • 控制系统
    +关注

    关注

    41

    文章

    6542

    浏览量

    110464
  • STC89C52
    +关注

    关注

    41

    文章

    330

    浏览量

    81996
  • 步进电机
    +关注

    关注

    150

    文章

    3095

    浏览量

    147336
  • 驱动电路
    +关注

    关注

    152

    文章

    1520

    浏览量

    108356
收藏 人收藏

    评论

    相关推荐

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

    1.简介自动窗帘控制系统核心采用的是单片机STC89C52,其次利用了光照传感器、按键、显示屏以及信号调理电路等外围电路,使整个
    发表于 07-19 09:40

    基于STC89C52的智能全自动洗衣控制系统设计

    的稳定性、降低制造成本以及更方便的操作,设计了一种基于STC89C52单片机的全自动洗衣控制系统。该
    发表于 09-10 07:05

    基于单片机STC89C52的摇摇棒

    基于单片机STC89C52的摇摇棒设计,有电路图和源程序
    发表于 11-23 14:38 28次下载

    基于STC89C52单片机的交通灯控制系统设计

    基于STC89C52单片机的交通灯控制系统设计 论文类
    发表于 12-14 15:44 167次下载

    基于STC89C52单片机控制的温度控制系统课程设计

    基于STC89C52单片机控制的温度控制系统
    发表于 01-06 17:00 152次下载

    单片机STC89C52程序

    单片机STC89C52源程序。
    发表于 01-11 18:16 112次下载

    基于STC89C52单片机的智能交通灯控系统设计

    基于STC89C52单片机的智能交通灯控系统设计
    发表于 02-22 11:37 106次下载

    基于STC89C52单片机的智能窗帘控制系统

    基于STC89C52单片机的智能窗帘控制,但没有程序图和连线图。
    发表于 04-28 18:02 31次下载

    STC89C52单片机介绍

    STC89C52单片机介绍。
    发表于 05-20 13:55 257次下载

    基于单片机STC89c52 GSM的智能家居报警系统设计

    基于单片机STC89c52 GSM的智能家居报警系统设计,分享给大家。
    发表于 05-05 08:40 81次下载

    基于STC89C52单片机控制系统设计

    本文主要介绍了基于STC89C52单片机控制系统设计。
    发表于 06-24 08:00 112次下载
    基于<b class='flag-5'>STC89C52</b><b class='flag-5'>单片机</b>的<b class='flag-5'>控制系统</b>设计

    使用STC89C52单片机设计无线温度控制系统的资料免费下载

    本文档的主要内容详细介绍的是使用STC89C52单片机设计无线温度控制系统的资料和提高变电运行供电可靠性相关问题的思考免费下载。
    发表于 01-17 11:18 19次下载
    使用<b class='flag-5'>STC89C52</b><b class='flag-5'>单片机</b>设计无线温度<b class='flag-5'>控制系统</b>的资料免费下载

    基于单片机STC89C52控制的智能小车简介

    基于单片机STC89C52控制的智能小车简介(单片机原理图)-该文档为基于单片机STC89C52
    发表于 07-22 14:21 68次下载
    基于<b class='flag-5'>单片机</b><b class='flag-5'>STC89C52</b><b class='flag-5'>控制</b>的智能小车简介

    STC89C52单片机器件手册

    、EE-PROM、看门狗等模块。STC89C52系列单片机几乎包含了数据采集和控制中所需的所有单模块,可称得上一个片上系统
    发表于 09-05 10:41 8次下载

    STC89C52单片机最小系统板-基础版技术手册

    STC89C52单片机最小系统板-基础版技术手册
    发表于 09-18 10:56 12次下载