<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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);        //改變這個參數可以調整電機轉速
    }
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6008

    文章

    44102

    瀏覽量

    623525
  • 控制系統
    +關注

    關注

    41

    文章

    6135

    瀏覽量

    109581
  • STC89C52
    +關注

    關注

    40

    文章

    330

    瀏覽量

    81544
  • 步進電機
    +關注

    關注

    149

    文章

    2968

    瀏覽量

    146369
  • 驅動電路
    +關注

    關注

    151

    文章

    1480

    瀏覽量

    107785
收藏 人收藏

    評論

    相關推薦

    STC89C52單片機書籍分享

    STC89C52單片機書籍
    發表于 01-24 16:14

    STC89C52單片機

    ????STC89C52RC是STC公司生產的一種低功耗、高性能CMOS8位微控制器,具有8K字節系統可編程Flash存儲器。STC89C52
    發表于 07-14 06:07

    基于51單片機自動窗簾控制系統設計

    1.簡介自動窗簾控制系統核心采用的是單片機STC89C52,其次利用了光照傳感器、按鍵、顯示屏以及信號調理電路等外圍電路,使整個
    發表于 07-19 09:40

    基于STC89C52的智能全自動洗衣控制系統設計

    的穩定性、降低制造成本以及更方便的操作,設計了一種基于STC89C52單片機的全自動洗衣控制系統。該
    發表于 09-10 07:05

    基于STC89C52單片機的門禁系統設計

    本課題設計的門禁系統主要采用STC89C52 單片機作為控制核心,外圍加藍牙模塊電路、電控鎖控制電路等。門禁
    發表于 09-17 08:31

    STC89C52單片機實現的智能燈光控制系統

    一.硬件方案智能燈光控制系統單片機最小系統、人體感應模塊、關照強度模塊、燈光控制模塊、電源模塊和燈泡組成。本文以STC89C52
    發表于 11-10 06:22

    基于STC89C52的水塔水位控制系統設計

    水位正常。因此這里給出以 STC89C52單片機為核心器 件的水塔水位檢測控制系統,該系統能實現水塔水位檢測、 LCD1602 顯示當前水位功能以及蜂鳴器鳴笛報警, 手動按鍵調整 PW
    發表于 12-02 07:42

    基于STC89C52單片機的交通燈控制系統設計

    基于STC89C52單片機的交通燈控制系統設計 論文類
    發表于 12-14 15:44 ?167次下載

    基于STC89C52單片機控制的溫度控制系統課程設計

    基于STC89C52單片機控制的溫度控制系統
    發表于 01-06 17:00 ?152次下載

    單片機STC89C52程序

    單片機STC89C52源程序。
    發表于 01-11 18:16 ?109次下載

    基于STC89C52單片機的智能交通燈控系統設計

    基于STC89C52單片機的智能交通燈控系統設計
    發表于 02-22 11:37 ?105次下載

    基于STC89C52單片機的智能窗簾控制系統

    基于STC89C52單片機的智能窗簾控制,但沒有程序圖和連線圖。
    發表于 04-28 18:02 ?31次下載

    STC89C52單片機介紹

    STC89C52單片機介紹。
    發表于 05-20 13:55 ?257次下載

    基于STC89C52單片機控制系統設計

    本文主要介紹了基于STC89C52單片機控制系統設計。
    發表于 06-24 08:00 ?111次下載
    基于<b class='flag-5'>STC89C52</b><b class='flag-5'>單片機</b>的<b class='flag-5'>控制系統</b>設計

    基于單片機STC89C52控制的智能小車簡介

    基于單片機STC89C52控制的智能小車簡介(單片機原理圖)-該文檔為基于單片機STC89C52
    發表于 07-22 14:21 ?62次下載
    基于<b class='flag-5'>單片機</b><b class='flag-5'>STC89C52</b><b class='flag-5'>控制</b>的智能小車簡介
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>