0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于PIC16F84单片机和AD7416温度器件实现温度检测系统的设计

电子设计 来源:单片机与嵌入式系统应用 作者:李学海,董丹,李 2020-04-21 07:59 次阅读

引言

在测量仪器仪表中,温度的检测几乎成为必不可少的部分。传统的模拟温度传感器,如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机,以便进行实时处理、存储和监控。

基于PIC16F84单片机和AD7416温度器件实现温度检测系统的设计

1.1 与PC机的接口简介硬件引脚连接关系如表1所列,其中列出了各引脚的功能。利用PIC16F84端口A的2条引脚与AD7416连接;利用端口B的3条引脚在前端电路与PC机之间传送信息,也可以直接传输给LED数码管驱动电路以供显示。

PIC16F84单片机与PC机的通信接口选用并行打印口,通信方式选用串行同步方式。其中,并行打印口既可以是25芯的D型插口,也可以是36芯的Centronics连接器,如图2所示。串行同步方式通信的信号时序如图3所示。

1.2 AD7416简介

AD7416是一个带有温度超限功能的10位串行数字温度传感器,采用8引脚的SOIC或μSOIC封装。其内部结构如图4所示,引脚布局如图5所示,引脚功能如表2所列。

表2 引脚功能说明

AD7416具有如下特点:10位温度至数字转换器;超温指示端为低电平有效的漏极开路型输出脚,可以实现“线与”接线方式;I2C兼容的串行接口;可选的串行总线地址,允许在单一总线上连接多达8个AD7416;低功耗节电方式(典型2mA);400ms更新速率;55℃~+125℃温度测量范围。AD7416有5个内部寄存器。其中4个是数字寄存器,一个是地址指针寄存器。地址指针寄存器是一个8位寄存器,用于存放指定4个数据寄存器的地址码。对AD7416每一次串行写操作的第一个数据字节是数据寄存器的地址码,这就是随后的数据字节要写入的地址。其实,地址指针寄存器只需最低两位(记作P1和P0)用来选择数据寄存器,如表3所列。

温度值寄存器是一个16位只读寄存器,其高10位以2的补码格式储存由模数转换器产生的10位温度测量读数;配置寄存器是一个8位读/写寄存器,用来设置AD7416的工作方式;THYST回滞温控点设置寄存器是一个16位的读/写寄存器,其高9位存储以2的补码格式表示下限温控点设定值;TOTI上限温控点设置寄存器一个16位读/写寄存器,其高9位存储以2的补码格式表示上限温控点设定值。AD7416上电时地址指针指向温度值寄存器,2个温控点分别指定TOTI=80℃和THYST=75℃。这样的缺省设置使得AD7416可以独立用作一个恒温控制器,而不需要与串行总线连接以及受控于其它主控器件。

AD7416以10位2的补码格式表示温度数值,在16位温度值寄存器中的存储方式如表4所列。表5列出了几个温度数值的编码示例。

为了避免在噪声环境下的误触发,AD7416内部集成了一个故障排队计数器。假若故障排队值设定为4,则必须连续4次(400ms)周期性地测量温度值大于TOTI或者小于THYST预定值,OTI端才送出有效电平。该条件只要不满足,排队计数器就会被自动复位,OTI端也就不会错误地输出有效电平,从而抑制了噪声干扰。

1.3 PIC16F84简介

PIC16F84是18引脚CMOS工艺的RISC微控制器,只有35条指令并且全部指令均为统一长度14位。它有1×14KB的片内Flash程序存储器,36×8KB的通用寄存器和64×8KB的E2PROM数据存储器。它有13个通用I/O引脚。每个引脚有吸纳25mA或输出20mA的能力。PIC16F84还有一个8位的定时器/计数器和一个自带PC时钟源的看门狗监视器。

PIC16F84由于具有Flash工艺特性,所以它极适合于那些可能会经常改动程序的应用。例如,用户可以随时改动已经出厂产品中的单片机程序,以增加或调整产品的功能。另外,它内部的E2PROM型数据存储器不仅有掉电保护数据的功能,更重要的是它是由单片机内部进行控制操作的,即外部电路无法对其进行读写。因此,它有极高的数据保密性。这使得PIC16F84在加密性产品,如智能IC卡、密码锁、电子防盗系统等方面有很广泛的应用。PIC16F84引脚布局如图6所示。

2、 软件简介

