电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

ds18b20温度改换详细操作进程

2017-07-03 06:24分类:电子技术 阅读:

 

DS18B20 单线通讯功用是分时完毕的,他有严峻的时隙概念,假定出现序列失调, 1-WIRE 器材将不照应主机,因而读写时序很首要。体系对 DS18B20 的各种操作有必要按协议进行。依据 DS18B20 的协议规矩,微操控器操控 DS18B20 完毕温度的改换有必要通过以下 3个进程 :
(1)每次读写前对 DS18B20 进行复位初始化。复位央求主 CPU 将数据线下拉 500us ,然后开释, DS18B20 收到信号后等候 16us~60us 分配,然后宣告60us~240us 的存在低脉冲,主 CPU 收到此信号后标明复位成功。
(2)发送一条 ROM 指令

(3)发送存储器指令

详细操作举例:
如今咱们要做的是让DS18B20进行一次温度的改换,那详细的操作即是:
1、主机先作个复位操作,
2、主机再写越过ROM的操作(CCH)指令,
3、然后主机接着写个改换温度的操作指令,后边开释总线起码一秒,让DS18B20完毕改换的操作。在这儿要留神的是每个指令字节在写的时分都是低字节先写,例如CCH的二进制为11001100,在写到总线上时要从低位开端写,写的次第是“零、零、壹、壹、零、零、壹、壹”。悉数操作的总线状况如下图。

读取RAM内的温度数据。一样,这个操作也要接照三个进程。
1、主机宣告复位操作并接纳DS18B20的应对(存在)脉冲。
2、主机宣告越过对ROM操作的指令(CCH)。
3、主机宣告读取RAM的指令(BEH),随后主机顺次读取DS18B20宣告的从第0一第8,共九个字节的数据。假定只想读取温度数据,那在读完第0和第1个数据后就不再理睬后边DS18B20宣告的数据即可。一样读取数据也是低位在前的。悉数操作的总线状况如下图:

C言语代码
sbit DQ=P3^3;
uchar t; //设置大局变量,专门用于延时程序
bit Init_DS18B20(void)
{
bit flag;
DQ=1;
_nop_(); //??????????????? for(t=0;t
DQ=0;
for(t=0;t
DQ=1;
for(t=0;t
flag=DQ;
for(t=0;t
return flag;
}
uchar ReadOneChar(void)
{
uchar i=0;
uchar dat;
for(i=0;i
{
DQ=1;
_nop_();
DQ=0;
_nop_();
DQ=1; //人为拉高,为单片机查看DS18B20的输出电平做预备
for(t=0;t
dat>>=1;
if(DQ==1)
{
dat|=0x80;
}
else
dat|=0x00;
for(t=0;t
}
return dat;
}
void WriteOneChar(uchar dat)
{
uchar i=0;
for(i=0;i
{
DQ=1;
_nop_();
DQ=0;
_nop_();// ??????????????????????????????????????????????
DQ=dat&0x01;
for(t=0;tDS18B20在15~60us对数据采样 ??????????????? for(t=0;t
DQ=1; //开释数据线
for(t=0;t
dat>>=1;
}
for(t=0;t
}
void ReadyReadTemp(void)
{
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0x44);
delaynms(1000); // ?????????????????????????? delaynms(200);
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0xbe);
}

上一篇:场效应管作业原了阐明

下一篇:用电视机喇叭制造音箱需求哪些元件

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部