普中开发板上ds18b20如何与单片机通信

2024-11-05 17:18:55
推荐回答(2个)
回答(1):

ds18b20与单片机是串行通讯,
/******************************************************

函数名称:void Init_DS18B20(void)

返回值:无

参数:无

作用:初始化18B20

*******************************************************/

void Init_DS18B20(void)

{

char x=0;

DQ=1;
delay(10);//稍作延时
DQ=0;
delay(80);//延时>480us 540us
DQ=1; //拉高总线 15-60us
delay(20);
x=DQ;//读总线状态 为0复位成功,为1则不成功
delay(30);
DQ=1;//释放总线
}
/******************************************************
函数名称:uchar ReadOneChar(void)
返回值:uchar dat
参数: 无
作用:读取1820一个字节
*******************************************************/
uchar ReadOneChar(void)
{
uchar i;
uchar dat=0;
for(i=0;i<8;i++)
{
DQ=0;
dat>>=1;
DQ=1;//给脉冲
if(DQ)
{dat|=0x80;}//读1 /// 读0右移处理
delay(8);//15us内读完一个数
}
return(dat);
}
/******************************************************
函数名称:void WriteOneChar(uchar dat)
返回值:无
参数: uchar dat
作用:向1820写一个字节
*******************************************************/
/////****写DS18B20***/
//写0 60us读完,写1 30us 内读完

void WriteOneChar(uchar dat)
{
uchar i=0;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;//写所给数据最低位
delay(10);
///////////
DQ=1;//给脉冲
dat>>=1;
}
delay(8);
}

回答(2):

你好!晋中的开发板,18B20 好像接在 P37 的口上