找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2925|回复: 3
打印 上一主题 下一主题
收起左侧

C51_DHT22_LCD1602顯示

[复制链接]
跳转到指定楼层
楼主
由於DHT11沒有顯示到小數

所以用了DHT22

在站內找了很多範例碼源

或許是本人的問題

測試後總無法正確的顯示

(感覺是Delay time有問題)

所以自己又花了些時間用DHT11可用的碼源修改碼源與調試DHT22成功

DHT11
        R_H=DHT11_rec_byte();    //接收濕度高八位  DHT11/DHT22
        R_L=DHT11_rec_byte();    //接收濕度低八位  DHT22
        T_H=DHT11_rec_byte();    //接收溫度高八位  DHT11/DHT22
        T_L=DHT11_rec_byte();    //接收溫度低八位  DHT22


DHT22主要是有小數點,所以低8位要使用。
       //R_Dis=R_H;  //DHT11
         R_Dis=(R_H*256)+R_L;//DHT22
       //T_Dis=T_H ;        //DHT11         
         T_Dis=((T_H & 0x7F)*256)+T_L;        //DHT22

在此分享

說明:
LCD1602接在Port 0
RS = P1^4;   
RW = P1^5;
EN = P1^6;


DHT22 One wire  : P3^6;

//-------main.c--------------
#include "common.h"
#include "Lcd.h"
#include "dht.h"

#define uint8 unsigned char
#define uint unsigned int
uchar abc[15];   //接收數據
//uint code temp[8]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}; //度C字型
//uchar Temp[1]={38};

/*顯示採集到的數據*/
void main()
{
  uint i,j;
  LCD_Init();
  LCD_Clear();//清屏
  Delay_1ms(1500);

  while(1)
  {                  
    DHT_start();
    DHT_receive();   
                    
    if (j==0){       
       

     abc[0]='T';
     abc[1]='e';
     abc[2]='m';
     abc[3]='p';;
     abc[4]=':';
     abc[5]='0'+T_Dis/100;;          
     abc[6]='0'+T_Dis%100/10;   
     abc[7]='.';
     abc[8]='0'+T_Dis%10;
     abc[9]=0xdf; //度
     abc[10]='C';
     abc[11]=' ';
     abc[12]=' ';
     abc[13]=' ';
     abc[14]=' ';
         }

    if (j==1){

     abc[0]='H';
     abc[1]='u';                          
     abc[2]='m';
     abc[3]='i';
     abc[4]=':';
     abc[5]='0'+R_Dis/100;;
     abc[6]='0'+R_Dis%100/10;
     abc[7]='.';          
     abc[8]='0'+R_Dis%10;
     abc[9]='%';
     abc[10]=' ';
     abc[11]=' ';
     abc[12]=' ';
     abc[13]=' ';
     abc[14]=' ';       
         }          
   for(i=0;i<15;i++)
   {
         LCD_Write_Char(i,j,abc[i]);
   }
   //為了顯示度C
  // Write1602_Str(0x40,8,temp);  //攝氏度C->CGRAM的內存000中
   //Write1602_Com(0x89); //LCD數字顯示位置                                                         
   //Write1602_Dat(0);
   //Delay_1ms(50);

   j = !j;                                             
}
}






DHT_LCD.rar

32.9 KB, 下载次数: 128, 下载积分: 黑币 -5

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:727381 发表于 2020-5-17 10:59 | 只看该作者
没有仿真的图呀
回复

使用道具 举报

板凳
ID:340398 发表于 2021-12-14 18:21 | 只看该作者
膜拜,我的DHT22终于可用了

4M}KM6][RV[U6_%MCTL[CKC.jpg (290.35 KB, 下载次数: 35)

4M}KM6][RV[U6_%MCTL[CKC.jpg
回复

使用道具 举报

地板
ID:1008781 发表于 2022-3-22 20:36 | 只看该作者
你好,我也是用你的代码 但是为什么1602没有显示
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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