为本应用项目开发的软件程序,可以对AD7416内部的寄存器编程,以及从这些数据寄存器读取温度值。PIC16F84扮演着上传下达的角色,单片机端的软件程序采用了汇编语言。AD7416一侧的通信程序,将利用并行端口RA来模拟I2C总线协议,控制AD7416的工作方式,并且读取它的温度测量值。PC机一侧的通信程序,将利用并行端口RB来连接PC的并行打印机口,把所收集到的温度上传给PC机,PC机端的软件程序采用的是C语言

整个软件采用了模块化的程序设计方法。为了实现PIC16F84和AD7416之间I2C协议之下的串行通信,编写了一些专用子程序。这些子程序段包括:符号定义、PIC16F84的端口初始化、启动信号时序产生、停止信号时序产生、发送字节、读取字节、读取温度、向PC机串行被动发送等。具体程序见网站www.dpj.com.cn中的程序段0~程序段8。其中两个比较复杂的程序段还给出了流程图,如图7和图8所示。

2.1 采集温度数据

在发送字节子程序SENDBYTE被调用以后,AD7416就作好了提供温度数据的准备。从AD7416中读取温度数据,既可以1字节形式,也可以2字节形式。以2字节形式会更加精确,在本例中采用的就是2字节形式。这2个字节被读取后,保存到用户定义的2个寄存器HIHGBYTE和LOWBYTE内,之后用户再转移给其它外部器件或设备,以便作进一步地分析等处理。READBYTE子程序的功能相似于SENDBYE子程序的功能。不过,对于读取过程,需要检测SDATA线的状态,并且LOWBYTE寄存器也要作相应改动。

2个字节的读取过程需要主控器(即PIC16F84),在每个字节的读取之后分别输出不同的应答(ACK)信号电平。为了利用同一个数据读取程序,提供2种不同的ACK信号电平,需要查看ACKSTAUS寄存器的bit1,由该位的状态决定所需ACK信号脉冲的类型。

2.2 通过打印口向PC机上传数据

PC机的打印口提供了一种从PIC单片机到PC机传送数据的简易途径,以便在PC机上进行数据的记录和监测等处理。由于对打印机端口功能的讨论超出了本文的关注范围,因此文中只涉及一些必要的相关内容。随后所介绍的仅是一个如何以最少连线(仅需要3条)实现温度数据传送给PC机的简明范例。单片机其它的I/O端口引脚还可以留作它用。单片机向PC机每次传送16位的温度值,并且是以高位(MSB)开始传送的。PC机与单片机之间的三条接口连接,分别定义为SYNC(串行同步)、SDATA(串行数据)和SCLK(串行时钟)。

当PIC16F84从AD7416读取一次温度测量结果,它将把SYNC线电平拉低以通知PC机,并且开始一个计数器的递减过程。如果在该计数器递减到0之前,还没有检测到来自PC机时钟的(SCLK)上升沿,则将SYNC电平恢复到高电平,以中止本次数据的发送。这种设计方法允许在未连接PC机,或PC机端软件没有运行时,仍然能令PIC16F84继续读取温度数据。

当PIC16F84检测到SCLK的上升沿时,就利用温度数据的最高位(MSB)来设置SDATA。随后继续监视SCLK线,并且当该线变低时,一个用户定义的位计数器减1。再等待另一个SCLK上升沿,以便继续发送后续数据,直到16位数据全部发送完毕。在发送完后,将SCLK线拉高以告知PC机此发送过程结束。

3、程序清单

程序清单包括完整的单片机端汇编语言程序和PC机端的C高级语言程序。详见网站www.dpj.com.cn。

4、结语

可以说,本文提供了一个具有借鉴意义的温度检测系统的软硬件开发参考模型。在此基础上,如果PC机端软件利用VB或VC设计成图形界面就更方便于用户操作。如果利用PIC16F84的其它I/O端口引脚再扩展几条I2C总线,并且每条总线上挂接1~8片AD7416,则可以形成一个更加完善的分布式多点温度检测系统。

