DHT11温湿度传感器C语言读取例程

DHT11温湿度传感器C语言读取例程

#include “stm8s.h”
#include “tim1.h”
#include <stdarg.h>

void Init_UART1(void);
void UART1_printf( uint8_t *Data,…);
typedef struct
{
uint8_t humi_int;
uint8_t humi_deci;
uint8_t temp_int;
uint8_t temp_deci;
uint8_t check_sum;

} DHT11_Data_TypeDef;
uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef * DHT11_Data);

void main(void)
{

DHT11_Data_TypeDef DHT11_Data;
CLK_HSICmd(ENABLE);//开始内部高频RC
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//不分频

// GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOA,GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);
// IWDG_Conf();
Tim1_Init();
//Tim2_Timer_Init();

Init_UART1();
enableInterrupts();
UART1_printf("\r\n***dht11 温湿度传感器实验***\r\n");

while (1)
{
if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS)
{
UART1_printf("\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n",
DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
}

delay_ms(7200);

}
}
static uint8_t DHT11_ReadByte ( void )
{
uint8_t i, temp=0;

for(i=0;i<8;i++)    
{	 
	/*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/  
	while(GPIO_ReadInputPin(GPIOA,GPIO_PIN_3)==RESET);

	/*DHT11 以26~28us的高电平表示“0”,以70us高电平表示“1”,
	 *通过检测 x us后的电平即可区别这两个状 ,x 即下面的延时 
	 */
	delay_ms(2);//延时x us 这个延时需要大于数据0持续的时间即可	   	  

	if(G
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值