在stm32单片机用LCD1602和DS18B20显示温度的代码
时间: 2023-05-29 13:02:20 浏览: 348
以下是在STM32单片机使用LCD1602和DS18B20显示温度的代码:
```
#include "stm32f10x.h"
#include "delay.h"
#include "lcd1602.h"
#include "ds18b20.h"
int main(void)
{
uint8_t temperature_string[7] = {0}; // 存储温度值转换为字符串后的结果
// 初始化LCD1602显示屏
lcd1602_init();
// 初始化DS18B20温度传感器
ds18b20_init(GPIOB, GPIO_Pin_8);
// 无限循环
while(1)
{
float temperature = ds18b20_read_temp(GPIOB, GPIO_Pin_8); // 读取温度
// 将温度转换为带一位小数的字符串形式
int integer_part = (int)temperature;
int decimal_part = (int)(temperature * 10) % 10;
sprintf((char*)temperature_string, "%d.%dC", integer_part, decimal_part);
// 在LCD1602显示屏上显示温度
lcd1602_write_string(0, 0, "Temperature:");
lcd1602_write_string(0, 1, (char*)temperature_string);
// 延迟一段时间再进行下一次循环,避免过于频繁的读取温度传感器
delay_ms(1000);
}
}
```
其中,`delay.h`和`delay.c`文件可以用外部提供的延时库,也可以自行编写。`lcd1602.h`和`lcd1602.c`文件是LCD1602显示屏的驱动代码,提供了一些常用的函数,如`lcd1602_init()`用于初始化LCD1602显示屏,`lcd1602_write_string()`用于在指定位置上显示字符串。`ds18b20.h`和`ds18b20.c`文件是DS18B20温度传感器的驱动代码,提供了一些常用的函数,如`ds18b20_init()`用于初始化DS18B20温度传感器,`ds18b20_read_temp()`用于读取温度。在以上代码中,GPIOB的第8个引脚分别连接到DS18B20温度传感器的DATA引脚,用于获取温度值并显示在LCD1602显示屏上。
阅读全文