先写C语言的部分
/*******************************************************************************
版 本:
生成日期:2016-8-23 17:15:18
作 者:WHG
模块目的:
功 能:
主要函数:毫秒级延时 微秒级延时 读取一字节函数 读取温湿度值
功 能:读取温湿度值
修改记录:
*******************************************************************************/
#include
/* 温度 湿度 */
unsigned char temp=0,humi=0;
/* 毫秒级延时函数 */
void Delay_1ms(unsigned int ms)
{
unsigned int x,y;
for(x=ms;x>0;x--)
{
for(y=9215;y>0;y--);
}
}
/* 微秒级延时函数 */
void DHT11_Delay_us(unsigned char i)
{
for(i;i>0;i--);
}
/* 获得一字节的数据 */
unsigned char GetDate(void)
{
unsigned char i,value=0;
unsigned char flag,count;
for(i=0;i<8;i++)
{
count=2;
while(dht11==0&&count++); //dht数据低电平结束
DHT11_Delay_us(26);//延时 后检测高电平
flag=0;
if(dht11==1) flag=1;
count=2;
while(dht11==1&&count++); //dht数据高电平结束
value=(value<<1)+flag;
}
return value;
}
/* DHT11读取温湿度函数 */
unsigned char DHT11_Init(void)
{
unsigned char count,i;
unsigned char dht11_value[5]={0};
dht11=0; /* 拉低数据线大于18ms发送开始信号 */
Delay_1ms(8); /* 需大于18毫秒 */
dht11=1; /* 释放数据线,用于检测低电平的应答信号 */
DHT11_Delay_us(12);
//检测DHT响应信号
if(dht11==0);
{
//dht信号低电平结束
count=2;
while(dht11==0&&count++);
//dht信号高电平结束
count=2;
while(dht11==1&&count++);
for(i=0;i<5;i++)
{
dht11_value[i]=GetDate();
}
}
//数据检验
if(dht11_value[0]+dht11_value[1]+dht11_value[2]+dht11_value[3]==dht11_value[4])
{
temp=dht11_value[2];
humi=dht11_value[0];
return 0;
}
else
{
temp=0;
humi=0;
return 1;
}
}
2016-8-23 18:03:52
再写头文件的部分
/*******************************************************************************
版 本:
生成时间:2016-8-23 17:14:54
文 件 名:dht11.h
功 能:读取温湿度值
模 块:DHT11
作 者:WHG
IO 口:P2.0
芯片版本:STC12C5A60S2
与其他文件的关系:
函 数 功 能 说明:
修改记录:
*******************************************************************************/
#ifndef __DHT11_H__
#define __DHT11_H__
/* 引用头文件 */
#include
//单片机
/* DHT11数据引脚 */
***it dht11 = P2^0;
/* DHT11读出来的值 温度 湿度*/
extern unsigned char temp,humi;
/* DHT11读取温湿度函数 */
unsigned char DHT11_Init(void);
#endif
再写头文件的部分
/*******************************************************************************
版 本:
生成时间:2016-8-23 17:14:54
文 件 名:dht11.h
功 能:读取温湿度值
模 块:DHT11
作 者:WHG
IO 口:P2.0
芯片版本:STC12C5A60S2
与其他文件的关系:
函 数 功 能 说明:
修改记录:
*******************************************************************************/
#ifndef __DHT11_H__
#define __DHT11_H__
/* 引用头文件 */
#include //单片机
/* DHT11数据引脚 */
***it dht11 = P2^0;
/* DHT11读出来的值 温度 湿度*/
extern unsigned char temp,humi;
/* DHT11读取温湿度函数 */
unsigned char DHT11_Init(void);
#endif
举报