濕度傳感器HS1101在智能家居控制系統(tǒng)中的應(yīng)用
3軟件設(shè)計
軟件設(shè)計主要完成對HSl 101在單位時間內(nèi)的頻率測量。軟件設(shè)計采用端口掃描方式,間隔8S開始測量,測量時間為1S。統(tǒng)計單位時間內(nèi)脈沖的個數(shù),與表3對照,確定濕度值的范圍,并將濕度值通過LCD顯示。為了保證測量精度,可以取3次以上測量數(shù)據(jù),求平均值后,作為最終送顯示數(shù)據(jù)。微處理器工作晶體選用12.000MHz。程序代碼采用嵌入式C語言編寫,經(jīng)在ADSl.2編譯環(huán)境中進行編譯后,移植到微處理器內(nèi)執(zhí)行。軟件主要測量代碼如下,并給出了詳細注釋。
Do
{
IODIR0=10DIROIRO&OXOfffffbf:
//p0.6設(shè)置成輸入
d0 //讀IO口寄存器
{ if((IOPIN0(10x06))==0x00000000)
break: //檢測0電平
} while(1);
Do
{ if((IOPIN0(10x06))!=Ox00000000)
break: //檢測l電平
}while(1);
fdat++: //累積1S時間內(nèi)脈沖個數(shù)
} while(pt8s%8==0); //間隔8S測量一次
fdat--;
time(1); //延時必須保留
if((fdat>6033)(fdat6187))rhb=90;
//將測量數(shù)值轉(zhuǎn)換為對應(yīng)百分比,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: //對測量數(shù)值取低兩位
time(1); //處理需要等待一段時間,否則lhb=0
if((rhb==60)(rhb==70)(rhb==90))lhb=lhb/
13: //對低兩位數(shù)值取個位,
else if(rhb==80)lhb=lhb/1 4;
else lhb=lhb/12;
time(1);
rhb=rhb+lhb; //將數(shù)據(jù)合成一起,送顯示
fdat=Ox00000000;//清0,為下次準備
}
4結(jié)語
由于HSll01采用獨特的電容式單元設(shè)計,具有響應(yīng)速度快、體積小、線性度好、較穩(wěn)定等優(yōu)點,我們將HSll01用在智能家居控制系統(tǒng)中,完成對空氣濕度的測量,經(jīng)長期應(yīng)用,性能達到了穩(wěn)定可靠,同時也實現(xiàn)了對低成本的要求。
評論