温度和湿度是标定环境不可缺少的参数。
1.1系统基本构成
温湿度丈量仪主要包括两个部分:温度丈量和湿度测量。其基本构成如图1所示。该系统利用凌阳16位单片机SPCE061A 作为系统的控制中心,采用电容式湿度传感器HS1101和一线制数字温度传感器DS18B20将测量到温度值和湿度值送入单片机中,经过数据处置后,进行实时显示,并通过按键控制丈量结果的语音播放。
1.2SPCE061A 单片机
SPCE061A 单片机是凌阳公司以16位微处理器μ’NSPTM为核心生产的一种16位微控制器,其时钟频率范围为0.32MHZ49.125MHZ具有较高的处置速度,能快捷的处置各种复杂的数字信号,内置2KRA M和32K内存FLA SH具有14个中断源,32位可编程的并行I/O口,两个16位可编程定时器/计数器,7通道10位A/D转换器和单通道声音A/D转换器,双通道10位D/A 转换器和可编程音频处置,具有较强的语音处置功能[2]
1.3温度丈量
温度传感器选择DA LLA S公司生产的一线制数字温度传感器DS18B20具有3引脚TO-92小体积封装形式;温度丈量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
由于DS18B20只有一个串行通信接口,与单片机的连接电路非常简单,只需和单片机的一个I/O端口连接即可,本系统选择了IOB7端口,其连接电路图如图2所示。DS18B20I/O口属于漏极开路输出,外接上拉电阻后常态下呈高电平。该器件内含寄生电源,其供电方式可以选择寄生电源方式,也可以选用外部电源[3]为方便起见,采用外部电源供电。
1.4湿度丈量
湿度是指空气中水蒸气的含量,其表示方法有绝对湿度、相对湿度、露点等。日常生活中所指的湿度是相对湿度,即空气中所含水蒸气量(水蒸气压)与其相同情况下饱和水蒸气量(饱和水蒸气压)百分比,用%RH表示[3]
电容式湿度传感器HS1101具有检测速度快、高精度、高可靠性、临时稳定性和使用方便、体积小等特点,适用于一些对精度要求不高的场所。不同的相对湿度中传感器的电容值不同,单片机不能直接读电容值,需要外接测量电路。电容式传感器的丈量电路有电压输出式和频率输出式两种,考虑到单片机内有两个定时/计数器,丈量频率比较方便,选用频率输出丈量电路,如图3所示。采用555定时器和湿度传感器HS1101以及一些电阻构成多谐振荡器电路,发生的振荡频率由下式计算。
由湿度传感器HS1101工作原理知道,测得的频率值与相对湿度值有关,关系如下式:
其中,为25℃,55%RH时电路的参考频率。
1.5显示及键盘
系统采用液晶显示模块RT12864M显示温度值和湿度值,该模块有并行和串行两种连接方式,考虑到传输速率,令PSB端接高电平,使用8位并行口进行指令/数据传输。并行口DB0DB7与单片机的IOA 0IOA 7相连接,使能端E与IOB6连接,指令/数据选择端与IOB4连接,读/写选择端与IOB5连接,另外每个端口都需要外接上拉电阻,如图4所示。单片机通过IOB4IOB6对显示模块进行控制,依照液晶显示模块的读写时序编程,使显示模块正常显示温度值和湿度值。
系统的语音提示功能利用按键来控制,连接电路简单,按键一端接上拉电阻,另一端与单片机IOB3相连,按下键时,IOB3端口输入为高电平。
凌阳单片机支持C语言与汇编语言之间的相互调用,为提高程序的可读性与移植性,同时也便于调试,采用模块化的方法编写顺序。系统软件包括主程序、温度丈量子程序、湿度丈量子程序、键盘扫描子程序、中断子程序、语音播放子程序。主顺序中依次调用这些子程序,实现系统功能,主顺序流程图见图5
主程序中,首先要对单片机端口进行初始化,将IOA 端口设置为高电平输出,IOB端口设置为低电平输出。然后分别调用丈量温度子顺序和丈量湿度子程序,完成丈量和显示大约需要1秒钟的时间,然后再扫描键盘,判断是否进行语音播放。因为单片机内的看门狗计数器每0.75时间内会使系统自动复位,为防止该情况发生,需要在0.75内将看门狗清零。
温度丈量子顺序首先对DS18B20初始化,如果计算机检测到单总线上有DS18B20器件存在就发出跳过ROM命令(CCH当该命令被胜利执行后,主机发出温度转换命令(44H延时一段时间,待转换结束后,再重新初始化,跳过ROM命令,然后主机发出读存储器命令(BEH得到温度数据。为了缩短传感器数据的转换时间,将传感器的分辨率改为9位(出厂时默认分辨率为12位)这样温度转换时间97.5m精度0.5℃。