用C语言写C51单片机下DS18B20的读取代码
时间: 2023-09-30 19:12:32 浏览: 96
基于51单片机DS18B20温度温度读取(C语言)
非常感谢您的提问,以下是C51单片机下DS18B20的读取代码:
```
#include <reg52.h>
sbit DQ = P3^4; // 数字引脚
unsigned char temp; // 温度值
void delay(unsigned int i) // 延时函数,单位是微秒
{
while(i--);
}
void init_DS18B20() // 初始化DS18B20
{
DQ = 1;
delay(10);
DQ = 0;
delay(200);
DQ = 1;
delay(40);
while(DQ);
delay(40);
}
unsigned char read_byte() // 读取一字节
{
unsigned char i = 8, val = 0;
while(i--)
{
val >>= 1;
DQ = 0;
delay(5);
DQ = 1;
delay(5);
if(DQ)
val |= 0x80;
delay(20);
}
return val;
}
void get_temp() // 获取温度值
{
init_DS18B20(); // 初始化
write_byte(0xcc); // 跳过ROM匹配
write_byte(0x44); // 发起温度转换
delay(1000); // 等待转换完成
init_DS18B20();
write_byte(0xcc);
write_byte(0xbe); // 读取温度值
temp = read_byte(); // 读取低8位
temp |= read_byte() << 8; // 读取高8位
}
void main()
{
while(1)
{
get_temp(); // 获取温度值
// 显示温度值,代码省略
}
}
```
希望以上代码可以帮到您,如果还有其他问题,请随时提问。
阅读全文