版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于89C51單片機SHT11溫濕度傳感器電路圖于程序作者:張志杰SHT11.h文件:#ifndef__SHT11_H__
#define__SHT11_H__
/*************************
SHT11相關(guān)命令
**************************/
#defineucharunsignedchar
#defineuintunsignedint
#defineTEM_TEST0x03//溫度檢測命令
#defineHUM_TEST0x05//濕度檢測命令
#defineREG_READ0x07//讀寄存器
#defineREG_WRITE0x06//寫寄存器
#defineFUNCTION_SET0x01//設置SHT11的工作精度為8位/濕度12位溫度
/**************************
SHT11端口定義
***************************/
sbitSHT11_DATA=P3^1;
sbitSHT11_SCK=P3^0;
sbitP33=P3^3;
sbitP32=P3^2;
sbitP36=P3^6;
sbitP37=P3^7;
ucharflag_tempeture=0;//顯示溫度位置的標志
ucharflag_humidity=0;//顯示濕度位置的標志
ucharcodestr1[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//溫度圖標
ucharcodestr6_sht11[]="%RH";
ucharcodestr4_sht11[]="humi=";
ucharcodestr2_sht11[]="temp=";
ucharcodestr7_sht11[]="";//清除沒不要的顯示
/***************************
函數(shù)名稱:Delay()
函數(shù)功能:SHT11內(nèi)部延時
****************************/
voidDelay()
{
;
;
}
/***************************
函數(shù)名稱:Delay_Ms()
函數(shù)功能:SHT11檢測等待延時
函數(shù)說明:11ms/55ms/210ms分別對應8位/12位/14位測量結(jié)果
對應的形參為N則延時Nms
****************************/
voidDelay_Ms(uintms)//ms延時函數(shù)(AT89C51@11.0592MHz)
{
uinti;
ucharj;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
/**************************
函數(shù)功能:SHT11啟動時序
***************************/
voidSHT11_Start()
{
SHT11_SCK=1;
SHT11_DATA=1;
Delay();
SHT11_DATA=0;
}
/***************************************
函數(shù)名稱:ucharSHT11_Read_Register(ucharcommand)
函數(shù)說明:command為REG_READ0x07//讀寄存器
返回值為狀態(tài)寄存器的值
位6顯示當前檢測完一次數(shù)據(jù)后電源供電情況
當位6為0時表明VDD>2.47V當位6為1時表明VDD<2.47V即電量不足
位0表明當前的測量分辨率
當位0為1時表明測量精度:8位/濕度12位溫度
當位0為0時表明測量精度:12位濕度14位溫度
默認為0
*******************************************/
ucharSHT11_Read_Register(ucharcommand)
{
uchardat;
SHT11_Start();
SHT11_Sendbyte(command);
SHT11_Answer();
dat=SHT11_Receivebyte();
SHT11_End();
return(dat);
}
/***************************************
函數(shù)名稱:SHT11_Measure(ucharcommand,uinttime);
函數(shù)功能:設置SHT11檢測功能,并返回相應的檢測結(jié)果
函數(shù)說明:command形參用于設定溫度檢測還是濕度檢測,
time形參用于設定檢測過程中的等待時間,以確定檢測結(jié)果的位數(shù)
11ms/55ms/210ms分別對應8位/12位/14位
****************************************/
uintSHT11_Measure(ucharcommand,uchartime)
{
uintdat=0;
uchardata_high,data_low;
SHT11_Start();
SHT11_Sendbyte(command);
SHT11_Answer();
Delay_Ms(time);
SHT11_Test_Finish();
data_high=SHT11_Receivebyte();
MCU_Answer();
data_low=SHT11_Receivebyte();
SHT11_End();
dat=(dat|data_high);
dat=(dat<<8)|data_low;
return(dat);
}
/****************************************
函數(shù)名稱:Convert_Tempeture12bit(uintdat);
函數(shù)功能:將檢測到的數(shù)據(jù)轉(zhuǎn)化為相應的溫度數(shù)據(jù)
函數(shù)說明:溫度轉(zhuǎn)換公式--T=d1+d2*SOt
公式中的參數(shù)d1=-40,d2=0.04
適用于12位測量精度
*/
floatSHT11_Convert_Tempeture12bit(uintdat)
{
floattempeture1;
tempeture1=-40+0.04*dat;
if(tempeture1>23)
tempeture1=tempeture1+1;
if(tempeture1>55)
tempeture1=tempeture1+1;
if(P37==1)
{
if(tempeture1>=16&&tempeture1<30)
{
P33=1;
P32=0;
}
else
{
P33=0;
P32=1;
}
}
return(tempeture1);
}
/*****************************************
函數(shù)名稱:SHT11_Convert_Humidity8bit(uintdat,floattemp)
函數(shù)功能:將檢測到的數(shù)據(jù)轉(zhuǎn)化為相應的濕度數(shù)據(jù)
函數(shù)說明:相對濕度轉(zhuǎn)換公式-----RHline=C1+C2*SOrh+C3*SOrh*SOrh(檢測數(shù)據(jù)的線性化SOrh為單片機接收到的數(shù)據(jù))
-----RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline
公式中的參數(shù):C1=-4,C2=0,648,C3=-0.00072
t1=0.01,t2=0.00128
適用于8位測量精度
*/
uintSHT11_Convert_Humidity8bit(uintdat,floattemp)
{
floatRHline,RHtrue;
uintr;
RHline=-4+0.648*dat-0.00072*dat*dat;
RHtrue=(temp-25)*(0.01+0.00128*dat)+RHline;
r=(RHtrue-3)*10+0.5;
if(P37==0)
{
if(r>=400&&r<600)
{
P33=1;
}
else
{
P33=0;
}
if(r>=600)
{
P32=1;
}
else
{
P32=0;
}
}
return(r);
}
#endifDisplay.c文件:#include<reg52.h>
#include"SHT11.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineTEM_TEST0x03//溫度檢測命令
#defineHUM_TEST0x05//濕度檢測命令
#defineREG_READ0x07//讀寄存器
#defineREG_WRITE0x06//寫寄存器
#defineFUNCTION_SET0x01//設置SHT11的工作精度為8位/濕度12位溫度
ucharDispData[4]={0,1,2,3};
codeucharDispSegmentP0[10]={0x3f,0x06,0x1b,0x0f,0x26,0x2d,0x3d,0x07,0x3f,0x2f};
codeucharDispSegmentP2[10]={0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x00,0x22,0x22};
//0123456789%
codeucharDispCtrl[4]={0xef,0xdF,0xbf,0x7F};
sbitP16=P1^6;
sbitP26=P2^6;
sbitP34=P3^4;
voidTemp_delay(unsignedintj)
{
uchari;
for(i=100;i>0;i--)
{
for(j;j>0;j--);
}
}
voidShow(uchar*Buffer)
{
uchari;
for(i=0;i<4;i++)
{
P1=DispCtrl[i];
P0=DispSegmentP0[*Buffer];
P2=DispSegmentP2[*Buffer];
if(P16==0)
P26=1;
Temp_delay(2);
Buffer++;
}
}
voidDispConvert(uchar*DispAddr,uintTemp2Con)
{
DispAddr[0]=Temp2Con/1000;
DispAddr[1]=(Temp2Con-DispAddr[0]*1000)/100;
DispAddr[2]=(Temp2Con-DispAddr[0]*1000-DispAddr[1]*100)/10;
DispAddr[3]=Temp2Con-DispAddr[0]*1000-DispAddr[1]*100-DispAddr[2]*10;
}
voidmain()
{
uinttemp;
uintdat;
uintHum;
//floatf;
while(1)
{
Show(DispData);
SHT11_Write_Register(REG_WRITE,FUNCTION_SET);
temp=SHT11_Measure(TEM_TEST,0x37);
temp=SHT11_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人舊房屋翻新改造工程承包合同3篇
- 2025年度個人理財產(chǎn)品分紅協(xié)議
- 二零二四全新打印機租賃合作協(xié)議書范本3篇
- 2025年度鋰電池電芯代工合作協(xié)議書4篇
- 二零二五年度美容院品牌形象設計及使用權(quán)授權(quán)合同
- 二零二五年度特殊面料窗簾定制合同3篇
- 2025年度實習生勞動合同終止及培訓費用退還協(xié)議4篇
- 二零二五年度木板電商平臺入駐及銷售合同4篇
- 2024項目部治理人員安全培訓考試題(各地真題)
- 2023年-2024年崗位安全教育培訓試題(答案)
- 國際貿(mào)易地理 全套課件
- GB/T 20878-2024不銹鋼牌號及化學成分
- 診所負責人免責合同范本
- 2024患者十大安全目標
- 印度與阿拉伯的數(shù)學
- 會陰切開傷口裂開的護理查房
- 實驗報告·測定雞蛋殼中碳酸鈣的質(zhì)量分數(shù)
- 部編版小學語文五年級下冊集體備課教材分析主講
- 電氣設備建筑安裝施工圖集
- 《工程結(jié)構(gòu)抗震設計》課件 第10章-地下建筑抗震設計
- 公司法務部工作細則(草案)
評論
0/150
提交評論