用AD7416+PIC16F84+PC机构建的测温系统
发布时间:2007/4/23 0:00:00 访问次数:549
关键词:AD7416 PIC16F84 I2C总线 单片机
引言
在测量仪器仪表中,温度的检测几乎成为必不可少的部分。传统的模拟温度传感器,如AD590,因外围电路复杂、需调零等缺点,给应用开发带来一些麻烦。利用数字温度传感器配合单片机来设计各种控制系统,越来越多受到业内人士的推崇。美国模拟器件公司生产的AD7416是一款功能较多的温度器件,它在一个芯片上集成了I2C总线接口、温度传感器、10位数摸转换器和窗口门限温度控制器等功能。它与其它数字温度传感器相比具有体积小、编程简单等优点。
在本文介绍的温度检测系统中,其前端温度检测应用的是AD7416,控制器应用的是PIC16F84,将探测到的温度上传到上位机(PC机)。由于PIC16F84单片机是一款廉价的低端型号,其内部没有配置I2C接口和UART接口等外围模块,因此需要利用虚拟技术来模拟I2C和UART的功能,分别与下位器件AD7416和上位机进行通信。文后提供了完整的算法设计和程序清单。在此程序基础上稍加改动也可以适用于其它PIC单片机,甚至是其它厂家的单片机,来实现同样的功能。故本文具有比较广泛的启发性和实用价值。
1 硬件简介
硬件接线图如图1所示,前端电路主要由1片10位串行数字温度传感器AD7416和1片RISC型PIC16F84微控制器组成,上位机由PC兼容机担当。不过,上位机不是必须的,图1中给出了可选的相连PC的串行接口。通过该串口,可把检测到的现场温度值上传到PC机,以便进行实时处理、存储和监控。
1.1 与PC机的接口简介
硬件引脚连接关系如表1所列,其中列出了各引脚的功能。利用PIC16F84端口A的2条引脚与AD7416连接;利用端口B的3条引脚在前端电路与PC机之间传送信息,也可以直接传输给led数码管驱动电路以供显示。
表1 三者相互连接的对应关系
SCLPORT A,0
PORT A,1 PORT B,0
PORT B,1
PORT B,2SDATA
SCLK
SYNC
PIC16F84单片机与PC机的通信接口选用并行打印口,通信方式选用串行同步方式。其中,并行打印口既可以是25芯的D型插口,也可以是36芯的Centronics连接器,如图2所示。串行同步方式通信的信号时序如图3所示。
1.2 AD7416简介
AD7416是一个带有温度超限功能的10位串行数字温度传感器,采用8引脚的SOIC或μSOIC封装。其内部结构如图4所示,引脚布局如图5所示,引脚功能如表2所列。
表2 引脚功能说明
功 能 说 明
SDA1I/OI2C总线串行数据输入/输出传送线(开漏型)SCL2II/C总线串行时钟线(开漏型)OTI3O温度超限指示脚,低电平有效(开漏型)GND4-电源接地脚A2~A05~7I串行总线地址低3位连线编程脚VDD8-电源正极,工作电压范围2.7V~5.5VAD7416具有如下特点:10位温度至数字转换器;超温指示端为低电平有效的漏极开路型输出脚,可以实现“线与”接线方式;I2C兼容的串行接口;可选的串行总线地址,允许在单一总线上连接多达8个AD7416;低功耗节电方式(典型2mA);400ms更新速率;55℃~+125℃温度测量范围。
AD7416有5个内部寄存器。其中4个是数字寄存器,一个是地址指针寄存器。地址指针寄存器是一个8位寄存器,用于存放指定4个数据寄存器的地址码。对AD7416每一次串行写操作的第一个数据字节是数据寄存器的地址码,这就是随后的数据字节要写入的地址。其实,地址指针寄存器只需最低两位(记作P1和P0)用来选择数据寄存器,如表3所列。
表3 4个数据寄存器的地址分配
温度值寄存器是一个16位只读寄存器,其高10位以2的补码格式储存由模数转换器产生的10位温度测量读数;配置寄存器是一个8位读/写寄存器,用来设置AD
关键词:AD7416 PIC16F84 I2C总线 单片机
引言
在测量仪器仪表中,温度的检测几乎成为必不可少的部分。传统的模拟温度传感器,如AD590,因外围电路复杂、需调零等缺点,给应用开发带来一些麻烦。利用数字温度传感器配合单片机来设计各种控制系统,越来越多受到业内人士的推崇。美国模拟器件公司生产的AD7416是一款功能较多的温度器件,它在一个芯片上集成了I2C总线接口、温度传感器、10位数摸转换器和窗口门限温度控制器等功能。它与其它数字温度传感器相比具有体积小、编程简单等优点。
在本文介绍的温度检测系统中,其前端温度检测应用的是AD7416,控制器应用的是PIC16F84,将探测到的温度上传到上位机(PC机)。由于PIC16F84单片机是一款廉价的低端型号,其内部没有配置I2C接口和UART接口等外围模块,因此需要利用虚拟技术来模拟I2C和UART的功能,分别与下位器件AD7416和上位机进行通信。文后提供了完整的算法设计和程序清单。在此程序基础上稍加改动也可以适用于其它PIC单片机,甚至是其它厂家的单片机,来实现同样的功能。故本文具有比较广泛的启发性和实用价值。
1 硬件简介
硬件接线图如图1所示,前端电路主要由1片10位串行数字温度传感器AD7416和1片RISC型PIC16F84微控制器组成,上位机由PC兼容机担当。不过,上位机不是必须的,图1中给出了可选的相连PC的串行接口。通过该串口,可把检测到的现场温度值上传到PC机,以便进行实时处理、存储和监控。
1.1 与PC机的接口简介
硬件引脚连接关系如表1所列,其中列出了各引脚的功能。利用PIC16F84端口A的2条引脚与AD7416连接;利用端口B的3条引脚在前端电路与PC机之间传送信息,也可以直接传输给led数码管驱动电路以供显示。
表1 三者相互连接的对应关系
SCLPORT A,0
PORT A,1 PORT B,0
PORT B,1
PORT B,2SDATA
SCLK
SYNC
PIC16F84单片机与PC机的通信接口选用并行打印口,通信方式选用串行同步方式。其中,并行打印口既可以是25芯的D型插口,也可以是36芯的Centronics连接器,如图2所示。串行同步方式通信的信号时序如图3所示。
1.2 AD7416简介
AD7416是一个带有温度超限功能的10位串行数字温度传感器,采用8引脚的SOIC或μSOIC封装。其内部结构如图4所示,引脚布局如图5所示,引脚功能如表2所列。
表2 引脚功能说明
功 能 说 明
SDA1I/OI2C总线串行数据输入/输出传送线(开漏型)SCL2II/C总线串行时钟线(开漏型)OTI3O温度超限指示脚,低电平有效(开漏型)GND4-电源接地脚A2~A05~7I串行总线地址低3位连线编程脚VDD8-电源正极,工作电压范围2.7V~5.5VAD7416具有如下特点:10位温度至数字转换器;超温指示端为低电平有效的漏极开路型输出脚,可以实现“线与”接线方式;I2C兼容的串行接口;可选的串行总线地址,允许在单一总线上连接多达8个AD7416;低功耗节电方式(典型2mA);400ms更新速率;55℃~+125℃温度测量范围。
AD7416有5个内部寄存器。其中4个是数字寄存器,一个是地址指针寄存器。地址指针寄存器是一个8位寄存器,用于存放指定4个数据寄存器的地址码。对AD7416每一次串行写操作的第一个数据字节是数据寄存器的地址码,这就是随后的数据字节要写入的地址。其实,地址指针寄存器只需最低两位(记作P1和P0)用来选择数据寄存器,如表3所列。
表3 4个数据寄存器的地址分配
温度值寄存器是一个16位只读寄存器,其高10位以2的补码格式储存由模数转换器产生的10位温度测量读数;配置寄存器是一个8位读/写寄存器,用来设置AD