51单片机DS18B20初始化代码
时间: 2023-07-02 16:04:46 浏览: 152
DS18B20代码51单片机代码
5星 · 资源好评率100%
以下是51单片机使用DS18B20温度传感器的初始化代码:
```c
#include <reg51.h>
#include <intrins.h>
#define DQ P2_0
void delay_us(unsigned int us) // 延时函数
{
while(us--)
_nop_();
}
unsigned char ds18b20_init(void) // 初始化DS18B20
{
unsigned char i;
DQ = 1;
delay_us(1);
DQ = 0;
delay_us(500);
DQ = 1;
delay_us(60);
i = DQ;
delay_us(240);
return i;
}
void ds18b20_write(unsigned char dat) // 写入数据
{
unsigned char i;
for(i = 0; i < 8; i++)
{
DQ = 0;
_nop_();
DQ = dat & 0x01;
delay_us(60);
DQ = 1;
dat >>= 1;
}
}
unsigned char ds18b20_read(void) // 读取数据
{
unsigned char i, dat = 0;
for(i = 0; i < 8; i++)
{
DQ = 0;
_nop_();
DQ = 1;
_nop_();
dat |= DQ << i;
delay_us(60);
}
return dat;
}
void ds18b20_conversion(void) // 温度转换
{
ds18b20_init();
ds18b20_write(0xcc);
ds18b20_write(0x44);
}
int ds18b20_read_temperature(void) // 读取温度值
{
unsigned char tl, th;
int temp;
ds18b20_init();
ds18b20_write(0xcc);
ds18b20_write(0xbe);
tl = ds18b20_read();
th = ds18b20_read();
temp = th;
temp <<= 8;
temp |= tl;
return temp;
}
```
以上代码仅为初始化和基本操作的示例,具体使用时需要按照实际情况进行调整。
阅读全文