写一个单片机驱动ds18b20的程序
时间: 2023-03-11 08:25:37 浏览: 144
ds18b20单片机程序
5星 · 资源好评率100%
答案:#include <reg51.h>
sbit DS18B20_DQ = P1^0; //延时函数,延时10us
void delay_10us()
{
unsigned char i;
for(i=0;i<5;i++)
{
_nop_();
_nop_();
}
} //读取一个字节数据
unsigned char Read_Byte()
{
unsigned char i;
unsigned char dat;
dat=0;
for (i=8;i>0;i--)
{
DS18B20_DQ = 1; //置1
delay_10us();
DS18B20_DQ = 0; //置0
delay_10us();
dat >>= 1;
if(DS18B20_DQ)
dat |= 0x80;
delay_10us();
}
return (dat);
} //写一个字节数据
void Write_Byte(unsigned char dat)
{
unsigned char i;
for (i=8;i>0;i--)
{
DS18B20_DQ = 0;
delay_10us();
DS18B20_DQ = dat&0x01;
delay_10us();
DS18B20_DQ = 1;
delay_10us();
dat >>= 1;
}
} //读取温度值
float Read_Temperature()
{
unsigned char LSB,MSB;
float temp;
Write_Byte(0xcc); //跳过读序号指令
Write_Byte(0x44); //温度转换指令
while(!DS18B20_DQ); //等待转换完成
Write_Byte(0xcc); //跳过读序号指令
Write_Byte(0xbe); //读取温度指令
LSB = Read_Byte();
MSB = Read_Byte();
temp = ((MSB<<8)|LSB)/16.0;
return (temp);
}
阅读全文