单片机数字温度计显示温度0 - 99℃分辨率 0.1℃代码
时间: 2024-03-07 10:51:30 浏览: 168
以下是一个基于Arduino平台的简单示例代码,用于实现单片机数字温度计显示温度0 - 99℃分辨率 0.1℃:
```C++
#include <OneWire.h> // 导入OneWire库
#include <DallasTemperature.h> // 导入DallasTemperature库
// 定义温度传感器引脚
#define ONE_WIRE_BUS 2
// 创建OneWire对象和DallasTemperature对象
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// 定义显示器引脚
const int digits[4] = {3, 4, 5, 6}; // 分别对应个位、十位、百位、千位
// 定义温度变量
float temperature = 0;
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 初始化温度传感器
sensors.begin();
// 初始化显示器引脚
for (int i = 0; i < 4; i++) {
pinMode(digits[i], OUTPUT);
}
}
void loop() {
// 获取温度值
sensors.requestTemperatures();
temperature = sensors.getTempCByIndex(0);
// 舍入到0.1℃分辨率
temperature = round(temperature * 10) / 10.0;
// 显示温度值
displayTemperature(temperature);
// 延时一段时间
delay(1000);
}
// 显示温度值
void displayTemperature(float temperature) {
// 分别计算个位、十位、百位、千位数值
int digit1 = temperature / 10;
int digit2 = (int)temperature % 10;
int digit3 = (int)(temperature * 10) % 10;
int digit4 = (int)(temperature * 100) % 10;
// 定义数字显示表
byte numbers[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
// 将数字显示在数码管上
digitalWrite(digits[0], HIGH);
for (int i = 0; i < 7; i++) {
digitalWrite(i + 7, numbers[digit1][i]);
}
delay(1);
digitalWrite(digits[0], LOW);
digitalWrite(digits[1], HIGH);
for (int i = 0; i < 7; i++) {
digitalWrite(i + 7, numbers[digit2][i]);
}
delay(1);
digitalWrite(digits[1], LOW);
digitalWrite(digits[2], HIGH);
for (int i = 0; i < 7; i++) {
digitalWrite(i + 7, numbers[digit3][i]);
}
delay(1);
digitalWrite(digits[2], LOW);
digitalWrite(digits[3], HIGH);
for (int i = 0; i < 7; i++) {
digitalWrite(i + 7, numbers[digit4][i]);
}
delay(1);
digitalWrite(digits[3], LOW);
}
```
该代码使用了OneWire库和DallasTemperature库来读取温度传感器的值,并使用七段数码管显示温度值。请注意,该代码中的数字显示表是基于常规的七段数码管布局设计的,如果您使用的是其他类型的数字显示器,您可能需要修改数字显示表的定义以适应您的硬件。
阅读全文