单片机和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线,硬件接口电路非常简单。需要注意的是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHTll之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求,当工作电压高于4.5 V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率为1 MHz。由于所用单片机不具备I2C总线接口,故使用单片机通用I/O口线来虚拟I2C总线,并利用RA0口来虚拟数据线DATA,RA1口线来虚拟时钟线,并在DATA端接入一只10kΩ的上拉电阻,同时,在VDD及GND端接入一只0.1μF的去耦电容。
硬件连接如图2所示。
1.2 162字符型液晶显示模块
162字符型液晶显示模块是发展比较成熟的一种液晶显示屏,应用相当广泛。它是一类专用于显示字母、数字、符号等的点阵液晶显示模块,可显示两行,每行可以显示16个字符,162字符型液晶显示模块应用到温湿度感测系统中显示温湿度,直观方便又节约成本。
该显示屏是一个以若干5x8或5x11点阵块组成的显示字符群。其中,字符群中的每一个字符块为一个字符单位,字符间的点距和行距均为一个点的宽度。它的内部有字符发生器CGROM,可以显示160个5x7和32个5x10点阵字符,具有64个字节的CGRAM,可以自定义8个5x8或4个5x11点阵字符,有80个显示存储器DDRAM的地址。
162字符型液晶显示模块由16个引脚组成,具体的引脚功能如表1所示。
控制器接口信号说明:也就是RS、R/W和E信号的配合选择决定控制接口的4种模式,如表2所示。
162模块与单片机的接口电路如图3所示。
硬件将162模块的数据总线的低4位接为常态,在软件中设置数据总线长度为4位,4位数据总线时序图如图4所示。
2 系统软件设计
2.1 温湿度读取
单片机和温湿度传感器通信采用串行二线接口SCK和DATA,该二线串行通信协议和I2C协议是不兼容的。由于采用二线串行接口,对于SHTll的操作按照严格时序,共有5条用户命令,分别是测量温度命令(03H)、测量湿度命令(05H)、读寄存器状态命令(07H)、写寄存器状态命令(06H)和软启动命令(1EH)。
单片机发出启动命令,随后发出一个后续8位命令码,该命令码包含3个地址位(芯片设定地址为000)和5个命令位,发送完该命令码,将DATA总线设为输入状态等待SHTll的响应,SHTll接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为芯片的ACK;在第9个时钟下降沿之后,芯片释放DATA(恢复高电平)总线;释放总线后,开始测量当前湿度,测量结束后,再次将DATA总线拉为低电平;单片机检测到DATA总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;芯片在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,单片机将DATA总线拉低作为ACK信号,然后释放总线DATA,在随后8个SCK周期下降沿,芯片发出低字节数据;接下来的SCK下降沿,单片机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SCK下降沿芯片发出CRC校验数据,单片机不予应答(NACK)则表示测量结束。CRC寄存器通过计算一个多项式(x8+x5+x4)之和来判定测量过程是否发生错误,一旦发现错误,单片机就发送软启动命令,重新进行测量。如果不使用CRC校验,单片机可以在测量值LSB后保持应答信号ACK高电平,来终止通信。SHTll在测量和通信完成后会自动返回睡眠模式。[page]
下面给出与上述硬件电路配套的PIC16的温度传感器读取程序。
RETURN
2.2 温度和湿度值的计算
2.2.1 湿度线性补偿和温度补偿
SHTll可通过DATA数据总线直接输出数字量湿度值。该湿度值称为“相对湿度”,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:
式中,RHlineer为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数。
由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数。
2.2.2 温度值输出
由于SHTll是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。实际温度值可由下式算得:
式中,d1和d2为特定系数,d1的取值与SHTll工作电压有关,d2的取值则与SHTll内部A/D转换器采用的分辨率有关。
2.3 温湿度显示
计算出温度、湿度值后,在162字符型液晶显示模块上显示出来,屏幕第一行显示温度值:“TEM:……”第二行显示湿度值:“HUM:……”。程序设定每5 min更新一次温湿度。显示流程图如图6所示。
3 结论
由PIC单片机和温湿度数字传感器SHTll以及162液晶显示模块组成的温湿度感测系统,充分利用了SHTll的特点,又对温湿度测量功能进行了扩充,使其具有显示直观、运行可靠、扩充方便等优点。利用可控的加热制冷设备对该系统性能进行了测试,实际结果表明:测温范围为-40~+100℃,误差不超过0.5℃,湿度测量范围是2~98%RH,误差不超过4%RH(室温25℃时测量),达到了预期性能指标,满足实际应用要求。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』