#include "stm32f10x.h" #include "ssd1306.h" #include "ds18b20.h"

#define TEMP_SENSOR_PIN GPIO_Pin_0 #define TEMP_SENSOR_PORT GPIOA

void Delay(__IO uint32_t nCount) { for(; nCount != 0; nCount--); }

void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin = TEMP_SENSOR_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(TEMP_SENSOR_PORT, &GPIO_InitStructure); }

float ReadTemperature(void) { uint8_t data[2]; float temperature = 0.0;

DS18B20_Init(TEMP_SENSOR_PORT, TEMP_SENSOR_PIN);

DS18B20_Start(TEMP_SENSOR_PORT, TEMP_SENSOR_PIN); DS18B20_ReadData(TEMP_SENSOR_PORT, TEMP_SENSOR_PIN, data);

temperature = (float)((data[1] << 8) | data[0]) * 0.0625;

return temperature; }

void OLED_Init(void) { // OLED 初始化代码 // ... }

void OLED_DisplayTemperature(float temperature) { char temp_str[10]; sprintf(temp_str, '%.2f', temperature);

// OLED 显示温度代码 // ... }

int main(void) { float temperature = 0.0;

GPIO_Configuration(); OLED_Init();

while (1) { temperature = ReadTemperature(); OLED_DisplayTemperature(temperature);

Delay(1000000); // 延时一段时间后再次更新温度显示

} }

上述代码中,使用了 SSD1306 OLED 显示屏和 DS18B20 温度传感器。你需要根据自己的硬件和库文件做相应的调整。代码中的 'GPIO_Configuration' 函数用于配置温度传感器引脚,'ReadTemperature' 函数用于读取温度值,'OLED_Init' 函数用于初始化 OLED 显示屏,'OLED_DisplayTemperature' 函数用于在 OLED 显示屏上显示温度值。

该示例代码的主要思路是通过循环不断读取温度值并更新显示。你可以根据自己的需求和硬件接口,进行相应的修改和适配。

请确保在使用之前,已经正确配置了相关的库和引脚连接。如果有任何问题,请随时提问。

STM32F103 控制 OLED 显示实时温度代码示例

原文地址: https://www.cveoy.top/t/topic/VZD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录