STM8S [url=home.php?mod=space&uid=72445]@[/url] 16M 定时器定时5ms中断一次
#define _G_DHT11
#include "dht11.h"
unsigned char uc_DHT11Value[SIZE];
//全局变量 得到的温湿度值
unsigned int ui_TempValue = 0;
unsigned int ui_HumiValue = 0;
extern unsigned char uc_20mstimeflag;
/************************************************************* 函数名称:
函数功能:
入口参数:
入口参数的类型和含义:
出口参数:
备 注:
*************************************************************/ unsigned char s_ComDHT11(void)
{
unsigned char i,temp,comdata;
for(i = 8;i>0;i--)
{
while(!DHT11_DATA_VALUE);
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
temp = 0;
if(DHT11_DATA_VALUE)
{
temp =1;
}
comdata = comdata << 1;
comdata = comdata|temp;
while(DHT11_DATA_VALUE);
}
return comdata;
}
函数名称:
函数功能:
入口参数:
入口参数的类型和含义:
出口参数:
备 注:
*************************************************************/ void g_ReadTempAndHumi(void)
{
DHT11_DATA_OUT;
DHT11_DATA_LOW;
//layTime(40);// 至少18MS的延时,在中断计时里实现
uc_20mstimeflag = 1;
while(uc_20mstimeflag);
DHT11_DATA_HIGH;
DHT11_DATA_IN;
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
while(!DHT11_DATA_VALUE); //80us的应答信号 DHT11 TO MCU while(DHT11_DATA_VALUE); //80us的通知信号 DHT11 TO MCU uc_DHT11Value[0] = s_ComDHT11();
uc_DHT11Value[1] = s_ComDHT11();
uc_DHT11Value[2] = s_ComDHT11();
uc_DHT11Value[3] = s_ComDHT11();
uc_DHT11Value[4] = s_ComDHT11();
if((uc_DHT11Value[0] + uc_DHT11Value[1] + uc_DHT11Value[2] + uc_DHT11Value[3]) == uc_DHT11Value[4])
{
ui_HumiValue = uc_DHT11Value[0];
ui_TempValue = uc_DHT11Value[2];
}
}
函数名称:
函数功能:
入口参数:
入口参数的类型和含义:
出口参数:
备 注:
*************************************************************/ void DHT11_Delay_10us(void)
{
for(unsigned char uc_10us = 0;uc_10us < 34;uc_10us ++); }
头文件部分
#ifndef __DHT11_H
#define __DHT11_H
#include "iostm8s105c6.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _G_DHT11
#define DHT11_extern extern
#else
#define DHT11_extern
#endif
/**************宏定义****************/
//#define DATA_DR PA_ODR_ODR6 //OUTPUT
//#define DATA_SR PA_IDR_IDR6 //IN STATE
#define DHT11_DATA_OUT PE_DDR_DDR3 = 1 //输出
|