<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        51單片機驅動數字溫濕度DHT11 lcd1602顯示

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年04月10日   【字體:

        //   濕度20-90   溫度0-50  采樣間隔1S
        #include <reg52.h>
        #include <intrins.h>
        #include "LCD1602display.h"
        sbit DQ=P2^3;    //DTH11
        uchar code ASCII[]="0123456789%c";
        uchar code table0[]="    Hum:00";
        uchar code table1[]="    Tem:00";
        uchar tem;
        uchar hum;
          
        display0[2]={0,0};
        display1[2]={0,0};
              
        //**************************延時函數
        void delay_ms(uint z)
        {
         uint x,y;
         for(x=z;x>0;x--)
          for(y=114;y>0;y--);
        }
        //**************************初始化DTH11
        bit Init_DTH11()
        {
         bit flag;
         uchar num;
         DQ=0;
         delay_ms(19);   // >18ms
         DQ=1;
         for(num=0;num<10;num++);   // 20-40us    34.7us
         for(num=0;num<12;num++);
         flag=DQ;
         for(num=0;num<11;num++); //DTH響應80us
         for(num=0;num<24;num++);    //DTH拉高80us
         return flag;
        }
        //****************************讀DTH11數據
        uchar DTH11_RD_CHAR()
        {
         uchar byte=0;
         uchar num;
         uchar num1;
         while(DQ==1);
         for(num1=0;num1<8;num1++)
         {
          while(DQ==0);
          byte<<=1;     //高位在前
          for(num=0;DQ==1;num++);
          if(num<10)
           byte|=0x00;
          else
           byte|=0x01;
         }
         return byte;
        }
        //******************************讀取DTH11溫度和濕度
        void  DTH11_DUSHU()
        {
         uchar num;
         if(Init_DTH11()==0)
         {
          hum=DTH11_RD_CHAR();   //比正常值高7度左右
          DTH11_RD_CHAR();
          tem=DTH11_RD_CHAR();
          DTH11_RD_CHAR();
          DTH11_RD_CHAR();
          for(num=0;num<17;num++);  //最后BIT輸出后拉低總線50us
          DQ=1;
         }
        }
        //***********************************顯示函數
        void Display_DTH11() 
        {
         display0[1]=hum/10%10;
         display0[0]=hum%10;
         
         DisplayListChar(0,  0, table0);
         DisplayOneChar (8,  0, ASCII[ display0[1] ] );
         DisplayOneChar (9,  0, ASCII[ display0[0] ] );
         DisplayOneChar (10, 0, ASCII[10] );     //顯示濕度
         display1[1]=tem/10%10;
         display1[0]=tem%10;
         DisplayListChar(0,  1, table1);
         DisplayOneChar (8,  1, ASCII[ display1[1] ] );
         DisplayOneChar (9,  1, ASCII[ display1[0] ] );
         DisplayOneChar (10, 1, 0xdf );
         DisplayOneChar (11, 1, ASCII[11] );     //顯示溫度
        }
        //*******************************主函數
        main()
        {
         tem=0;
         hum=0;
         delay_ms(1000);    //DTH11開始1s有錯誤輸出
         InitLCM();
         while(1)
         {
          DTH11_DUSHU();
          Display_DTH11();
          delay_ms(2000);
         }
        }

        用到的LCD1602display.h頭文件這里有:http://www.thefapper.com/mcu/3292.html

        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