51单片机ds18b20测温度,用8位数码管显示
时间: 2024-02-28 07:56:02 浏览: 17
好的,您可以参考以下代码实现:
```c
#include <reg51.h> // 51单片机头文件
#include <ds18b20.h> // ds18b20头文件
// 数码管显示0-F的值
unsigned char code duan_ma[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
// 延时函数
void delay(unsigned int i) {
while(i--);
}
// 数码管显示函数
void display(unsigned char dat) {
unsigned char shi,ge;
shi = dat / 10; // 计算十位
ge = dat % 10; // 计算个位
// 显示十位和个位
P0 = duan_ma[shi];
P2 = 0xfe;
delay(100);
P0 = duan_ma[ge];
P2 = 0xfd;
delay(100);
}
void main() {
unsigned char temp;
init_ds18b20(); // ds18b20初始化
while(1) {
temp = get_ds18b20_temp(); // 获取温度
display(temp); // 数码管显示温度值
}
}
```
需要注意的是,在这个例子中,使用了`ds18b20.h`头文件,该头文件中包含了ds18b20的初始化和获取温度的函数。同时,在`display()`函数中,使用了P0和P2来控制数码管的显示,需要根据自己的实际电路连接情况进行修改。