STC89C52/90C516RD/89C516RD DHT11温湿度传感器驱动代码

news/2024/10/31 3:19:18/

1.硬件

STC89C52/90C516RD/89C516RD等
晶振:11.0592M
内存配置:
在这里插入图片描述
Memory Model为small,选择其他无法正常运行。

2.代码

dht11.h

#ifndef __DHT11_H
#define __DHT11_H 
#include "reg52.h"   #ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endifIO操作函数											   
sbit DHT11_DQ_OUT=P1^4; 	extern uchar idata rec_dat[15]; 	
uchar get_dht11_data(uchar *temp, uchar *humi);
#endif

dht11.c

#include <dht11.h>
#include <intrins.h>
#include "delay.h"uchar idata rec_dat[15] = "";uchar idata humi_data_H = 0;
uchar idata humi_data_L = 0;
uchar idata temp_data_H = 0;
uchar idata temp_data_L = 0;
uchar idata check_data = 0;/***************************************************
*	延时子函数 
*	延时10us
****************************************************/static void delay_10us()		//@11.0592MHz
{uchar i;i = 2;while (--i);
}static void delay_30us()		//@11.0592MHz
{uchar i;i = 11;while (--i);
}/*函数说明:获取dht11一个字节参数:void返回值:获取到的dht11一个字节的数据
*/
static uchar get_dht11_byte(void)
{   uchar i = 0;uchar time_out = 0;uchar temp = 0;uchar dht11_byte_data = 0;for(i=0;i<8;i++)	   {time_out=0;	while((!DHT11_DQ_OUT)&&time_out++ <= 5); /* 每一bit数据开始之前,都有持续大约50us的低电平 */if(time_out == 6) break;  /* 超时退出 */delay_30us();   /* 超过30us后还是高电平,表明该bit为1 */temp=0;if(DHT11_DQ_OUT)temp=1;time_out=0;while((DHT11_DQ_OUT)&&time_out++ <= 200);if(time_out==200)break;dht11_byte_data<<=1;dht11_byte_data|=temp;        //0}return dht11_byte_data;
}/*函数说明:获取DHT11温湿度数据参数:*temp 温度   *humi 湿度返回值:获取成功返回0   失败返回1
*/
uchar get_dht11_data(uchar *temp, uchar *humi)
{uchar time_out;uchar temp1 = 0;DHT11_DQ_OUT=0;delay_ms(20);   /* 主机至少拉低18ms */DHT11_DQ_OUT=1; delay_10us();delay_10us();delay_10us();delay_10us();	/* 主机拉高20-40us */time_out = 0;while(!DHT11_DQ_OUT && time_out++ <= 5); /* 等待DHT11回应 */if(time_out == 6)   return 1; /* 超时退出,sht11未响应 */else   /* DHT11响应 */{time_out=0;	 while((!DHT11_DQ_OUT)&&time_out++ <= 5);  /* 等待DHT11响应完毕,大约需要延时80us */if(time_out == 6)  return 1; /* 超时异常 */time_out=0;while((DHT11_DQ_OUT)&&time_out++ <= 5);if(time_out == 6)  return 1; /* 超时异常 */ humi_data_H=get_dht11_byte();humi_data_L=get_dht11_byte();temp_data_H=get_dht11_byte();temp_data_L=get_dht11_byte();check_data =get_dht11_byte();DHT11_DQ_OUT=1;//数据校验 temp1 = (humi_data_H+humi_data_L+temp_data_H+temp_data_L);if(temp1 == check_data){*humi = humi_data_H;*temp = temp_data_H;rec_dat[0] = temp_data_H/10 + '0';rec_dat[1] = temp_data_H%10 + '0';rec_dat[2] = ' ';rec_dat[3] = humi_data_H/10 + '0';rec_dat[4] = humi_data_H%10 + '0';rec_dat[5] = '\0';}}return 0;
}

代码有任何问题请参考DHT11数据手册或者留言,将不定期更新常用模块或者芯片驱动代码。


http://www.ppmy.cn/news/491019.html

相关文章

重置海康威视DS-2TD2617B-6/PA测温摄像头

如果忘记密码&#xff0c;需要重置&#xff0c;这个摄像头有一个重置按钮&#xff0c;在外面是看不到的。 重置按钮的位置 位置在这个摄像头的下方&#xff0c;有一个小盖子盖着&#xff0c;用螺丝刀旋下这个盖子的两个螺丝&#xff0c;就可以看到。 如何重置&#xff1a; …

皮卡丘的编号是?

精灵宝可梦有成百上千种&#xff0c;皮卡丘只是其中之一哦。这么多种宝可梦当然需要用编号来记录下来&#xff0c;皮卡丘的编号就是25号。宝可梦图鉴是一种能记录遇到的宝可梦的神奇工具&#xff0c;可是它还没有完全开发完成。现在请你帮忙写一个程序&#xff0c;完善图鉴的记…

【好奇心驱动力】ESP32-CAM人体感应拍照并推送到微信

0.前言 基本上ESP32-CAM的测试也差不多了&#xff0c;下面放个合集&#xff0c;方便查找&#xff1a; 1.【好奇心驱动力】ESP32-CAM定时拍照存储到SD卡 2.【好奇心驱动力】ESP32-CAM PIN与GPIO引脚对应关系 1.实验目的 部分步骤和截图来源于官网 最开始的设想是这样的&…

STM32读取MQ4传感器、DHT11温湿度传感器、GP2Y1014AU0F夏普光学灰尘传感器数据

1.功能 STM32测量MQ4、灰尘传感器、DHT11温湿度传感器&#xff0c;并在TFT上显示&#xff0c;超过浓度阈值蜂鸣器报警。 使用普中STM32F103ZET6开发板2.8寸触摸屏。 2.MQ4天然气传感器 MQ-4传感器简介&#xff1a; MQ- 4气体传感器所使用的气敏材料是在清洁空气中电导率较低…

皮卡丘代码源码

效果图&#xff0c;如上&#xff0c;下面皮卡丘的 代码片源码&#xff0c;复制粘贴修改成你的名字即可运行哦 // An highlighted blockimport turtle #导入我们的turtle库def getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):se…

Y05 - 018、打印皮卡丘

初学耗时&#xff1a;0.5h 注&#xff1a;CSDN手机端暂不支持章节内链跳转&#xff0c;但外链可用&#xff0c;更好体验还请上电脑端。 一、打印皮卡丘 记忆词&#xff1a; ... Y05 - 999、Python - 风变编程 ギ 舒适区ゾ || ♂ 累觉无爱 ♀ 一、打印皮卡丘 print(へ  …

计算机enter代表什么意思,enter是什么意思

手机评站网今天精心准备的是《enter是什么意思》,下面是详解! 电脑上键盘上enter是什么意思 在电脑键盘上带有“Enter”字样并有一弯箭头的按键,被叫做“回车键”。 其形状如下图所示,其位置在引号键的右边,另一个位置在数字键盘的右下角。 在文字编辑时,回车键有两个作用。…

回车键(Enter键)进行快速判断

回车键&#xff08;Enter键&#xff09;进行快速判断 在其位&#xff0c;谋其政。做一颗螺丝钉&#xff0c;就发挥螺丝钉稳稳当当的功能。做软件&#xff0c;为了尽可能地为用户着想&#xff0c;增强用户体验度&#xff0c;增添附加值&#xff0c;进一步做些努力。 本文介绍我在…