DS18B20怎么设置上下限

2024-12-26 03:52:59
推荐回答(2个)
回答1:

首先对DS18B20进行初始化:ds18b20Check()这一步同时也是检测是否有DS18B20挂接在总线上;其次对DS18B20写ROM指令:ds18b20Write(0xcc)这一步是跳过ROM匹配,只适合总线挂载单个DS18B20的情况;接着对DS18B20写存储器指令:ds18b20Write(0x4e)这一步是向DS18B20发出写RAM第3、4字节的指令,第3个字节是上限温度寄存器,第4个字节是下限温度寄存器;再接着传2个字节给DS18B20:ds18b20Write(0x1e); ds18b20Write(0x1c);其中0x1e就是你要设置的上限温度,0x1c就是你要设置的下限温度,可以自己更改!!这样就设置成功了,代码如下:# define uchar unsigned charsbit CWY=P3^3; //CWY是DS18B20总线在单片机上的控制位,我的是P3^3
bit ds18b20Check()
{
bit flag;
uchar i;
CWY=1; _nop_();
CWY=0;
for(i=0;i<200;++i) //延迟600us
;
CWY=1; //将总线拉高,控制权交给从器件
for(i=0;i<30;++i)
;
flag=CWY;
for(i=0;i<80;++i) //这步很重要,必须等待时序结束后
;
return !flag;
}void ds18b20Write(uchar dat)
{
uchar i,time;
for(i=0;i<8;++i)
{
CWY=1;
_nop_();
CWY=0;
CWY=dat&0x01;
for(time=0;time<30;++time)
;
for(time=0;time<1;++time) //两个写时序间的恢复时间
;
dat>>=1;
}
}
//上面是函数定义,下面是主要的操作过程,开头已经说明了
ds18b20Check();
ds18b20Write(0xcc);
ds18b20Write(0x4e); ds18b20Write(0x1e);
ds18b20Write(0x1c);//END

回答2:

做数字温度计,怎么设置上下限啊!一直搞不通。最好C语言的。
我用的是数码管