找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4170|回复: 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 共享资料的积分奖励!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2015-6-4 20:40 | 显示全部楼层
分享万岁,这个应该是串口显示的吧!!
回复

使用道具 举报

ID:110866 发表于 2016-4-16 11:05 | 显示全部楼层
看了,不错,真好
回复

使用道具 举报

ID:63317 发表于 2016-11-19 18:11 | 显示全部楼层
谢谢分享资料
回复

使用道具 举报

ID:105355 发表于 2017-4-12 18:06 | 显示全部楼层
谢谢分享,串口输出一切正常
回复

使用道具 举报

ID:189699 发表于 2017-4-16 14:01 | 显示全部楼层
这个怎么和别的不一样啊?这里边U8、U6的是什么啊
回复

使用道具 举报

ID:229113 发表于 2017-8-24 13:46 | 显示全部楼层
没有显示啊
回复

使用道具 举报

ID:130345 发表于 2017-9-2 22:15 | 显示全部楼层
一方大佬 发表于 2017-4-16 14:01
这个怎么和别的不一样啊?这里边U8、U6的是什么啊

是位数长度
回复

使用道具 举报

ID:130345 发表于 2017-9-2 22:16 | 显示全部楼层
串口显示
回复

使用道具 举报

ID:137005 发表于 2018-11-22 12:25 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

ID:116029 发表于 2018-12-4 20:37 | 显示全部楼层
刚好需要,感谢感谢
回复

使用道具 举报

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:嶑这个是在文本模式下显示的。在串口助手上面调试结果是这样子的。求帮助
回复

使用道具 举报

ID:411171 发表于 2018-12-10 15:05 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:137005 发表于 2018-12-18 16:25 | 显示全部楼层
void Delay(int j)
{      
        U8 i;
        for(;j>0;j--)
        {         
                for(i=0;i<27;i++);
        }
}
这个延时是多少呢?
回复

使用道具 举报

ID:137005 发表于 2018-12-18 17:14 | 显示全部楼层
查看了一下,应该是100us.对吧?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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