久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

單片機(jī)DHT11溫濕度系統(tǒng)程序設(shè)計(jì)-帶仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
制作出來(lái)的實(shí)物圖如下:


仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

本文通過(guò)使用
AT89C52單片機(jī)、DHT11傳感器模塊、1602液晶顯示屏模塊以及繼電器控制模塊。簡(jiǎn)單明了的實(shí)現(xiàn)的溫濕度的控制要求。DHT11數(shù)字溫濕度傳感器把采集到的溫濕度數(shù)據(jù)傳給單片機(jī)。經(jīng)過(guò)單片機(jī)的處理。準(zhǔn)確的顯示到液晶屏上。如果溫度超過(guò)閥值,將會(huì)驅(qū)動(dòng)繼電器工作。繼電器將驅(qū)動(dòng)負(fù)載相應(yīng)的工作。在整個(gè)系統(tǒng)的工作中,測(cè)控系統(tǒng)測(cè)得的溫濕度參數(shù)通過(guò)液晶顯示屏顯示出來(lái)供用戶參考。仿真結(jié)果表明,該系統(tǒng)完全能夠?qū)}(cāng)庫(kù)的溫濕度進(jìn)行監(jiān)控并對(duì)過(guò)程中出現(xiàn)的偏差進(jìn)行調(diào)節(jié)。

硬件主要以AT89C52型單片機(jī)為核心,通過(guò)LCD1602實(shí)時(shí)地顯示傳感器DHT11檢測(cè)到的溫濕度值,閥值可以通過(guò)AT24C02存儲(chǔ),實(shí)現(xiàn)斷電保存。
#include <reg52.h>
#include "1602.h"
#include "dht.h"
#include "2402.h"

//定義三個(gè)LED燈
sbit Led_qushi=P1^6;           //去濕燈
sbit Led_jiangwen=P1^5;             //降溫?zé)?/div>
sbit Led_shengwen=P1^4;            //升溫?zé)?/div>
sbit Key_TH1 = P3^2;
sbit Key_TH2 = P3^3;
sbit Key_HH1 = P3^4;
sbit Key_HH2 = P3^5;

//定義標(biāo)識(shí)
volatile bit FlagStartRH = 0;  //開始溫濕度轉(zhuǎn)換標(biāo)志
volatile bit FlagKeyPress = 0; //有鍵按下


//定義溫濕度傳感器用外部變量
extern U8 U8FLAG,k;
extern U8 U8count,U8temp;
extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
extern U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
extern U8 U8comdata;
extern U8  count,count_r;

U16 temp;
S16 temperature, humidity;
S16 idata TH, HH; //溫度上限和濕度上限
char * pSave;
U8 keyvalue, keyTH1, keyTH2, keyHH1, keyHH2;

//定義變量
U16 RHCounter;


//數(shù)據(jù)初始化
void Data_Init()
{
   RHCounter = 0;
   Led_qushi = 1;
   Led_jiangwen =1;
   Led_shengwen =1;
   TH = 40;
   HH = 85;
   keyvalue = 0;
   keyTH1 = 1;
   keyTH2 = 1;
   keyHH1 = 1;
   keyHH2 = 1;

}

//定時(shí)器0初始化
void Timer0_Init()
{
       ET0 = 1;        //允許定時(shí)器0中斷
       TMOD =1;       //定時(shí)器工作方式選擇
       TL0 =0x06;     
       TH0 =0xf8;     //定時(shí)器賦予初值
       TR0 = 1;        //啟動(dòng)定時(shí)器
}

//定時(shí)器0中斷
void Timer0_ISR (void) interrupt 1 using 0
{
       TL0 = 0x06;
       TH0 =0xf8;     //定時(shí)器賦予初值

       //每2秒鐘啟動(dòng)一次溫濕度轉(zhuǎn)換
    RHCounter ++;
    if (RHCounter>= 1000)
    {
       FlagStartRH= 1;
          RHCounter = 0;
    }
}

//存入設(shè)定值、
void Save_Setting()
{
   pSave =  (char *)&TH;    //地址低位對(duì)應(yīng)低8位,高位對(duì)應(yīng)高8位
   wrteeprom(0,*pSave);      //存溫度上限值TH低8位
   DELAY(500);
   pSave ++;
   wrteeprom(1,*pSave);      //存溫度上限值TH高8位
   DELAY(500);
   pSave =  (char *)&HH;
   wrteeprom(2,*pSave);      //存濕度上限值RH低8位
   DELAY(500);
   pSave ++;
   wrteeprom(3,*pSave);      //存濕度上限值RH高8位
   DELAY(500);

}

//載入設(shè)定值、
void Load_Setting()
{
   pSave =  (char *)&TH;
   *pSave++ =rdeeprom(0);
   *pSave =rdeeprom(1);
   pSave = (char*)&HH;
   *pSave++ =rdeeprom(2);
   *pSave =rdeeprom(3);
   if((TH>99)||(TH<0)) TH = 40;
   if((HH>99)||(HH<0)) HH = 85;
}

