时间:2022-05-15 04:17:20
摘要:传统检测温度的方法是用模拟温度传感器。信号经取样、放大后通过模数转换,再交给单片机处理。这种方法经过众多器件,易受干扰、不易控制且精度不高。因此,本文介绍一种新型的单线温度系统DS18B20,他能代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度测量,该系统结构简单,现场温度以一线总线的数字方式输出,大大提高了抗干扰能力,适合于恶劣环境下进行现场温度测量。
关键词:单片机;DS18B20;数字显示
中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2010) 05-0000-02
Based on MCU design oftemperature measurement instrument
Peng Yang1,Xu Haibin2,Zhao Xue2
(1.Information Engineering of Huanghuai College,Zhumadian463000,China;2.SIAS Internstional University,Xinzheng451150,China)
Abstract:The traditional method of testing the temperature is analog temperature sensor.Signal by sampling,amplified by analog-digital conversion,and then to MCU processing.This method has been many devices are vulnerable to interference and difficult to control and accuracy is not high.Therefore,this article introduces a new single-temperature system DS18B20,he can replace the analog temperature sensors and signal processing circuit,to communicate directly with the MCU to complete a temperature measurement,the system is simple,on-site temperature to digitally output bus line has greatly enhanced the anti-jamming capability,suitable for harsh environment Field temperature measurements.
Keywords:MCU;DS18B20;Digital display
一、前言
在现实生活和工农业生产及科学研究中,温度的测量非常的重要。在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。
二、系统硬件的设计与实现
(一)控制系统的选择:单片机自问世以来,以其极高的性价比受到人们的重视和关注,应用很广,发展很快。单片机的体积小,重量轻,抗干扰能力强,环境要求不高,价格低,可靠性强,灵活性好,开发较为容易。基于以上的优点,单片机已经广泛的应用在工业自动化控制,自动检测,智能仪器仪表,机电一体化等各个方面,所以本系统采用单片机做为控制器。单片机中51系列最具有代表性。
(二)DS18B20的选择:DS18B20是Dallas公司推出的单线集成数字温度采集系统,它的技术指标:1.独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。2.测温范围 -55℃~+125℃,固有测温分辨率0.5℃。3.支持多点组网功能,多个DS18B20可以并联在唯一的三线上。4.工作电源:3~5V/DC。5.在使用中不需要任何元件。6.测量结果以9~12位数字量方式串行传送。7.适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温。8PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。
DS18B20引脚如图所示:DQ:数字信号输入/输出端。GDN:电源接地端。Ucc:外接电源输入端。
DS18B20工作过程的协议:初始化―>ROM操作命令―>RAM操作命―>令处理数据
(三)硬件电路的链接及仿真如图所示:
所需原器件:AT89C51DS18B20 7SEG-MPX8 CAP-ELEC CRYSTAL PHYC1808 等
该测温系统硬件电路简单,但是系统的测温程序设计比较复杂,主要程序设计如下:
#include "reg51.h"
#include "intrins.h"
char flag ;
int temp;
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
/*串口初始化1 */
void init_com()
{TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
PCON=0;
SMOD=0;
EA=1;
ES=1; }
/*初始化时序、读时序、写时序*/
void ds_reset(void)
{ds=1;
_nop_();
ds=0;
TempDelay(80);
…
_nop_();
ds=1; }
/*读/写时间隔*/
bit ds_read_bit(void)
{bit dat;
ds=0;
_nop_();
ds=1;
_nop_();
_nop_();
TempDelay(10);
return(dat); }
char ds_read_byte(void )
{char value,i,j;
value=0;
for(i=0;i
{j=ds_read_bit();
value=(j1);} }
void ds_write_byte(uchar dat)
{char i;
bit onebit;
for(i=1;i
{onebit=dat&0x01;
dat=dat>>1;
…
}
/*进行温度转换:*/
void tem_change()
{ds_reset();
delay(1);
ds_write_byte(0xcc);
ds_write_byte(0x44);}
/*获得温度:*/
int get_temperature()
{float wendu;
char a,b;
ds_reset();
delay(1);
ds_write_byte(0xcc);
ds_write_byte(0xbe);
a=ds_read_byte();
b=ds_read_byte();
temp=b;
temp
temp=temp|a;
wendu=temp*0.0625;
temp=wendu*10+0.5;
return temp;
}
/*读ROM */
void main()
{int a;
int_com();
while(1)
{tem_change();
for(a=10;a>0;a--)
{display( get_temperature());
}}}
小结:DS18B20在使用中应注意的问题:1.较小的硬件开销需要相对复杂的软件进行补偿,DS18B20与单片机用一线串口传送数据,因此在对DS18B20进行读写编程时必须严格的保证读写时序,否则将无法读取测温结果。2.链接DS18B20的数量应该受到限制。当单总线上所连接的DS18B20超过8个时,就需要解决处理器的总线驱动能力。3.链接DS18B20的总线长度是要受到限制的。当数据线超度超过50米时读取的温度将发生错误,当采用双绞线带屏蔽时,通信距离可达150米。所以在用DS18B20进行长距离测温时应该考虑总线分布电容和阻抗的匹配问题。4.在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一但有一个DS18B20接触不好或断线,当程序读次DS18B20时,将没有返回信号,程序进入死循环。这一点进行硬件链接和程序设计是应该特别注意。五:测温电缆建议采用屏蔽四芯双绞线,其中两根接地线和信号线,另两根接电源线和地线,屏蔽层在源端接地。
参考文献:
[1]张毅刚.单片机原理及应用,高等教育出版社,2003
[2]周明德.微型计算机系统原理及应用,清华大学出版社,2007
[3]刘法治.常用电子元器件及典型芯片应用技术,机械工业出版社,2007
[4]周兴华.单片机C语言高级程序设计,中国电力出版社,2008