找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 620|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)窗簾的控制文件不知道咋發(fā)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
/*
  控制窗簾開(kāi)關(guān)主函數(shù)
*/
#include<reg52.h>
#include<intrins.h>
#include"define.h"
#include"delay.h"
#include"LCD1602.h"
#include"DS18B20.h"
#include"ADC0832.h"
#include"L298.h"

unsigned char AuMa; //Au自動(dòng),Ma手動(dòng)。自動(dòng)手動(dòng)切換變量
unsigned char StSp; //sr=start,sp=stop。開(kāi)\關(guān)
unsigned char light; //光照強(qiáng)度

//***********************************************************************/

void Automatic();
void Manual();

void main()
{
        
        LCD_init();
        DS_read_temperature();
        if(DS_OK==0)
          return;//如果讀取錯(cuò)誤,返回從新再讀
        display_temperature();
        
  IE=0x85;
        PX0=1; //中斷優(yōu)先
        IT0=1;
        
        
        AuMa=1; //0為自動(dòng),1為手動(dòng)(初始為手動(dòng))
        StSp=1; //0表示開(kāi),1表示關(guān)(初始為關(guān))
        while(1)
        {
                DS_read_temperature();//讀取溫度        
                if(DS_OK==0)
                        return;//如果讀取錯(cuò)誤,返回從新再讀
                display_temperature();
               
                //MotorData=0x00;  //設(shè)電機(jī)轉(zhuǎn)動(dòng)初值
                //MA=0;MB=0;  //初始不轉(zhuǎn)動(dòng)
                //status=1; //初始窗戶(hù)關(guān)閉
               
                light = Get_ADC0832();//讀取光照強(qiáng)度
                light = light/2.5;    //縮小光照檢測(cè)結(jié)果在(0-99)
                 if(light>99)         //如果大于99
         light=99;        //則依然保持99                  
                        
                  
                          if(AuMa == 0) { //進(jìn)入自動(dòng)模式
                                  Automatic();
                            delay(1);
                         }
                        
                         else         { //進(jìn)入手動(dòng)模式
                                  IT1=1;
                                        buffer_line1[10]='M';//*********修改成MAN
                                        buffer_line1[11]='A';//*********修改成MAN
                                        buffer_line1[12]='N';//*********修改成MAN
                                        buffer_line1[13]=' ';//*********修改成MAN
                                        buffer_line1[14]=' ';//*********修改成MAN
                                  Manual();
                            delay(1);
                         }
        
        }
        
}



/*******************手動(dòng)模式***********************/
/*首先選擇手動(dòng)模式,再手動(dòng)選擇開(kāi)還是關(guān)窗簾*/
void Manual()
{

                 if(StSp == 0 ) {//命令開(kāi)并且當(dāng)前窗戶(hù)是關(guān)閉的
                                buffer_line1[14]='0';//*********修改成0,表示開(kāi)
                                zhengzhuan();//電機(jī)正轉(zhuǎn),打開(kāi)窗簾
                 }
                 else if(StSp == 1 )  {//命令關(guān)并且窗戶(hù)當(dāng)前是打開(kāi)的
                                buffer_line1[14]='1';//*********修改成1,表示關(guān)
                                fanzhuan();//電機(jī)反轉(zhuǎn),關(guān)閉窗簾
                 }
                 
                 //MA=0;MB=0;
                 
}

/*******************自動(dòng)模式*************************/
/*
  首先選擇自動(dòng)模式
  光照太強(qiáng)自動(dòng)關(guān)窗簾,溫度太高太低都會(huì)自動(dòng)關(guān)窗簾;
  只有在溫度范圍(15-30)且光線(xiàn)不強(qiáng)才會(huì)自動(dòng)打開(kāi)窗簾。
*/

void Automatic()
{
    uchar gLight = 40;   //窗簾開(kāi)關(guān)的閾值
               
                buffer_line1[10]='A';//*********修改成AUT
                buffer_line1[11]='U';//*********修改成AUT
                buffer_line1[12]='T';//*********修改成AUT
                buffer_line1[13]=' ';//*********修改成AUT        
                buffer_line1[14]=' ';//*********修改成AUT        

               
                if((sign_temp<=15 || sign_temp>=30 || light>=gLight) ) { //當(dāng)前狀態(tài)為開(kāi),執(zhí)行關(guān)命令
                         buffer_line1[14]='1'; //*********修改成1,表示關(guān)
                   fanzhuan();//電機(jī)反轉(zhuǎn),關(guān)閉窗簾
                }
               
                else  { //當(dāng)前狀態(tài)為關(guān),執(zhí)行開(kāi)命令
                         buffer_line1[14]='0'; //*********修改成0,表示開(kāi)
                   zhengzhuan();//電機(jī)正轉(zhuǎn),打開(kāi)窗簾
                }
               
}


//INT0中斷函數(shù)--控制模式切換:自動(dòng)/手動(dòng)
void EX_INT0() interrupt 0
{
          AuMa = (AuMa+1)%2;
}


//INT1中斷函數(shù)--手動(dòng)控制開(kāi)關(guān)切換:開(kāi)/關(guān)
void EX_INT1() interrupt 2
{
   StSp = (StSp+1)%2;         
}        


屏幕截圖 2024-11-27 094253.png (76 KB, 下載次數(shù): 0)

屏幕截圖 2024-11-27 094253.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表