湿度传感器HS1101在智能家居控制系统中的应用
3软件设计
软件设计主要完成对HSl 101在单位时间内的频率测量。软件设计采用端口扫描方式,间隔8S开始测量,测量时间为1S。统计单位时间内脉冲的个数,与表3对照,确定湿度值的范围,并将湿度值通过LCD显示。为了保证测量精度,可以取3次以上测量数据,求平均值后,作为最终送显示数据。微处理器工作晶体选用12.000MHz。程序代码采用嵌入式C语言编写,经在ADSl.2编译环境中进行编译后,移植到微处理器内执行。软件主要测量代码如下,并给出了详细注释。
Do
{
IODIR0=10DIROIRO&OXOfffffbf:
//p0.6设置成输入
d0 //读IO口寄存器
{ if((IOPIN0(10x06))==0x00000000)
break: //检测0电平
} while(1);
Do
{ if((IOPIN0(10x06))!=Ox00000000)
break: //检测l电平
}while(1);
fdat++: //累积1S时间内脉冲个数
} while(pt8s%8==0); //间隔8S测量一次
fdat--;
time(1); //延时必须保留
if((fdat>6033)(fdat6187))rhb=90;
//将测量数值转换为对应百分比,1%一100%
if((fdat>6186)(fdat6331))rhb=80;
if((fdat>6330)(fdat6469))rhb=70;
if((fdat>6468)(fdat6601))rhb=60;
if((fdat>6600)(fdat6729))rhb=50;
if((fdat>6728)(fdat6854))rhb=40;
if((fdat>6853)(fdat6977))rhb=30;
if((fdat>6976)(fdat7101))rhb=20;
if((fdat>7100)(fdat7225))rhb=10;
if(fdat>7224)rhb=00:
lhb=fdat%100: //对测量数值取低两位
time(1); //处理需要等待一段时间,否则lhb=0
if((rhb==60)(rhb==70)(rhb==90))lhb=lhb/
13: //对低两位数值取个位,
else if(rhb==80)lhb=lhb/1 4;
else lhb=lhb/12;
time(1);
rhb=rhb+lhb; //将数据合成一起,送显示
fdat=Ox00000000;//清0,为下次准备
}
4结语
由于HSll01采用独特的电容式单元设计,具有响应速度快、体积小、线性度好、较稳定等优点,我们将HSll01用在智能家居控制系统中,完成对空气湿度的测量,经长期应用,性能达到了稳定可靠,同时也实现了对低成本的要求。
评论