⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dth add lcd.c

📁 基于DTH11+LCD温湿度采集
💻 C
字号:
//DHT11.c文件
#include<reg52.h>
#include<Time_Delay.h>
 //the main only needs to call get DHT11(),then the temperature and huminity was got in F16T,F16RH as float
sbit bit11=P2^0;
unsigned char  

U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
float F16T,F16RH;       //用于最终读取的温湿度数据	
// read 8 bits onice
 char  COM(void)
      {
     
	        char i,U8temp,U8comdata;
       for(i=0;i<8;i++)	   
	    {
		
	   	
	
	   	while(!bit11);	//表示读取的高电位延时大于20多us 则读取的是1 否则读取的是0
			Delay_us(35);			//通过U8FLAG 可	bit11 显示数据的脉长
			U8temp=0;
	 
	     if(bit11)U8temp=1;
		   
		 while(bit11);	   	 
		   U8comdata<<=1;
	   	   U8comdata|=U8temp;        //0
	     }//rof
	   	return 	U8comdata;
	}

	//--------------------------------
	//-----温湿度读取子程序 ----------
	//--------------------------------
	//----以下变量均为全局变量--------
	//----温度高8位== U8T_data_H------
	//----温度低8位== U8T_data_L------
	//----湿度高8位== U8RH_data_H-----
	//----湿度低8位== U8RH_data_L-----
	//----校验 8位 == U8checkdata-----
	//----调用相关子程序如下----------
	//---- Delay();, Delay_10us();,COM(); 
	//--------------------------------

	void getDHT11(void)
	{
	  //主机拉低18ms 
     GO1:    bit11=0;
	   Delay_ms(20);
	   bit11=1;
	 //总线由上拉电阻拉高 主机延时20us
	   Delay_us(60);
	   
	 //主机设为输入 判断从机响应信号 
	 //  bit11=1;
	 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行	

  
	   if(!bit11)		 //T !	  
	   {
	  
	   while(!bit11);		//wait DHT goto high
	   
	   while(bit11);
	 //数据接收状态		 
	   
	   U8RH_data_H=COM();
	   
	   U8RH_data_L=COM();
	  
	   U8T_data_H=COM();
	   
	   U8T_data_L=COM();
	  
	   U8checkdata=COM();
	   bit11=1;
	 //数据校验 
	 
	   
	   if((U8T_data_H+U8T_data_L+U8RH_data_H+U8RH_data_L)!

=U8checkdata)	 //if check wrong,read again
	   goto  GO1;
	   }//fi
	   F16T=U8T_data_H+(float)U8T_data_L/256;		

//change integer to float
	   F16RH=U8RH_data_H+(float)U8RH_data_L/256;
	}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -