数字温度传感器DSB应用实例PPT资料.ppt
《数字温度传感器DSB应用实例PPT资料.ppt》由会员分享,可在线阅读,更多相关《数字温度传感器DSB应用实例PPT资料.ppt(19页珍藏版)》请在冰豆网上搜索。
见表3-1所示。
其中,第0、1字节是温度转换有效位,第0字节的低3位存放了温度的高位,高5位存放温度的正负值;
第1字节的高4位存放温度的低位,后4位存放温度的小数部分;
第2和第3个字节是DS18B20的与内部E2PROM的有关的TH和TL,用来存储温度上限和下限,可以通过程序设计把温度的上下限从单片机中读到TH和TL中,并通过程序再复制到DS18B20内部E2PROM中,同时TH和TL在器件加电后复制E2PROM的内容;
第4个字节是配置寄存器,第4个字节的数字也可以更新;
第5,6,7三个字节是保留的。
表3-1-3高速寄存器RAM,3.1.2硬件连接,DS18B20可以作为单片机外设,单片机为主器件,DS18B20为从器件。
上图接法是单片机与一个DS18B20通信,单片机只需要一个I/O口就可以控制DS18B20,为了增加单片机I/O口驱动的可靠性,总线上接有上拉电阻。
如果要控制多个DS18B20进行温度采集,只要将所有DS18B20的DQ全部连接到总线上就可以了,在操作时,通过读取每个DS18B20内部芯片的序列号来识别。
3.2单总线数据传输原理,单总线协议规定一条数据线传输串行数据,时序有严格的控制,对于DS18B20的程序设计,必须遵守单总线协议。
DS18B20操作主要分初始化、写数据、读数据。
下面分别介绍操作步骤。
一、初始化时序,对DS18B20初始化的不得是:
单片机感知DS18B20存在并为下一步操作做准备,同时启动DS18B20,程序设计依据时序进行。
设P1.0口与DS18B20的数据DQ连接,初始化过程如下:
(1)先将数据线置高电平1,然后延时(可有可无);
(2)数据线拉到低电平0。
然后延时750s(该时间范围可以在480960s),调用延时函数决定。
(3)数据线拉到高电平1。
如果单片机P1.0接DS18B20的DQ引脚,则P1.0此时设置高电平,称为单片机对总线电平管理权释放。
此时,P1.0的电平高低由DS18B20的DQ输出决定;
(4)延时等待。
如果初始化成功则在1560ms总线上产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在。
但是应注意,不能无限地等待,不然会使程序进入死循环,所以要进行超时判断。
(5)若单片机读到数据线上的低电平0后,说明DS18B20存在并相应,还要进行延时,其延时的时间从发出高电平算起(第步的时间算起)最少要480s。
(6)将数据线再次拉到高电平1,结束初始化步骤。
过程,对应程序,Init_DS18B20(voiducharx=255;
DQ=1;
delay(10);
/稍做延时DQ=0;
delay(80);
delay(20);
while(DQ,二、对DS18B20写1字节数据,
(1)数据线先置低电平0,发送的起始信号。
(2)延时确定的时间为15s;
(3)按低位到高位顺序发送数据(一次只发送一位)。
(4)延时时间为45s,等待DS18B20接收;
(5)将数据线拉到高电平1,单片机释放总线;
(6)重复步骤,直到发送完整个字节;
(7)最后将数据线拉高,单片机释放总线。
过程,voidwrite_OneChar(uchardat)uchari=0;
for(i=8;
I0;
i-)DQ=0;
delay(5);
DQ=dat,对应程序,三、对DS18B20读1字节数据,
(1)将数据线拉高,时序图见图3-1-5所示;
(2)延时2s,(3)将数据线拉低到0,(4)延时6s,延时时比写数据时间短;
(5)将数据线拉高到1,释放总线(6)延时4s(7)读数据线的状态得到一个状态位,并进行数据处理。
(8)延时30s。
(9)重复步骤,直到读取完一个字节。
过程,对应程序,ucharread_OneChar(void)uchari=0;
uchardat=0;
i0;
/给脉冲信号dat=1;
/给脉冲信号if(DQ)dat|=0x80;
delay(4);
return(dat);
3.3DS18B20的指令集,DS18B20指令主要有ROM操作指令、温度操作指令两类。
每一个DS18B20都有自己独立的编号,存放在DS18B20内部64位ROM中,ROM操作指令主要对其内部64位的编号操作。
内部编号由厂家生产过程中固化,器件编号唯一。
格式见表3-2所示。
表3-2,33H读ROM。
读DS18B20温度传感器ROM中的编码(即64位地址)55H匹配ROM。
发出此命令之后,接着发出64位ROM编码,访问单总线上,与该编码相对应的DS18B20并使之做出响应,为下一步对该DS18B20的读/写做准备F0H搜索ROM。
用于确定挂接在同一总线上DS18B20的个数,识别64位ROM地址,为操作各器件做好准备CCH跳过ROM。
忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于一个从机工作。
ECH告警搜索命令。
执行后只有温度超过设定值上限或下限的芯片才做出响应,一、ROM操作指令(5个),二、温度操作指令(4个),温度操主要对高速寄存器操作,指令共六个,见下表,图3-3DS18B20硬件连接图,3.3实验任务,电路如图所示,请你设计程序,利用三位数码管显示温度,小数点1位。
要求先仿真,最后下载实现。