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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的dht11溫濕度采集報警系統

  [復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 liujia21 于 2020-3-22 00:31 編輯

基于51單片機的溫濕度采集報警系統,用dht11采集溫濕度,液晶實時顯示溫濕度,三個按鍵,第一個按鍵是設置鍵,第二個按鍵是加,第三個是減,當實時的溫濕度超過最高或者低于最低,蜂鳴器會報警。完整的程序和電路圖在壓縮包里面,51程序用keil4打開,電路圖是altium designer畫的,下面有源文件。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Data=P1^0;   
uchar rec_dat[13]="000000000000";   
extern void InitLcd1602();
uchar showset[16]="000000000000";
int wendu=0;
int shidu=0;
sbit shezhi=P2^0;
sbit jia=P2^1;
sbit jian=P2^2;
sbit beep=P3^7;
int wendul=5;
int wenduh=30;
int shidul=30;
int shiduh=60;
int change=0;
uchar key_can;  
extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
void DHT11_delay_us(uchar n)
{
    while(--n);
}
void DHT11_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}
void DHT11_start()
{
   Data=1;
   DHT11_delay_us(2);
   Data=0;
   DHT11_delay_ms(20);   
   Data=1;
   DHT11_delay_us(30);
}
uchar DHT11_rec_byte()   
{
   uchar i,dat=0;
  for(i=0;i<8;i++)   
   {         
      while(!Data);   
      DHT11_delay_us(8);   
      dat<<=1;         
      if(Data==1)   
         dat+=1;
      while(Data);      
    }  
    return dat;
}
void DHT11_receive()   
{
    uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
    DHT11_start();
    if(Data==0)
    {
        while(Data==0);   
        DHT11_delay_us(40);  
        R_H=DHT11_rec_byte();   
        R_L=DHT11_rec_byte();   
        T_H=DHT11_rec_byte();   
        T_L=DHT11_rec_byte();   
        revise=DHT11_rec_byte();
        DHT11_delay_us(25);   
        if((R_H+R_L+T_H+T_L)==revise)   
        {
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        }
    shidu=RH;
    wendu=TH;
    rec_dat[0]='H';
    rec_dat[1]=':';
    rec_dat[2]='0'+(RH/10);
        rec_dat[3]='0'+(RH%10);
        rec_dat[4]='R';
        rec_dat[5]='H';
        rec_dat[6]=' ';
        rec_dat[7]=' ';
   
    rec_dat[8]='T';
    rec_dat[9]=':';
        rec_dat[10]='0'+(TH/10);
        rec_dat[11]='0'+(TH%10);
        rec_dat[12]='C';
    }
}

void main()
{   
   InitLcd1602();  
   while(1)
   {   
       DHT11_delay_ms(500);   
       DHT11_receive();
   
    if(shezhi==0)
    {
     DHT11_delay_ms(2);
     if(shezhi==0)
    {
      change++;
      if(change>3)
      {
      change=0;
      
      }
     
      }
     }
   
    if(change==0)
    {
     if(jia==0)
     {
      DHT11_delay_ms(2);
        if(jia==0)
        {
        shidul++;
       if(shidul>99)
       {
        shidul=99;
        
       }
     
        }
        }
      
      if(jian==0)
     {
      DHT11_delay_ms(2);
        if(jian==0)
        {
        shidul--;
       if(shidul<0)
       {
        shidul=0;
        
       }
     
        }
        }
    }
   
    if(change==1)
    {
     if(jia==0)
     {
      DHT11_delay_ms(2);
        if(jia==0)
        {
        shiduh++;
       if(shiduh>99)
       {
        shiduh=99;
        
       }
     
        }
        }
      
      if(jian==0)
     {
      DHT11_delay_ms(2);
        if(jian==0)
        {
        shiduh--;
       if(shiduh<0)
       {
        shiduh=0;
        
       }
     
        }
        }
    }
   
   
   
    if(change==2)
    {
     if(jia==0)
     {
      DHT11_delay_ms(2);
        if(jia==0)
        {
        wendul++;
       if(wendul>99)
       {
        wendul=99;
        
       }
     
        }
        }
      
      if(jian==0)
     {
      DHT11_delay_ms(2);
        if(jian==0)
        {
        wendul--;
       if(wendul<0)
       {
        wendul=0;
        
       }
     
        }
        }
    }
   
    if(change==3)
    {
     if(jia==0)
     {
      DHT11_delay_ms(2);
        if(jia==0)
        {
        wenduh++;
       if(wenduh>99)
       {
        wenduh=99;
        
       }
     
        }
        }
      
      if(jian==0)
     {
      DHT11_delay_ms(2);
        if(jian==0)
        {
        wenduh--;
       if(wenduh<0)
       {
        wenduh=0;
        
       }
     
        }
        }
    }

      showset[0]='L';
    showset[1]=':';
    showset[2]='0'+(shidul/10);
        showset[3]='0'+(shidul%10);
   
      showset[4]='H';
    showset[5]=':';
    showset[6]='0'+(shiduh/10);
        showset[7]='0'+(shiduh%10);
   
    showset[8]='L';
    showset[9]=':';
        showset[10]='0'+(wendul/10);
        showset[11]='0'+(wendul%10);
       showset[12]='L';
    showset[13]=':';
        showset[14]='0'+(wenduh/10);
        showset[15]='0'+(wenduh%10);
   
    if((shidu< shidul )|| (shidu>shiduh))
    {
     beep=0;
     
    }
    else if((wendu< wendul )|| (wendu>wenduh))
    {
     beep=0;
    }
    else
    {
     beep=1;
    }
    LcdShowStr(0,1,showset);  //顯示設定的最高和最低濕度
   LcdShowStr(0,0,rec_dat);  //顯示實時濕度         
   }
}

