企业简介

作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。

  • 公司类型:其他

联系方式
  • 控制网
  • 地址:北京市海淀区上地十街辉煌国际2号楼1504室
  • 邮编:100085
  • 电话:010-57116291 / 59813326
  • 传真:010-59813329
  • 网址:http://www.kongzhi.net
  • Email:mahongliang@kongzhi.net
  • 联系人:市场部
案例详细
标题一种简易温度测量装置的设计
技术领域工厂信息化
行业
简介本文介绍了一种简易温度测量装置的硬件与软件设计。该装置以DS18B20为温度传感器,温度显示采用虚拟总线方式。文中给出了温度传感器、温度显示与P89C51RD2单片机的接口技术及实例。这种温度测量装置结构简单,使用方便、可靠。
内容






(中国船舶重工集团公司第七一○研究所,湖北   宜昌   443003) 梁中明,徐   阳
梁中明(1978—)
男,南京航空航天大学硕士毕业,现从事系统仿真研究工作,助理工程师。

    温度是一个很重要的环境参数,人们的生活与环境的温度息息相关,工业生产过程中需要实时测量温度,在农业生产中也离不开温度测量。因此,研究温度测量装置很有实际意义与实用价值。本文介绍了数字温度传感器DS18B20的内部结构与工作时序,虚拟 总线的温度显示方式,以及它们与单片机P89C51RD2的应用接口。该温度测量装置适用于人们的日常生活和工业、农业生产用于温度测量。
    
1 DS18B20数字温度传感器

    DS18B20是一种单线式数字温度传感器,具有3引脚TO-92小体积封装形式;测温范围为-55℃~+125℃,可编程为9~12位A/D转换精度,被测温度用符号扩展的16位数字量方式串行输出,工作电源为+3V~+5.5V,可在远端引入,也可采用寄生电源方式产生。
    
   
1.1 DS18B20的内部结构

    DS18B20内部结构如图1所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。其中DQ为数字信号输入/输出端;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。



图1   DS18B20内部结构

    DS18B20用12位存贮温度值,最高位为符号位,图2为DS18B20的温度存储方式,负温度S=1,正温度S=0,如0550H为+85℃,FC90H为-55℃。



图2   DS18B20温度寄存器存储方式

    1.2  DS18B20的操作时序

    DS18B20的单线式工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序,如图3所示。



(a) 初始化时序


(b)写时序


(c)写时序


图3   DS18B20工作时序图

2  虚拟总线显示方式

    温度显示采用LED数码管,其驱动芯片是ZLG7290。ZLG7290是接口的键盘及LED驱动器,可驱动8位共阴数码管,无需外接元件即直接驱动LED,可扩展驱动电流及驱动电压。在每个显示刷新周期,ZLG7290按照扫描位数寄存器指定的显示位数N,把显示缓存DpRam0~DpRamN的内容先后顺序送入LED驱动器实现动态显示,减少N值可提高每位显示扫描时间的占空比,以提高LED亮度,显示缓存中的内容不受影响。修改闪烁控制寄存器(FlashOnOff)可改变闪烁频率和占空比(亮与灭的时间)。
     
    总线是PHILIPS公司推出的芯片间串行数据传输总线,2根线(SCL、SDA)即可实现完善的全双工同步数据传送,能够十分方便地构成多机系统和外围器件扩展系统。

    ZLG7290的接口传输速率可达32Kbit/s,容易与处理器接口,本文采用单主总线形式,硬件接口是SCL、SDA。本文设计的硬件电路图如图4所示,采用P89C51RD2的P1.6与P1.7模拟的SCL与SDA,构成虚拟的总线显示方式。

3  程序设计

    温度测量装置的主程序流程,如图5所示。P89C51RD2控制DS18B20完成温度读取必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。程序必须先启动DS18B20开始转换,再读出温度值,其中包括读DS18B20,写DS18B20以及延时子函数。

    温度转换主要是指将从DS18B20读取的16进制温度数据转换成BCD码。温度显示是显示出DS18B20测量的温度数值,包含有总线启动、结束子函数,P89C51RD2发送命令、应答子函数以及向ZLG7290发送字节数据函数。程序设计采用汇编语言与C语言编程,其中DS18B20、总线启动与结束程序代码如下:

/*DS18B20初始化程序*/
INIT_1820:
   SETB  DQ
   NOP
   CLR  DQ
   MOV  R0,#80H
TSR1: DJNZ  R0,TSR1 ; /*延时*/
   SETB  DQ
   MOV  R0,#25H
TSR2: DJNZ  R0,TSR2
   JNB  DQ,TSR3
   LJMP  TSR4  ;/*延时*/
TSR3: SETB  FLAG1  ; /*置标志位*/
   LJMP  TSR5
TSR4: CLR  FLAG1  ;/*清标志位*/
   LJMP  TSR7
TSR5: MOV  R0,#06BH ;/*200μs*/
TSR6: DJNZ  R0,TSR6 ; /*延时*/
TSR7: SETB  DQ
   RET

void Start_I2c() /*启动总线*/
{
  SDA=1;  /*发送起始条件的数据信号*/
  _Nop();
  SCL=1;
  _Nop(); /*起始建立时间大于4.7μs*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();   
  SDA=0;  /*发送起始信号*/
  _Nop();  /*起始锁定时间大于4μs*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();      
  SCL=0; /*钳住总线*/
  _Nop();
  _Nop();
}


   图5   主程序流程图

void Stop_I2c()  /*结束总线*/
{
  SDA=0;  /*发送结束条件的数据信号*/
  _Nop();  /*发送结束条件的时钟信号*/
  SCL=1;  /*结束时建立时间大于4μs*/
  _Nop();
  _Nop();
  _Nop();
 _Nop();
  _Nop();
  SDA=1;   /*发送总线结束信号*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();
}



图4   硬件电路原理图

4  结束语

    数字式温度传感器DS18B20集温度测量、A/D转换于一体,具有单总线结构,数字量输出,直接与微机接口等优点;虚拟总线占用微机接口资源少(一根SDA,一根SCL),总线构成简单,能简化系统设计。本文研制的简易温度测量装置已成功应用于某实验室温度测控系统中,转换精度较高,抗干扰能力较强,效果良好。

参考文献: 

    [1] DallasCorp.DS18B20[EB/OL].http://www.dalsem.com,2003.

    [2] 马云峰等.数字温度传感器DS18B20原理与应[EB/OL].http://www.chinacd.com/dzkw//2002-1/9.htm,2002-01-12/2003-09-26.

    [3] 吕元颖等.总线概述及有关例程.科技情报开发与经济,2005,No15.P177~180.

    [4] P89c51RA2xx/RB2xx/RC2xx/RD2xx.datasheet. Philips Semiconductors .2002.