找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 4933|回复: 14
打印 上一主题 下一主题
收起左侧

最近弄了DHT11,做好了,分享下

  [复制链接]
跳转到指定楼层
楼主
ID:81678 发表于 2015-6-4 19:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>

typedef unsigned char  U8;
typedef unsigned int   U16;   

sbit  DataPort= P2^0 ;
U8    U8FLAG;
U8    U8temp;
U16         U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U16   U8comdata;  
U8  count;

void Delay(int j)
{      
        U8 i;
        for(;j>0;j--)
        {        
                for(i=0;i<27;i++);
        }
}
       

void  Delay_10us(void)
{
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
}
       

                         
void  dht11_init(void)
{
        U8 i;
        for(i=0;i<8;i++)          
        {
                U8FLAG=2;       
          while((!DataPort)&&U8FLAG++);
                Delay_10us();
                Delay_10us();
                Delay_10us();
          U8temp=0;
          if(DataPort)
                U8temp=1;
                U8FLAG=2;
                while((DataPort)&&U8FLAG++);                  
          if(U8FLAG==1)break;
           U8comdata<<=1;
          U8comdata|=U8temp;        
         }
          
        }

        void RH(void)
        {
          //Ö÷»úà-μí18ms
       DataPort=0;
           Delay(180);
           DataPort=1;
           Delay_10us();
           Delay_10us();
           Delay_10us();
           Delay_10us();

           DataPort=1;          
           if(!DataPort)                 //T !          
           {
           U8FLAG=2;
           while((!DataPort)&&U8FLAG++);
           U8FLAG=2;

           while((DataPort)&&U8FLAG++);         
           dht11_init();
           U8RH_data_H=U8comdata;
           dht11_init();
           U8RH_data_L=U8comdata;
           dht11_init();
           U8T_data_H=U8comdata;
           dht11_init();
           U8T_data_L=U8comdata;
           dht11_init();
           U8checkdata=U8comdata;
           DataPort=1;
           }

        }
void uart_init()
{
        TMOD = 0x20;
        TH1 = 0xfd;   
        TL1 = 0xfd;
        TR1 = 1;  
        SCON = 0x50;
        ES = 1;
        EA = 1;  
        TI = 0;
        RI = 0;
}


void main()
{
        uart_init();
        Delay(1);
        while(1)
        {  
          RH();
                U8RH_data_L=U8RH_data_L>>8;
                TI=1;
                ES=0;
                printf("目前温度是:");
                printf("%d",U8T_data_H);
                printf("摄氏度");
                printf(" \r\n");
                printf(“目前的湿度是");
                printf("%d",U8RH_data_L);
                printf("%%");
                printf("\r\n");
          Delay(20000);
        }
       
}

好东西就要分享

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

举报

沙发
ID:1 发表于 2015-6-4 20:40 | 只看该作者
分享万岁,这个应该是串口显示的吧!!
回复

举报

板凳
ID:110866 发表于 2016-4-16 11:05 | 只看该作者
看了,不错,真好
回复

举报

地板
ID:63317 发表于 2016-11-19 18:11 | 只看该作者
谢谢分享资料
回复

举报

5#
ID:105355 发表于 2017-4-12 18:06 | 只看该作者
谢谢分享,串口输出一切正常
回复

举报

6#
ID:189699 发表于 2017-4-16 14:01 | 只看该作者
这个怎么和别的不一样啊?这里边U8、U6的是什么啊
回复

举报

7#
ID:229113 发表于 2017-8-24 13:46 | 只看该作者
没有显示啊
回复

举报

8#
ID:130345 发表于 2017-9-2 22:15 | 只看该作者
一方大佬 发表于 2017-4-16 14:01
这个怎么和别的不一样啊?这里边U8、U6的是什么啊

是位数长度
回复

举报

9#
ID:130345 发表于 2017-9-2 22:16 | 只看该作者
串口显示
回复

举报

10#
ID:137005 发表于 2018-11-22 12:25 | 只看该作者
谢谢分享!
回复

举报

11#
ID:116029 发表于 2018-12-4 20:37 | 只看该作者
刚好需要,感谢感谢
回复

举报

12#
ID:359667 发表于 2018-12-5 14:44 | 只看该作者
E4 1B D0 2E DE AE E3 98 CB 99 BA EA 66 23 90 A3 A8 E0 1B D0 99 65 23 E2 6C EB 9C A3 2A 8D E1 这个是在hex模式下显示的。??蕻銟訍宏f#悾ㄠ袡e#鈒霚R*嶀??蕻鐪藱宏f#悾ㄠ袡e#阬霕V6咇??蕻銟脨衡n#悾犱袡e#鈒霚R:嶑这个是在文本模式下显示的。在串口助手上面调试结果是这样子的。求帮助
回复

举报

13#
ID:411171 发表于 2018-12-10 15:05 | 只看该作者
谢谢分享
回复

举报

14#
ID:137005 发表于 2018-12-18 16:25 | 只看该作者
void Delay(int j)
{      
        U8 i;
        for(;j>0;j--)
        {         
                for(i=0;i<27;i++);
        }
}
这个延时是多少呢?
回复

举报

15#
ID:137005 发表于 2018-12-18 17:14 | 只看该作者
查看了一下,应该是100us.对吧?
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表