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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

DHT11溫濕度傳感器程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:403053 發表于 2018-9-27 11:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于51單片機的DHT11溫濕度傳感器
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit dht=P1^1;
  6. sbit dula=P2^6;
  7. sbit wela=P2^7;
  8. uchars8h,s8h_temp,s8l,s8l_temp,w8h,w8h_temp,w8l,w8l_temp,check8,check8_temp,flag=0;
  9. float sd,wd;
  10. uchar code table[]={
  11. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  12. 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
  13. void delayms(uint z)
  14. {
  15.        uintx,y;
  16.        for(x=z;x>0;x--)
  17.               for(y=110;y>0;y--);
  18. }
  19. void Delay_10us()        //進入函數3us
  20. {
  21.    uchar i;    //每條語句1us
  22.    i--;
  23.    i--;
  24.    i--;
  25.    i--;
  26.    i--;
  27.    i--;
  28. }
  29. void display(uchar th,uchar tl)
  30. {
  31.        ucharih=0,il=0,jh=0,jl=0,kh=0,kl=0;
  32.        ih=th/100;
  33.        jh=th%100/10;                                          
  34.        kh=th%10;
  35.        il=tl/100;
  36.        jl=tl%100/10;                                    
  37.        kl=tl%10;
  38.       
  39.        P0=0xfe;
  40.        wela=1;
  41.        wela=0;
  42.        P0=table[ih];
  43.        dula=1;
  44.        dula=0;   
  45.        delayms(1);
  46.       
  47.        P0=0xfd;
  48.        wela=1;
  49.        wela=0;
  50.        P0=table[jh];
  51.        dula=1;
  52.        dula=0;
  53.        delayms(1);
  54.       
  55.        P0=0xfb;
  56.        wela=1;
  57.        wela=0;
  58.        P0=table[kh+10];
  59.        dula=1;   
  60.        dula=0;   
  61.        delayms(1);
  62.        P0=0xf7;
  63.        wela=1;
  64.        wela=0;
  65.        P0=table[il];
  66.        dula=1;
  67.        dula=0;   
  68.        delayms(1);
  69.       
  70.        P0=0xef;
  71.        wela=1;
  72.        wela=0;
  73.        P0=table[jl];
  74.        dula=1;
  75.        dula=0;
  76.        delayms(1);
  77.       
  78.        P0=0xdf;
  79.        wela=1;
  80.        wela=0;
  81.        P0=table[kl];
  82.        dula=1;   
  83.        dula=0;   
  84.        delayms(1);
  85. }         
  86. char com()
  87. {
  88.        uchari,j,temp,cdata=0;
  89.        for(i=0;i<8;i++)
  90.        {
  91.               flag=2;
  92.               while((!dht)&&(flag++));//等待拉高
  93. //            Delay_10us();
  94. //            Delay_10us();
  95. //            Delay_10us();
  96.               j=3;while(j--); //延時30us            
  97.               temp=0;
  98.               if(dht==1)temp=1;
  99.               flag=2;
  100.               while(dht&&(flag++));//等待拉低
  101. //            if(flag==1)break;
  102.               cdata<<=1;
  103.               cdata=cdata|temp;
  104.        }
  105.        returncdata;                              
  106. }
  107. void getdth()
  108. {
  109.        uchari;
  110.        dht=0;
  111.        delayms(18);    //18ms
  112.        dht=1;
  113. //     Delay_10us();
  114. //     Delay_10us();
  115. //     Delay_10us();
  116. //     Delay_10us();
  117.        i=4;while(i--);  //延時40us
  118.        dht=1;
  119.        if(dht!=1)         //dth11響應
  120.        {
  121.               flag=2;while((!dht)&&(flag++));//等待拉高
  122.               flag=2;while(dht&&(flag++));//等待讀入數據
  123.               s8h_temp=com();
  124.               s8l_temp=com();
  125.               w8h_temp=com();
  126.               w8l_temp=com();
  127.               check8_temp=com();
  128.               dht=1;
  129.               if((s8h_temp+s8l_temp+w8h_temp+w8l_temp)==check8_temp)//校驗
  130.               {
  131.                     s8h=s8h_temp;
  132.                      s8l=s8l_temp;
  133.                      w8h=w8h_temp;
  134.                      w8l=w8l_temp;
  135.                      check8=check8_temp;           
  136.               }
  137.        }
  138.        sd=s8h+(float)s8l/256;
  139.        wd=w8h+(float)w8l/256;
  140. }
  141. void main()
  142. {
  143.        while(1)
  144.        {
  145.               getdth();
  146.               display(s8h,w8h);   
  147.        }
  148. }
復制代碼

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

使用道具 舉報

沙發
ID:1 發表于 2018-9-27 18:02 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:305990 發表于 2018-9-27 21:59 | 只看該作者
31個錯誤
回復

使用道具 舉報

地板
ID:445547 發表于 2018-12-13 12:39 | 只看該作者
有錯誤不對啊  應該修改一下頭文件
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜久久久久 | 狠狠操在线 | 欧美做暖暖视频 | 黑色丝袜三级在线播放 | 国产一区| 91视频网址 | 九九亚洲| 国产亚洲精品久久久久动 | 成人国产精品免费观看 | 福利视频日韩 | 国产亚洲精品一区二区三区 | 91玖玖| 欧美高清性xxxxhd | 日韩www| 欧美中文一区 | 日韩精品视频在线观看一区二区三区 | 欧美在线视频网站 | 国产精品久久久亚洲 | 亚洲国产欧美日韩 | 亚洲精品成人av | 久久综合成人精品亚洲另类欧美 | av福利网| 天天操操 | 久久av一区| 日韩综合一区 | 在线亚洲人成电影网站色www | 日日操夜夜操视频 | 在线免费观看欧美 | 日韩在线播放中文字幕 | 97精品超碰一区二区三区 | 超碰成人免费观看 | 免费精品视频一区 | 中文字幕一区二区三区精彩视频 | 国产亚洲精品精品国产亚洲综合 | 免费精品视频在线观看 | 91极品视频 | 久久综合激情 | 夜夜爽99久久国产综合精品女不卡 | 日本高清aⅴ毛片免费 | 亚洲 成人 av| 亚洲精品短视频 |