📄 dth add 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 + -