基于DS18B20数字温度传感器的温度计代码
时间: 2024-02-09 16:11:53 浏览: 80
以下是基于DS18B20数字温度传感器的温度计C语言代码示例:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P2^1; //定义DS18B20数据线
uchar temp[2]; //储存读取的温度值
//DS18B20芯片初始化函数
void Init_DS18B20()
{
uchar i;
DQ = 1;
_nop_();
_nop_();
_nop_();
DQ = 0;
_nop_();
_nop_();
_nop_();
DQ = 1;
_nop_();
_nop_();
_nop_();
i = DQ;
_nop_();
_nop_();
_nop_();
}
//DS18B20芯片写字节函数
void Write_DS18B20(uchar dat)
{
uchar i;
for (i = 0; i < 8; i++)
{
DQ = 0;
_nop_();
_nop_();
_nop_();
DQ = dat & 0x01;
_nop_();
_nop_();
_nop_();
DQ = 1;
dat >>= 1;
}
}
//DS18B20芯片读字节函数
uchar Read_DS18B20()
{
uchar i, dat = 0;
for (i = 0; i < 8; i++)
{
DQ = 0;
_nop_();
_nop_();
_nop_();
dat >>= 1;
if (DQ)
dat |= 0x80;
_nop_();
_nop_();
_nop_();
DQ = 1;
}
return dat;
}
//DS18B20芯片转换温度函数
void Convert_DS18B20()
{
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
}
//DS18B20芯片读取温度函数
void ReadTemperature_DS18B20()
{
uchar temp1, temp2;
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
temp1 = Read_DS18B20();
temp2 = Read_DS18B20();
temp[0] = temp1;
temp[1] = temp2;
}
void main()
{
while (1)
{
Convert_DS18B20(); //转换温度
ReadTemperature_DS18B20(); //读取温度
printf("Temperature: %d.%dC\n", (temp[1] << 4 | temp[0] >> 4), (temp[0] & 0x0f) * 625 / 100); //输出温度
delay(1000); //延时1s
}
}
```
在以上代码中,我们通过定义DS18B20数据线,编写初始化、写字节、读字节、转换温度和读取温度等函数,最后在主函数中循环执行转换温度、读取温度并输出温度值。需要注意的是,由于DS18B20芯片读取出来的温度值为16位,需要进行一定的处理才能得到实际温度值。
阅读全文
相关推荐


















