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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5626|回復: 1
打印 上一主題 下一主題
收起左側

單片機DHT11溫濕度系統程序設計-帶仿真

[復制鏈接]
跳轉到指定樓層
樓主
制作出來的實物圖如下:


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

本文通過使用
AT89C52單片機、DHT11傳感器模塊、1602液晶顯示屏模塊以及繼電器控制模塊。簡單明了的實現的溫濕度的控制要求。DHT11數字溫濕度傳感器把采集到的溫濕度數據傳給單片機。經過單片機的處理。準確的顯示到液晶屏上。如果溫度超過閥值,將會驅動繼電器工作。繼電器將驅動負載相應的工作。在整個系統的工作中,測控系統測得的溫濕度參數通過液晶顯示屏顯示出來供用戶參考。仿真結果表明,該系統完全能夠對倉庫的溫濕度進行監控并對過程中出現的偏差進行調節。

硬件主要以AT89C52型單片機為核心,通過LCD1602實時地顯示傳感器DHT11檢測到的溫濕度值,閥值可以通過AT24C02存儲,實現斷電保存。
#include <reg52.h>
#include "1602.h"
#include "dht.h"
#include "2402.h"

//定義三個LED燈
sbit Led_qushi=P1^6;           //去濕燈
sbit Led_jiangwen=P1^5;             //降溫燈
sbit Led_shengwen=P1^4;            //升溫燈
sbit Key_TH1 = P3^2;
sbit Key_TH2 = P3^3;
sbit Key_HH1 = P3^4;
sbit Key_HH2 = P3^5;

//定義標識
volatile bit FlagStartRH = 0;  //開始溫濕度轉換標志
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;


//數據初始化
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;

}

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

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

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

//存入設定值、
void Save_Setting()
{
   pSave =  (char *)&TH;    //地址低位對應低8位,高位對應高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);

}

//載入設定值、
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()
* 功能 : 主函數
***********************************************************************/
void main()
{
    U16 i, j,testnum;

    EA = 0;

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

    Data_Init();
       EA = 1;

       L1602_init();
       L1602_string(1,1,"Welcome to T&H   ");
       L1602_string(2,1,"Control System!  ");
       //延時
       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:");

    //載入溫度上限和濕度上限設定值
       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)
       {
       //溫濕度轉換標志檢查
               if (FlagStartRH == 1)
               {
                   TR0 = 0;
            testnum = RH();
                     FlagStartRH = 0;
                      TR0 = 1;
             //讀出溫濕度,只取整數部分
                      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;                                    //去濕

              //鍵盤查詢,在彈起時響應
              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下載地址:
基于單片機的溫濕度系統設計.zip (257.92 KB, 下載次數: 112)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩高清在线一区 | 日本欧美国产在线 | 国产福利91精品 | 色播av| 91av精品| 亚洲精品九九 | 久久伊人一区二区 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 亚洲人成在线播放 | 男女羞羞视频在线 | 欧美中国少妇xxx性高请视频 | 999免费视频 | 亚洲美女一区 | 在线一区视频 | 九九热在线观看 | 91精品国产高清久久久久久久久 | 精品一区二区三区四区视频 | 91网视频 | 97伦理影院 | 欧美不卡网站 | 亚洲国产午夜 | 亚洲欧洲一区二区 | 台湾佬久久| 亚洲最新网址 | 欧美一区二区久久 | 98久久| 欧美精品在线免费 | 人碰人操 | 天天舔天天 | 成人av播放 | 久久6视频 | 亚洲精品黄色 | 视频1区2区| 亚洲精品视频在线观看免费 | 亚洲成在线观看 | 亚洲国产精品一区二区第一页 | 日韩理论电影在线观看 | 成人av网站在线观看 | 日韩a | www亚洲精品 | 久久网一区二区三区 |