IMG_20200316_221927.jpg (2.83 MB, 下載次數: 77)

IMG_20200316_221927.jpg

基于51單片機的dht11溫濕度采集程序.zip

48.96 KB, 下載次數: 250, 下載積分: 黑幣 -5

基于51單片機的dht11溫濕度采集電路.zip

191.56 KB, 下載次數: 166, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:706798 發表于 2020-3-26 18:26 | 只看該作者
為啥第一行顯示不出來
回復

使用道具 舉報

板凳
ID:710049 發表于 2020-3-31 00:23 | 只看該作者
52hz92 發表于 2020-3-26 18:26
為啥第一行顯示不出來

數據口得改  p1.1
回復

使用道具 舉報

地板
ID:631911 發表于 2020-5-5 12:18 | 只看該作者
樓主,為啥不顯示呢,小白請指導
回復

使用道具 舉報

5#
ID:724046 發表于 2020-5-14 16:47 | 只看該作者
不能顯示呀,能幫忙解決一下嗎
回復

使用道具 舉報

6#
ID:321836 發表于 2020-5-15 17:19 | 只看該作者
不錯的,謝謝樓主發的資料
回復

使用道具 舉報

7#
ID:752951 發表于 2020-5-16 15:39 來自手機 | 只看該作者
有proteus仿真圖嗎
回復

使用道具 舉報

8#
ID:341546 發表于 2020-10-15 22:18 | 只看該作者
可以實現嗎
回復

使用道具 舉報

9#
ID:341546 發表于 2020-10-15 23:05 | 只看該作者
為什么仿真不出來呀?
回復

使用道具 舉報

10#
ID:831896 發表于 2020-10-19 20:17 | 只看該作者
so nice
回復

使用道具 舉報

11#
ID:861045 發表于 2020-12-15 23:50 | 只看該作者
我用的AT89C52在PROTEUS上仿真,引腳都改好了,LCD上第二行能很順利顯示,第一行就是一直在顯示rec_dat的初始值,研究之后發現似乎是DHT11輸出過來的數據一直是零網上說時序有問題我又不會調時序,它到底是不是DHT11數據的事,求助求助
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区在线观看 | 91在线色视频| 欧美狠狠操 | 国产精品成人免费 | 精品一区二区在线观看 | 黄视频在线网站 | 日本黄色片免费在线观看 | 日韩在线中文字幕 | 性色视频| 国产成人网| www日| 99riav3国产精品视频 | 免费精品| 国产高清在线精品一区二区三区 | 91色在线视频 | 青青草原综合久久大伊人精品 | 三级在线观看 | 中文字幕视频一区二区 | 国产午夜精品视频 | 久久综合伊人 | 91精品久久久久久久久中文字幕 | 亚洲在线免费观看 | 国产小视频精品 | 国产一区二区三区亚洲 | 一级网站 | 欧美成人激情 | 一级黄a视频 | 福利视频亚洲 | 亚洲一区二区三区四区五区中文 | 午夜激情影院 | 国产激情一区二区三区 | 欧美一二区 | 国产一区二区三区高清 | 亚洲午夜久久久 | 在线看一区二区三区 | 91久久精品日日躁夜夜躁国产 | 91精品国产综合久久精品 | 午夜精品在线 | 草草草草视频 | 免费在线观看黄视频 | 亚洲a视频|