引言
在很多电子项目中,显示设备可帮助我们实时观察传感器数据,而串口打印则是一种非常常见的调试方式。本文将介绍如何使用STM32控制0.96 OLED显示屏和DHT11温湿度传感器,并通过串口打印温湿度数据。
准备材料
- STM32开发板 (本文以STM32F103为例)
- 0.96 OLED显示屏
- DHT11温湿度传感器
- 杜邦线若干
搭建电路
将OLED显示屏、DHT11传感器和STM32开发板按照如下方式连接:
OLED VCC - STM32 3.3V
OLED GND - STM32 GND
OLED SDA - STM32 PB7
OLED SCL - STM32 PB6
DHT11 VCC - STM32 5V
DHT11 GND - STM32 GND
DHT11 DATA - STM32 PB8
配置开发环境
- 打开STM32CubeIDE,并创建一个新的STM32工程。
- 在工程中加载相应的HAL库和相关库文件。
- 配置I2C和GPIO外设以适应OLED显示屏的通信。
- 配置串口以便通过串口打印数据。
编写代码
以下为实现上述功能的简要代码示例:
#include "main.h"
#include "stdio.h"
#include "i2c.h"
#include "usart.h"
#include "dht11.h"
#include "ssd1306.h"
#define DHT11_DATA_GPIO GPIO_PIN_8
#define DHT11_GPIO_PORT GPIOB
DHT11_Data_TypeDef dht11_data;
void SystemClock_Config(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_I2C1_Init();
if (SSD1306_Init() != SSD1306_OK)
{
Error_Handler();
}
while (1)
{
if (DHT11_ReadData(&dht11_data) == DHT11_OK)
{
char buffer[20];
sprintf(buffer, "Temp: %dC", dht11_data.Temperature);
SSD1306_DisplayString(0, 0, buffer);
sprintf(buffer, "Humidity: %d%%", dht11_data.Humidity);
SSD1306_DisplayString(0, 1, buffer);
HAL_UART_Transmit(&huart1, buffer, strlen(buffer), HAL_MAX_DELAY);
}
HAL_Delay(2000);
}
}
编译和下载
完成代码编写后,编译并下载到STM32开发板中。
结果演示
经过编译和下载后,STM32开发板将通过OLED显示屏显示温湿度数据,并通过串口打印数据。
总结
通过本文的指导,您将学会如何使用STM32控制OLED显示屏和DHT11温湿度传感器,并通过串口打印温湿度数据。这为电子项目的开发和调试提供了重要的功能和便利。
希望本文对您有所帮助,谢谢阅读!

评论 (0)