void KeyProcess(uint num)
{
   switch (num)
   {
      case 1:
            if (TH<99) TH++;
            L1602_char(1, 15, TH/10+48);
            L1602_char(1, 16, TH%10+48);
            break;
         case 2:
            if (TH>1) TH--;
            L1602_char(1, 15, TH/10+48);
            L1602_char(1, 16, TH%10+48);
            break;
         case 3:
            if (HH<99) HH++;
            L1602_char(2, 15, HH/10+48);
            L1602_char(2, 16, HH%10+48);
            break;
         case 4:
            if (HH>1) HH--;
            L1602_char(2, 15, HH/10+48);
            L1602_char(2, 16, HH%10+48);
            break;
         default:
            break;
   }
   Save_Setting();

}

/********************************************************************
* 名稱 : Main()
* 功能 : 主函數(shù)
***********************************************************************/
void main()
{
    U16 i, j,testnum;

    EA = 0;

       Timer0_Init();  //定時(shí)器0初始化

    Data_Init();
       EA = 1;

       L1602_init();
       L1602_string(1,1,"Welcome to T&H   ");
       L1602_string(2,1,"Control System!  ");
       //延時(shí)
       for(i=0;i<500;i++)
          for (j=0;j<1000;j++)
          {;}
    //清屏
       L1602_string(1,1,"                ");
       L1602_string(2,1,"                ");
   L1602_string(1,1,"Tem:   C  TH:");
       L1602_string(2,1,"Hum:    % HH:");

    //載入溫度上限和濕度上限設(shè)定值
       Load_Setting();
       L1602_char(1,15, TH/10+48);
       L1602_char(1,16, TH%10+48);
       L1602_char(2,15, HH/10+48);
       L1602_char(2,16, HH%10+48);


       while(1)
       {
       //溫濕度轉(zhuǎn)換標(biāo)志檢查
               if (FlagStartRH == 1)
               {
                   TR0 = 0;
            testnum = RH();
                     FlagStartRH = 0;
                      TR0 = 1;
             //讀出溫濕度,只取整數(shù)部分
                      humidity = U8RH_data_H;
                      temperature = U8T_data_H;
                     //顯示溫濕度
                      L1602_int(1,5,temperature);
                   L1602_int(2,5,humidity);   
              }
              //溫濕度控制
              if(temperature > TH) Led_jiangwen = 0;
              elseLed_jiangwen = 1;                        //降溫
              if(humidity > HH) Led_qushi = 0;
              elseLed_qushi = 1;                                    //去濕

              //鍵盤查詢,在彈起時(shí)響應(yīng)
              if((Key_TH1)&&(keyTH1==0)) {FlagKeyPress = 1; keyvalue = 1;}
        else if((Key_TH2)&&(keyTH2==0)) {FlagKeyPress = 1; keyvalue = 2;}
        else if((Key_HH1)&&(keyHH1==0)) {FlagKeyPress = 1; keyvalue = 3;}
        else if((Key_HH2)&&(keyHH2==0)) {FlagKeyPress = 1; keyvalue = 4;}
              if(FlagKeyPress == 1)
              {
          KeyProcess(keyvalue);
          FlagKeyPress = 0;           
              }
        if (!Key_TH1)keyTH1 = 0;
              elsekeyTH1 = 1;
        if(!Key_TH2) keyTH2 = 0;
              elsekeyTH2 = 1;
        if(!Key_HH1) keyHH1 = 0;
              elsekeyHH1 = 1;
        if(!Key_HH2) keyHH2 = 0;
              elsekeyHH2 = 1;

       }     
}


全部資料51hei下載地址:
基于單片機(jī)的溫濕度系統(tǒng)設(shè)計(jì).zip (257.92 KB, 下載次數(shù): 112)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:720981 發(fā)表于 2020-4-2 16:12 | 只看該作者
在下新手,試著用這個(gè)程序練習(xí)。發(fā)現(xiàn)KEIL程序找不到1602、DHT和2402頭文件。問(wèn)一下您的頭文件是自己編寫的還是在網(wǎng)上下載的,方便發(fā)一下嗎?謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品区一区二区不卡 | 国产精品我不卡 | 一区二区激情 | 一区二区精品 | 国产中文一区二区三区 | 97精品超碰一区二区三区 | 久久综合九色综合欧美狠狠 | 99爱在线免费观看 | 亚洲九色 | 日韩欧美一级精品久久 | 欧美日韩成人在线 | 麻豆久久久久 | 一区二区三区视频在线观看 | 99精品视频一区二区三区 | 女生羞羞视频 | 欧美一区二区三区在线 | 久久久久国产一区二区三区四区 | 日本久久精品视频 | 成人午夜高清 | 欧美精品久久 | 亚洲第一福利网 | 国产一区 | 天天综合网91 | 国产精品精品视频一区二区三区 | 国产精品日韩一区二区 | 另类视频区 | 欧美精品二区 | 一级大黄色片 | 日韩视频免费在线 | 密室大逃脱第六季大神版在线观看 | 亚洲一区在线日韩在线深爱 | www.性色| 在线精品一区 | 日日操夜夜操天天操 | 国产一区二区av | 日韩视频在线一区 | 亚洲精品视频免费看 | 欧美久久久久久 | 一级黄色片免费 | 欧美久久精品一级黑人c片 91免费在线视频 | 黄色免费网 |