此电子温度计选用温度传感器实时采集当前温度,同时辅之以存储器和时钟记录温度值及其对应时间,可满足室内温度监测和气温研究记录的基本需要。该温度计的主要器件均选用FC总线器件,各项控制任务均在2根总线上完成,管脚利用率高。可扩展性强。通过本实例的练习,读者可以全面学握FC总线的技术原理与实际应用。需要准备89C52单片机一片。数字温度传感器LM75A一片。存储器AT24C02一片,实时时钟芯片×1203一片,LCD液晶显示器MGL.S一19264一块,按键开关4个,32.768k~1z和12M晶振各1个,三端稳压块‘7805A一块,如果扩展超温报警和闹铃功能则需蜂呜器一个,以及电容、电阻若干。
硬件框图如下图所示,该多功能测温系统以单片机为核心,通过FC总线完成温度读取、时间设定与提取、数据存储与查询等功能,由按键和LCD显示器进行人机交互。其中数字温度传感器LM75A不但可进行温度实时采样,还能设置温度告警;AT24C02存储器可根据用户控制进行手动存储,也可设定存储周期让程序自动存储,并可随时查询历史温度记录,掉电后数据不丢失;X1203实时时钟芯片用于提供温度记录点的时间。还可作时钟、日历和闹钟使用。
一、IIC总线
IIC总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。各种被控制电路均并联在这条总线上。其优点是连接简单、结构紧凑、并支持多主控。
FC总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。开始和结束信号见下图。
开始信号:SCL一为高电平时,SDA由高电平向低电平跳变,开始传送数据。如下图中的①所示。
结束信号:SCL一为高电平时,SDA由低电平向高电平跳变,结束传送数据。如下图中的②所示。
应答信号:主机作为接收端接收到8bit数据后,需将SDA拉低,表示已收到数据。
如果主机进行数据发送,则需等待对方发出应答信号后,才能继续发送数据。
每个字节有8位数据,伴随8位数据在SDA的发送,SCL也同步地输出8个脉冲,对于IIC总线的读写也比较简单,通常有以下几种情形:
1.单字节写操作
START一>发送器件地址一>ACK一>发送字节地址一>ACK一>发送数据一>ACK一>STOP
2.单字节读操作START一>发送器件地址(写)一>ACK一>发送字节地址一>ACK一>START一>发送器件地址(读)一>ACK一>接收数据一>NOACK一>STOP
3.连续字节读操作START一>发送器件地址(写)一>ACK一>发送字节首地址一>ACK一 >START一>发送器件地址(读)一>ACK一>接收数据一>ACK一>接收数据一>ACK…..接收数据(最后字节J一>NOACK一>STOP
需要指出的是,为了结束读操作,主机必须在第9个时钟周期间发出停止条件.或者在第9个时钟周期内保持SDA为高电平(NOACK函数),然后发出停止条件。数字温度传感器LM75ALM75A是一个高速IIC接口的温度传感器。可以在一55~C一+125~C的温度范围内将温度直接转换为数字信号,并实现0.125~C的精度;可以对其4个寄存器设置不同的工作模式;同一总线上可同时连接8个器件而不发生地址冲突;LM75A还包含一个开漏输出(OS),当温度超过编程限制的值时该输出有效。其引脚图如下图所示。
LM75A地址的高4位预先设置为‘1001’,接着的3位可由地址引脚A2、A1和A0的逻辑电平来进行片选。最后1位为读写位,为1表示读操作,为0表示写操作。需要注意的是,由于输入管脚SCt一、SDA、A2一A0内部无偏置,因此在任何应用中它们都不能悬空。举例来说,假如A2、A1接地。A0接高电平,要进行写操作,应执行selldbyte(0x92):
即发送“10010010’,其中‘1001’为LM75A预设,‘001’分别对应A2、A1、A0,最后的‘0’表示写操作。
LM75A温度寄存器是一个只读寄存器.该寄存器地址为0x00,包含2个8位的数据字节.由一个高数据字节(MS)和一个低数据字节(LS)组成。这两个字节中只有11位用来存放分辨率为0.125~C的Temp数据(以二进制补码数据的形式),如下图所示。
根据11位的Temp数据来计算Ternp值的方法如下:
①若D10=0,温度值(℃)=+(Temp数据)×O.125℃:②若D10=1。温度值(℃)=一(Temp数据的二进制补码)×O.125℃。
另外,LM75A还有一个配置寄存器(地址0x01)、一个滞后寄存器丁hyst(地址0x02)和一个过温关断阈值寄存器Tos(地址0x03)。配置寄存器用来对OS端和工作模式进行配置;滞后寄存器也称为设定点寄存器。提供了温度控制范围的下限温度;过温关断寄存器提供了温度控制范围的上限温度。每次转换结束后。Temp数据(取其高9位)将会与存放在该寄存器中的数据相比较,当环境温度高于此温度(默认为80~C)的时候。LM75A将根据当前模式(比较、中断)控制OS引脚做出相应反应。
TempMS字节 | TempLS字节 | MSB | | | | | | | LSB | MSB | | | | | | | LSB | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | Temp数据(11位) | 未使用 | | MSB | | | | | | | | | | LSB | | | | | | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | DO | × | × | X | × | X |
|