标题: C51_DHT22_LCD1602顯示 [打印本页]

作者: jemery1030    时间: 2019-9-20 11:11
标题: 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, 下载次数: 133, 下载积分: 黑币 -5


作者: iQQi    时间: 2020-5-17 10:59
没有仿真的图呀
作者: 了凡命馆    时间: 2021-12-14 18:21
膜拜,我的DHT22终于可用了

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

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

作者: dasha    时间: 2022-3-22 20:36
你好,我也是用你的代码 但是为什么1602没有显示




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1