
连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通
讯。DS18B20 的采集数据通过 DQ 传入单片机,单片机读取数据后将
数据输出!如图所示
:
程序如下:
ReadOneChar(void)
{
unsigned char i=0;// 定义 i 用于循环
unsigned char dat = 0;// 读取的 8 位数据
for (i=8;i>0;i--)//8 次循环
{
DQ = 0;// 拉低 DQ 总线开始读时序
dat>>=1;// dat 左移一位
DQ = 1; //释放 DQ 总线
if(DQ)// 如果 DQ=1,执 dat|=0x80;(0x80 即第 7 位为 1,如果 DQ 为 1,
即读取的数据为 1,将 dat 的第 7 为置 1,然后 dat>>=1,循环 8 次结束,dat
即为读取的数据)
//DQ=0,就跳过
dat|=0x80;
Tdelay(4);// 延时以完成此次读时 序,之后再读下一数据
}
return(dat); 返回读取的 dat
}
//写一个字节
WriteOneChar(unsigned char dat)
{
unsigned char i=0;//
for (i=8; i>0; i--)//
{
DQ = 0;//
DQ = dat&0x01;//
Tdelay(5);// 延时以完成此次读时序,之后再读下一数据
2