温度是工业生产过程和实验过程中比较重要的一个参数,精确的温度测量和及时的显示温度是很重要的。目前温度测量系统种类繁多,功能参差不齐。单片机具有体积小,价格便宜,通用性和灵活性强的特点,利用单片机设计温度测量系统,既可以满足功能要求,又经济实惠。数字温度测量传感器DS18B20是单一总线的高精度测量器件,它克服了以前模拟式传感器与微机接口时需要的A/D转换器及其他复杂外围电路的缺点。本文就是运用单片机及其接口和集成单总线温度传感器DS18B20构建一个高精度的温度测量和显示系统,并且通过开关进行温度上限的设置,如果温度超过设定值就会报警或进行相应的控制命令。设计的电路简单,易于实现,而且还具有一定的扩展功能,可以扩展成多点采集和更复杂的功能。
1 系统硬件设计
整个系统主要由主控中心(单片机)、温度传感器DS18B20、数码管显示及开关控制等功能模块组成。可以通过开关调节报警温度的上限,既可以使上限增加,也可以使上限减小,这样就可以用于不同场合了,系统的框图如图1所示。
1.1 温度传感器DS18B20
DS18B20是美国Dallas半导体公司生产的数字式温度传感器,提供9位温度读数,指示温度。温度信息通过单线接口送入DS18B20或者从DS18B20送出,所以从处理器到DS18B20仅需连接一条线。读、写和完成温度变换所需的电源可以由数据本身提供,而不需要外部电源。这使得DS18B20与单片机接口变得很简单,克服了模拟式传感器与微机接口时需要的A/D转换及其他复杂外围电路的缺点,而且它具有结构简单、成本低、体积小、抗干扰能力强、使用简单等优点。最重要的是DS18B20的ROM中存有其芯片的惟一标识码,即任意两个DS18B20的标识码是不同的,特别适合与微处理芯片构成多点温度测量控制系统。DS18B20是DS1820的改进型,分辨率为9~12位可编程控制,由其寄存器R0,R1的两位状态决定。测量范围从-55~+125℃,增量值为0.5℃。
DS18B20在内部以时钟周期个数计数来测量温度,并且提供0.5℃的分辨率。温度读数以16位、符号扩展的二进制补码读数形式提供。需要注意的是在DS18B20中温度以1/2℃LSB(最低有效位)形式表示时,产生以下9位格式:
1.2 键盘控制设计
系统工作前先由用户自己设定一个两位温度值作为报警值,打开电源,单片机复位初始化,闭合开关中断程序,按复位开关,每按一次报警值就会在初始化的基础上加1℃,数码管显示设定值。用户进行核对查看显示的数字值是否与设置值一样,然后打开开关进行周围温度测量值传输。由于报警值可以由用户自己设定,故系统能适应各种不同温度的环境。
1.3 其他的部分
系统主要采用的是7段共阳极数码管显示测量的温度值,由发光二极管和蜂鸣器进行报警。如果测的温度值高于设定值1℃,报警系统就会报警(发光二极管点亮,蜂鸣器鸣响)。这样可以从声音和视觉上收到系统的警报。
1.4 系统的电路原理图
系统的电路原理图如图2所示。
2 软件设计
系统开始工作时,首先进行I/O口初始化、报警值初始化,然后判断开关是否闭合,由用户自己在原报警值的基础上更改,确定后由单片机控制软件发出温度读取指令,通过数字温度传感器DS18B20采集当前温度值,转换后经过单总线传输给单片机,单片机经过处理由数码管显示,如果超出设置的报警值1℃,系统就会报警(发光二极管点亮、蜂鸣器鸣响)。系统的软件部分主要是由中断子程序、读写DB18B20程序、显示程序和报警系统四部分组成,主程序流程图如图3所示。
设计的部分程序如下:
3 结语
基于C51系列单片机和DS18B20数字温度传感器的温度测量系统结构简单、成本低、操作方便,比较好推广,而且也可以根据情况进行扩展,比如进行多点采集等。