news 2026/7/1 18:01:21

DHT11 OLED显示例程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DHT11 OLED显示例程

最近在学STM32 刚买的DHT11准备找个例程试试,但是网上很多都不够完善,于是就有了这篇博客。上传有压缩包 直接解压烧录即可

各个引脚位置如下

模块引脚
MCUSTM32F103C8T6
DHT11 DATAPB12
OLED SCLPB8
OLED SDAPB9
USART1PA9(TX)、PA10(RX)

main.c

#include "stm32f10x.h" #include "Delay.h" #include "OLED.h" #include "DHT11.h" #include "Serial.h" uint8_t Temp; uint8_t Humi; int main(void) { OLED_Init(); DHT11_Init(); Serial_Init(); OLED_ShowString(1,1,"Temperature:"); OLED_ShowString(3,1,"Humidity:"); while(1) { if(DHT11_Read_Data(&Temp,&Humi)==0) { OLED_ShowNum(1,13,Temp,2); OLED_ShowString(1,15,"C"); OLED_ShowNum(3,10,Humi,2); OLED_ShowString(3,12,"%"); printf("Temp:%d C Humi:%d %%\r\n",Temp,Humi); } else { OLED_ShowString(2,1,"Read Error"); } Delay_ms(1000); } }

DHT11.h

#ifndef __DHT11_H #define __DHT11_H #include "stm32f10x.h" void DHT11_Init(void); uint8_t DHT11_Read_Data(uint8_t *temp,uint8_t *humi); #endif

DHT11.c

#include "DHT11.h" #include "Delay.h" #define DHT11_PORT GPIOB #define DHT11_PIN GPIO_Pin_12 void DHT11_OUT(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=DHT11_PIN; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(DHT11_PORT,&GPIO_InitStructure); } void DHT11_IN(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=DHT11_PIN; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(DHT11_PORT,&GPIO_InitStructure); } void DHT11_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); DHT11_OUT(); GPIO_SetBits(DHT11_PORT,DHT11_PIN); } static uint8_t DHT11_ReadBit(void) { while(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)==RESET); Delay_us(40); if(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)) { while(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)); return 1; } else { return 0; } } uint8_t DHT11_Read_Data(uint8_t *temp,uint8_t *humi) { uint8_t i,j; uint8_t buf[5]; DHT11_OUT(); GPIO_ResetBits(DHT11_PORT,DHT11_PIN); Delay_ms(20); GPIO_SetBits(DHT11_PORT,DHT11_PIN); Delay_us(30); DHT11_IN(); while(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)); while(!GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)); while(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)); for(j=0;j<5;j++) { buf[j]=0; for(i=0;i<8;i++) { buf[j]<<=1; buf[j]|=DHT11_ReadBit(); } } if(buf[4]==buf[0]+buf[1]+buf[2]+buf[3]) { *humi=buf[0]; *temp=buf[2]; return 0; } return 1; }

其它驱动均采用江协的写法(看过江协应该都知道)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 17:57:08

智能科学毕业设计容易的方向集合

文章目录&#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f;1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f;&#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 基于协同过滤的电影…

作者头像 李华
网站建设 2026/7/1 17:56:32

短视频矩阵系统靠谱的服务商

在流量红利见顶、平台算法日益严苛的当下&#xff0c;单账号孤岛式运营已难以满足企业规模化获客的需求。短视频矩阵系统应运而生&#xff0c;它通过多账号集群管理、AI批量内容生产、跨平台一键分发、数据化运营与账号安全风控五大核心能力&#xff0c;帮助企业低成本、高效率…

作者头像 李华
网站建设 2026/7/1 17:54:21

6DoF运动追踪:IIM-42652 IMU与STM32F302R8实战指南

1. 从3D到6DoF&#xff1a;IMU与MCU的完美结合在运动追踪和姿态感知领域&#xff0c;从基础的3D空间定位升级到完整的6自由度&#xff08;6DoF&#xff09;运动捕捉是一个质的飞跃。IIM-42652作为TDK InvenSense新一代6轴MEMS惯性测量单元(IMU)&#xff0c;配合STM32F302R8这款…

作者头像 李华
网站建设 2026/7/1 17:52:03

3PEAK思瑞浦 TPA132A1-SO1R-S SOP8 电流信号检测放大器

特性增强型PWM抑制宽共模电压范围工作电压&#xff1a;-4V至80V耐受电压&#xff1a;-10V至85V电源电压&#xff1a;3.0V至5.5V出色的共模抑制比直流共模抑制比&#xff1a;150dB50kHz交流共模抑制比&#xff1a;115dB精度和零漂移性能电压失调&#xff1a;最大100μV&#xff…

作者头像 李华
网站建设 2026/7/1 17:47:59

简述Vite与Webpack原理

一、核心对比&#xff1a;Vite 与 Webpack 本质差异Webpack&#xff1a;先全量打包再启动服务&#xff0c;项目越大冷启动越慢&#xff1b; Vite&#xff1a;基于浏览器原生 ES Module esbuild 预构建&#xff0c;启动时不打包全部代码&#xff0c;按需加载&#xff0c;启动秒…

作者头像 李华
网站建设 2026/7/1 17:47:45

深圳猎头公司做GEO,哪家能让AI在招聘推荐里带上自己?

我将为你提供一套通用的选型标准&#xff0c;帮助你选择合适的深圳GEO服务商&#xff0c;不过不会直接推荐具体的公司哦。通用选型标准媒体资源维度&#xff1a;权威的媒体资源是提升企业线上曝光和AI抓取权重的关键。根据行业经验&#xff0c;拥有较多主流权威媒体渠道&#x…

作者头像 李华