总之,采用数字温度传感器,可以使设计者完全 打破传统的设计模式(传感器+ADC),从而大大简化了设计方案,提高了电路的可靠性。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620841
  • 检测系统
    +关注

    关注

    3

    文章

    918

    浏览量

    42694
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87216
收藏 人收藏

    评论

    相关推荐

    PIC16F84单片机的中文资料

    PIC16F84单片机的内部硬件资源:学些PIC 单片机,在Microchip 尚未推出其他Flash 系列的情况下,很多菜鸟都是从PIC16F84
    发表于 08-26 15:00

    数字温度传感器AD7416及其应用

    数字温度传感器AD7416 及其应用AD7416 是美国模拟器件公司(ADI)出品的单片数字温度
    发表于 12-05 09:06

    基于PIC16F84的电视机智能跟踪系统设计

    :DSSS.0.2010-02-014【正文快照】:1引言PIC16F84A单片机是Microchip公司生产的PIC系列单片机中的一款中档产品。此型号
    发表于 04-23 11:18

    用AD7416+PIC16F84+PC机构建的测温系统

    在测量仪器仪表中,温度检测几乎成为必不可少的部分。传统的模拟温度传感器,如AD590,因外围电路复杂、需调零等缺点,给应用开发带来一些麻烦。利用数字温度传感器配合
    发表于 03-08 11:44

    PIC单片机16F84的内部硬件资源

      现在我们已经知道要单片机工作,就需用汇编语言编制程序。而对某个PIC单片机编程时,还需对选用的PIC单片机内部硬件资源有所了解。这里介绍
    发表于 09-30 15:47

    如何使用PIC16F84检测产生HCR04传感器的ECO?

    您好,首先,我正在尝试使用一个简单的PIC16F84检测产生HCR04传感器的ECO。但这是行不通的。这是密码。硬件没问题
    发表于 08-16 11:33

    用AD7416+PIC16F84+PC机构建的测温系统

    全面系统地介绍带I2C 总线接口的10 位数字温度传感器AD7416 和RISC 型8 位单片机PIC16F84,以及与PC 机通信的硬件接
    发表于 04-15 09:23 21次下载

    数字式温度传感器AD7416及其应用

    本文详细介绍了新型数字式温度传感器AD7416的功能、特点及使用方法,并给出了应用实例。通过实践应用,可知AD7416 测温范围宽、准确度高、连接及编程简单。关键词: AD7416;I
    发表于 07-03 09:50 49次下载

    PIC16F84单片机的内部硬件资源

    PIC16F84 单片机的内部硬件资源:学些PIC 单片机,在Microchip 尚未推出其他Flash 系列的情况下,很多菜鸟都是从PIC16F8
    发表于 08-25 18:35 94次下载

    数字温度传感器AD7416及其应用

    AD7416 是美国模拟器件公司(ADI)出品的单片数字温度传感器,其片内寄存器可以设置高/低温度门限,并可通过I2C 接口对内部寄存器进行
    发表于 11-26 14:54 39次下载

    温度传感器AD7416在多点温度测量系统中的应用

    介绍数字温度传感器在多点温度测量系统中的应用, 给出系统的硬件结构及软件框图, 使用AD7416 进行
    发表于 05-17 17:14 66次下载
    <b class='flag-5'>温度</b>传感器<b class='flag-5'>AD7416</b>在多点<b class='flag-5'>温度</b>测量<b class='flag-5'>系统</b>中的应用

    温度传感器AD7416的工作原理及应用解析

    8片AD7416挂接在同一个串行总线上。该温度传感器可广泛应用于数据采集系统中的环境温度监测、工业过程控制、电池充电以及个为计算机等系统
    发表于 03-08 14:25 4157次阅读
    <b class='flag-5'>温度</b>传感器<b class='flag-5'>AD7416</b>的工作原理及应用解析

    采用单片机AT89C2051和AD7416芯片实现多路温湿度循环检测系统的设计

    单片机AT89C2051来实现AD7416的信号采集和输出控制,硬件设计简单可靠,系统温度节点可扩展性强。为确保
    发表于 04-12 11:55 1580次阅读
    采用<b class='flag-5'>单片机</b>AT89C2051和<b class='flag-5'>AD7416</b>芯片<b class='flag-5'>实现</b>多路温湿度循环<b class='flag-5'>检测</b><b class='flag-5'>系统</b>的设计

    AD7416通过仿真I²C™接口连接到PIC16F84

    AD7416通过仿真I²C™接口连接到PIC16F84
    发表于 04-19 12:15 6次下载
    <b class='flag-5'>AD7416</b>通过仿真I²C™接口连接到<b class='flag-5'>PIC16F84</b>

    AD7416/AD7417/AD7418:10位数字温度传感器(AD7416)和4/1通道ADC数据表

    AD7416/AD7417/AD7418:10位数字温度传感器(AD7416)和4/1通道ADC数据表
    发表于 05-14 19:31 0次下载
    <b class='flag-5'>AD7416</b>/AD7417/AD7418:10位数字<b class='flag-5'>温度</b>传感器(<b class='flag-5'>AD7416</b>)和4/1通道ADC数据表