OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3882|回复: 4

如何读DHT11的整数和小数部分,并在LCD上显示,最好是能通过修改战舰板原有的例程做到.本想像下面这样改,但是不行。

[复制链接]

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2016-4-6
在线时间
15 小时
发表于 2016-4-18 10:21:35 | 显示全部楼层 |阅读模式
4金钱
//从DHT11读取一次数据
//temp:温度值(范围:0~50°)
//humi:湿度值(范围:20%~90%)
//返回值:0,正常;1,读取失败
u8 DHT11_Read_Data(u8 *temp0,u8 *temp1,u8 *humi0,u8 *humi1)   
{        
  u8 buf[5];
u8 i;
DHT11_Rst();
if(DHT11_Check()==0)
{
  for(i=0;i<5;i++)//读取40位数据
  {
   buf[i]=DHT11_Read_Byte();
  }
  if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
  {
   *humi0=buf[0];//整数
   *humi1=buf[1];//小数
   *temp0=buf[2];//整数
   *temp1=buf[3];//小数
  }
}
else return 1;
return 0;     
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-4-23 19:42:42 | 显示全部楼层
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-7-2
在线时间
7 小时
发表于 2019-12-2 14:29:40 | 显示全部楼层
我是如下修改的,是可以正常显示小数部分的,我的板子是探索者,原理都一样
DHT11.c修改
u8 DHT11_Read_Data(u8 *temp0,u8 *humi0,u8 *temp1,u8 *humi1)  
{        
        u8 buf[5];
        u8 i;
        DHT11_Rst();
        if(DHT11_Check()==0)
        {
                for(i=0;i<5;i++)//读取40位数据
                {
                        buf[i]=DHT11_Read_Byte();
                }
                if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
                {
                        *humi0=buf[0];
                        *temp0=buf[2];
                        *humi1=buf[1];
                        *temp1=buf[3];
                }
        }else return 1;
        return 0;            
}
主程序修改
LCD_ShowString(30,130,200,16,16,"DHT11 OK");
        POINT_COLOR=BLUE;//设置为蓝色字体
        LCD_ShowString(30,150,200,16,16,"Current Temp:  .  C");         
        LCD_ShowString(30,170,200,16,16,"Current Humi:  .  %");
        while(1)
        {                        
                if(t%10==0)//每100ms读取一次
                {                                                                          
                        DHT11_Read_Data(&temperature0,&humidity0,&temperature1,&humidity1);                //读取温湿度值                                    
                        LCD_ShowNum(30+40+64,150,temperature0,2,16);                //温度整数                  
                        LCD_ShowNum(30+40+64,170,humidity0,2,16);                        //湿度整数
      LCD_ShowNum(30+40+64+24,150,temperature1,2,16);                //温度小数                     
                        LCD_ShowNum(30+40+64+24,170,humidity1,2,16);                        //湿度小数                       
                }                                  
回复

使用道具 举报

1

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2019-3-21
在线时间
103 小时
发表于 2019-12-2 14:31:16 | 显示全部楼层
DHT11好像小数部分都是0吧
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-12-2 17:12:56 | 显示全部楼层
我记得这个温湿度传感器读出来没有小数
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 04:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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