DHT11数字温湿度传感器附1602显示程序已验证ok.docx

上传人:b****2 文档编号:1605161 上传时间:2022-10-23 格式:DOCX 页数:8 大小:88.19KB
下载 相关 举报
DHT11数字温湿度传感器附1602显示程序已验证ok.docx_第1页
第1页 / 共8页
DHT11数字温湿度传感器附1602显示程序已验证ok.docx_第2页
第2页 / 共8页
DHT11数字温湿度传感器附1602显示程序已验证ok.docx_第3页
第3页 / 共8页
DHT11数字温湿度传感器附1602显示程序已验证ok.docx_第4页
第4页 / 共8页
DHT11数字温湿度传感器附1602显示程序已验证ok.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

DHT11数字温湿度传感器附1602显示程序已验证ok.docx

《DHT11数字温湿度传感器附1602显示程序已验证ok.docx》由会员分享,可在线阅读,更多相关《DHT11数字温湿度传感器附1602显示程序已验证ok.docx(8页珍藏版)》请在冰豆网上搜索。

DHT11数字温湿度传感器附1602显示程序已验证ok.docx

DHT11数字温湿度传感器附1602显示程序已验证ok

DHT11数字温湿度传感器(附1602显示程序)已验证ok

D

7、DHT11引脚说明

8、DHT11温湿度1602液晶显示程序示例

主程序:

#include

#include

#include

#include

#include

typedefunsignedcharU8;          

typedefunsignedint  U16;  

U8U8FLAG;

U8U8count,U8temp;

U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;

U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

U8U8comdata;

sbitP2_0=P2^0;

sbitP2_1=P2^1;

sbitP2_2=P2^2;

sbitP2_3=P2^3;

unsignedcharstr1[]="ShiDu:

";

unsignedcharstr2[]="WenDu:

";

voidDelay(U16j)

   {     U8i;

    for(;j>0;j--)

  {

  for(i=0;i<27;i++);

  }

   }

voidDelay_10us(void)

     {

       U8i;

       i--;

       i--;

       i--;

       i--;

       i--;

       i--;

      }

       voidCOM(void)

     {   

        U8i;

      for(i=0;i<8;i++)   

    {

       U8FLAG=2;

   //----------------------

         P2_1=0;//T

         P2_1=1;//T

    //----------------------

   while((!

P2_0)&&U8FLAG++);

   Delay_10us();

   Delay_10us();

  //Delay_10us();

    U8temp=0;

     if(P2_0)U8temp=1;

     U8FLAG=2;

  while((P2_0)&&U8FLAG++);

  

    //----------------------

          P2_1=0;//T

          P2_1=1;//T

   //----------------------

   //超时则跳出for循环   

   if(U8FLAG==1)break;

   //判断数据位是0还是1

  //如果高电平高过预定0高电平值则数据位为1   

    U8comdata<<=1;

      U8comdata|=U8temp;       //0

     }//rof

   

}

//--------------------------------

//-----湿度读取子程序------------

//--------------------------------

//----以下变量均为全局变量--------

//----温度高8位==U8T_data_H------

//----温度低8位==U8T_data_L------

//----湿度高8位==U8RH_data_H-----

//----湿度低8位==U8RH_data_L-----

//----校验8位==U8checkdata-----

//----调用相关子程序如下----------

//----Delay();,Delay_10us();,COM();

//--------------------------------

voidRH(void)

{

  //主机拉低18ms

      P2_0=0;

   Delay(180);

   P2_0=1;

//总线由上拉电阻拉高主机延时20us

   Delay_10us();

   Delay_10us();

   Delay_10us();

   Delay_10us();

//主机设为输入判断从机响应信号

   P2_0=1;

//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行  

   if(!

P2_0)  //T!

  

   {

   U8FLAG=2;

//判断从机是否发出80us的低电平响应信号是否结束

   while((!

P2_0)&&U8FLAG++);

   U8FLAG=2;

//判断从机是否发出80us的高电平,如发出则进入数据接收状态

   while((P2_0)&&U8FLAG++);

//数据接收状态  

   COM();

   U8RH_data_H_temp=U8comdata;

   COM();

   U8RH_data_L_temp=U8comdata;

   COM();

   U8T_data_H_temp=U8comdata;

   COM();

   U8T_data_L_temp=U8comdata;

   COM();

   U8checkdata_temp=U8comdata;

   P2_0=1;

//数据校验

   U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

   if(U8temp==U8checkdata_temp)

   {

     U8RH_data_H=U8RH_data_H_temp;

     U8RH_data_L=U8RH_data_L_temp;

   U8T_data_H=U8T_data_H_temp;

     U8T_data_L=U8T_data_L_temp;

     U8checkdata=U8checkdata_temp;

   }//fi

   }//fi

}

voidmain()

{

U8shidu_shi,shidu_ge,wendu_shi,wendu_ge;

  LCD_init();

  delay_nms

(2);

  LCD_write_string(0,LINE1,str1);

  LCD_write_string(0,LINE2,str2);       

while

(1)

{

      RH();

   shidu_shi=0x30+U8RH_data_H/10;

         shidu_ge=0x30+U8RH_data_H%10;

        //shidu_xs=0x30+U8RH_data_L/10;

        wendu_shi=0x30+U8T_data_H/10;

        wendu_ge=0x30+U8T_data_H%10;

        //wendu_xs=0x30+U8T_data_L/10;

     LCD_write_char(6,0,shidu_shi);

        LCD_write_char(7,0,shidu_ge);

  //LCD_write_char(9,0,shidu_xs);

        LCD_write_char(6,1,wendu_shi);

  LCD_write_char(7,1,wendu_ge);

       //LCD_write_char(9,1,wendu_xs);

}

}

H文件

ifndeflcd_H

#definelcd_H

#include

#include

/************************************/

//commonpart

#define  HIGH     1

#define  LOW      0

#define  TRUE     1

#define  FALSE     0

#define  ZERO     0

#define  MSB      0x80

#define  LSB      0x01

/************************************/

//lcdpart

#defineLINE1       0

#defineLINE2       1

#defineLINE1_HEAD      0x80

#defineLINE2_HEAD      0xC0

#defineDATA_MODE      0x38

#defineOPEN_SCREEN      0x0C

#defineDISPLAY_ADDRESS    0x80

#defineCLEARSCREEN      LCD_en_com(0x01)

/*************************************/

//changethispartatdifferentboard

#defineLCDIO    P1

sbitLCD1602_RS=P2^4;  

sbitLCD1602_RW=P2^5;

sbitLCD1602_EN=P2^6;

/********************************************************************/

voidLCD_Read_BF(void)

{

unsignedcharread=0;

LCD1602_RS=LOW;  //RS0

LCD1602_RW=HIGH;  //RW1

LCD1602_EN=HIGH;  //EN1ReadBF

LCDIO=0xFF;

do{

  read=LCDIO;

}while(read&MSB);

}

voidLCD_en_com(unsignedcharcommand)   //写指令

{

LCD_Read_BF();

LCD1602_RS=LOW;  //RS0

LCD1602_RW=LOW;  //RW0

LCD1602_EN=HIGH;//EN--\|/__Writecommand

LCDIO=command;

LCD1602_EN=LOW;

}

voidLCD_en_dat(unsignedcha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1