基于32单片机的8路Ds18b20温度检测系统程序
时间: 2024-01-10 15:01:51 浏览: 75
以下是基于32单片机的8路Ds18b20温度检测系统程序的参考代码:
```c
#include "stm32f10x.h"
#include "delay.h"
#include "ds18b20.h"
#include "usart.h"
int main(void)
{
float temp;
char tempStr[10];
int i;
delay_init(); // 初始化延时函数
USART1_Init(); // 初始化串口1
DS18B20_Init(); // 初始化DS18B20
while(1)
{
for(i=0; i<8; i++)
{
temp = DS18B20_ReadTemp(i); // 读取第i个DS18B20的温度值
if(temp != ERROR)
{
sprintf(tempStr, "%.2f", temp); // 将温度值转换为字符串
USART_SendString(USART1, "Temp of DS18B20_"); // 发送串口数据
USART_SendData(USART1, i+48); // 发送当前DS18B20的编号
USART_SendString(USART1, ": "); // 发送串口数据
USART_SendString(USART1, tempStr); // 发送串口数据
USART_SendString(USART1, " C\n\r"); // 发送串口数据
}
else
{
USART_SendString(USART1, "Error reading temperature of DS18B20_"); // 发送串口数据
USART_SendData(USART1, i+48); // 发送当前DS18B20的编号
USART_SendString(USART1, "\n\r"); // 发送串口数据
}
}
delay_ms(1000); // 延时1秒
}
}
```
其中,ds18b20.h 是DS18B20的头文件,包括了DS18B20_Init() 和 DS18B20_ReadTemp() 函数的声明及定义。USART1_Init() 是串口1的初始化函数。以上代码实现了每隔1秒读取8个DS18B20的温度值,并通过串口发送到PC端。
阅读全文