基于I2C串行总线的两点温度测量系统设计
2017-03-31王超
王超
摘 要:温度是工农业生产中一个普遍而又重要的参数。因此,对于温度这个参数的测量与控制就显得尤为重要。该文设计了基于I 2C串行总线的两点温度测量系统,阐述了I 2C总线的特点及基本原理,选用了STC89C52单片机为系统的核心,并设计了单片机的时钟电路、复位电路和电源电路,选用了DS1621温度传感器采集环境温度,选用了液晶显示器LCD1602显示采集到的温度值,并进行了单片机端口的选择和各器件之间的连接,进行了LCD1602和DS1621芯片的驱动程序和主程序的编写,并进行了仿真。
关键词:STC89C52 I 2C DS1621 液晶显示器
中图分类号:TH89 文献标识码:A 文章编号:1672-3791(2015)11(c)-0088-03
温度是工农业生产中一个普遍而又重要的参数。因此,对于温度这个参数的测量与控制就显得尤为重要。以往这些温度的检测工作大多是由人工完成,不但工作量大,记录的数据少,难以满足现代温度测量的要求。传感器技术、微控制器技术和计算机技术的发展,为现代的温度测量与控制系统的设计提供了技术基础,基于传感器技术、微控制器技术和计算机技术的温度测量系统会大大地降低人们测量温度的工作量,而且测得的温度数据也更加地精确。
基于以上情况,该文提出了一种基于单片机为核心挂接两个带有I 2C接口的温度传感器组建温度采集系统,并通过液晶显示器显示出来。
系统设计分为硬件电路设计和软件及仿真设计两大部分。
1 系统硬件电路设计
硬件电路的设计包括了温度传感器的选型、单片机的选型、液晶显示器的选型及其部件之间的电连接。
温度传感器选用DS1621温度传感器,DS1621是由DALLAS公司生产的一种功能非常强的数字式温度传感器。通过读取内部的计数值和用于温度补偿的每摄氏度计数值,利用公式计算还可提高温度值的精度。DS1621无需外围元件即可测量温度,将结果以9位数字量(两字节传输)输出,测温范围为-55 ℃~+155 ℃,精度为0.5 ℃,转换时间为1 s,数据的写入和读出通过一个2线I 2C串行接口完成。
I 2C总线(Inter Integrated Circuit BUS,内部集成电路总线)是由PHILIPS公司开发的一种两线式串行总线,用于连接微控制器及其外围设备。I 2C总线由数据线SDA与时钟SCL构成串行总线,可用于发送与接收数据。数据可以在CPU与被控IC芯片之间、IC芯片与IC芯片之间进行双向传送,最高传送速率可100 kb/s。
该设计选择MCS-51系列的一款通用MCU芯片—STC89C52,其本身并没有I 2C接口电路,但可以通过软件来模拟I 2C接口。采用2片DS1621采集温度,将第一片地址连接成000(A2A1A0均接低电平),将第二片地址连接成001(A2A1接低电平,A0接高电平)。STC89C52芯片的并行引脚P2.6和P2.7连接到温度传感器DS1621的SDL和SCL总线。
液晶显示器选用了LCD1602,温度采集的结果通过LCD1602切换轮流显示出来,LCD1602的数据线连接至MCU的P3口。
该系统总体结构如图1所示,以单片机STC89C52为核心,由电源电路、时钟电路、复位电路、温度传感器(2个)和LCD1602液晶显示构成。
2 软件设计及仿真
熟悉LCD1602的命令集及编程思路后,在keil软件上进行软件设计,软件分为多个文件,包含LCD1602和DS1621芯片的驱动程序和主程序。将程序按其逻辑划分为多个模块,这样可以使软件结构看起来更清晰,且容易维护。
主程序设计如下所示。
#include "lcd1602.h"
#include "utility.h"
#include "ds1621.h"
void main()
{
unsigned char s[10],i,a[2]; //数组s存放显示的字符串,a存放DS1621的地址
a[1] = ‘\0; //用于显示
Lcd1602_Initialize();
Lcd1602_Write(1,0,"th temp(c):");
for(i = 0; i < 2; ++i) //初始化2个DS1621
{
Ds1621_SetDeviceAddress(i);
Ds1621_WriteConfig(0x03);
Ds1621_SetTemperatureLimit(40,35);
}
同时在Proteus软件绘制系统硬件电路图,并与Keil软件实现联调,仿真结果如图2和图3所示,图2为第一片温度传感器的温度实时值,图3为第二片温度传感器的温度实时值。
3 结语
该设计实现了两点温度的测量系统,传感器DS1621集成度高,直接输出数字信号,通过I 2C总线实现信号传输,DS1621的选用简化了电路设计、方便了程序设计。以STC89C52单片机为系统核心,使系统结构简单、且易于实现。系统带有的液晶显示器LCD1602使人机交互更加友好。 该系统可应用于诸多温度采集的场合使用。
参考文献
[1] 彭芬.单片机C语言技术应用技术[M].西安:西安电子科技大学出版社,2012.
[2] 梁森.自动检测与转换技术[M].北京:机械工业出版社,2012.
[3] 乌云高娃.C语言程序设计[M].北京:高等教育出版社,2012.
[4] 张萌.单片机应用系统开发综合实例[M].北京:清华大学出版社,2007.