Ⅰ 在STM32溫濕度實驗中,程序中間STH11的SCK引腳怎麼配置
SCK 用於微處理器與SHT1x 之間的通訊同步。根普通IO口一樣,直接當做普通IO口設置為輸出引腳即可
可參照下面的LED燈初始化程序
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //LED0-->PC.4¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOC.4
GPIO_SetBits(GPIOC,GPIO_Pin_4); //PC.4 Êä³ö¸ß
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.2 3
Ⅱ 關於SHT11的編程
SHT11是瑞士Sensirion公司生產的具有I2C匯流排介面的單片全校準數字式相對濕度和溫度感測器。該感測器採用獨特的CMOSens TM技術,具有數字式輸出、免調試、免標定、免外圍電路及全互換的特點。文中對感測器的性能特點、介面時序與命令進行了詳細的闡述,給出了SHT11與單片機的介面電路及相應程序。 關鍵詞:數字式;溫濕度感測器;I2C匯流排;單片機1 概述溫濕度的測量在倉儲管理、生產製造、氣象觀測、科學研究以及日常生活中被廣泛應用,傳統的模擬式濕度感測器一般都要設計信號調理電路並需要經過復雜的校準和標定過程,因此測量精度難以保證,且在線性度、重復性、互換性、一致性等方面往往不盡人意。SHT11是瑞士Sensirion公司推出的基於CMOSensTM技術的新型溫濕度感測器。該感測器將CMOS晶元技術與感測器技術結合起來,從而發揮出它們強大的優勢互補作用。
2 性能特點SHT11溫濕度感測器的主要特性如下:●將溫濕度感測器、信號放大調理、A/D轉換、I2C匯流排介面全部集成於一晶元(CMOSensTM技術);●可給出全校準相對濕度及溫度值輸出;●帶有工業標準的I2C匯流排數字輸出介面;●具有露點值計算輸出功能;●具有卓越的長期穩定性;●濕度值輸出解析度為14位,溫度值輸出解析度為12位,並可編程為12位和8位;●小體積(7.65×5.08×23.5mm),可表面貼裝;●具有可靠的CRC數據傳輸校驗功能;●片內裝載的校準系數可保證100%互換性;●電源電壓范圍為2.4~5.5V;●電流消耗,測量時為550μA,平均為28μA,休眠時為3μA。
SHT11溫濕度感測器採用SMD(LCC)表面貼片封裝形式,管腳排列如圖1所示,其引腳說明如下:(1)GND:接地端;(2)DATA:雙向串列數據線;(3)SCK:串列時鍾輸入;(4)VDD電源端:0.4~5.5V電源端;(5~8)NC:空管腳。
3 工作原理SHT11的濕度檢測運用電容式結構,並採用具有不同保護的「微型結構」檢測電極系統與聚合物覆蓋層來組成感測器晶元的電容,除保持電容式濕敏器件的原有特性外,還可抵禦來自外界的影響。由於它將溫度感測器與濕度感測器結合在一起而構成了一個單一的個體,因而測量精度較高且可精確得出露點,同時不會產生由於溫度與濕度感測器之間隨溫度梯度變化引起的誤差。CMOSensTM技術不僅將溫濕度感測器結合在一起,而且還將信號放大器、模/數轉換器、校準數據存儲器、標准I2C匯流排等電路全部集成在一個晶元內。SHT11感測器的內部結構框圖如圖2所示。SHT11的每一個感測器都是在極為精確的濕度室中校準的。SHT11感測器的校準系數預先存在OTP內存中。經校準的相對濕度和溫度感測器與一個14位的A/D轉換器相連,可將轉換後的數字溫濕度值送給二線I2C匯流排器件,從而將數字信號轉換為符合I2C匯流排協議的串列數字信號。
由於將感測器與電路部分結合在一起,因此,該感測器具有比其它類型的濕度感測器優越得多的性能。首先是感測器信號強度的增加增強了感測器的抗干擾性能,保證了感測器的長期穩定性,而A/D轉換的同時完成,則降低了感測器對干擾雜訊的敏感程度。其次在感測器晶元內裝載的校準數據保證了每一隻濕度感測器都具有相同的功能,即具有100%的互換性。最後,感測器可直接通過I2C匯流排與任何類型的微處理器、微控制器系統連接,從而減少了介面電路的硬體成本,簡化了介面方式。3.1 輸出特性(1)濕度值輸出SHT11可通過I2C匯流排直接輸出數字量濕度值,其相對濕度數字輸出特性曲線如圖3所示。由圖3可看出,SHT11的輸出特性呈一定的非線性,為了補償濕度感測器的非線性,可按如下公式修正濕度值:RHlinear=c1+c2SORH+c3SORH2式中,SORH為感測器相對濕度測量值,系數取值如下:12位:SORH:c1=-4,c2=0.0405,c3=-2.8×10-68位:SORH:c1=-4,c2=0.648,c3=-7.2×10-4(2)溫度值輸出由於SHT11溫度感測器的線性非常好,故可用下列公式將溫度數字輸出轉換成實際溫度值:T=d1+d2SOT當電源電壓為5V,且溫度感測器的解析度為14位時,d1=-40
Ⅲ stc90c51單片機開發板和sht11溫濕度感測器連接測量溫濕度的具體程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint hum,temp,i; //定義濕度、溫度(全局)
uchar hum_h,hum_l,temp_h,temp_l,check,cnt=0; //濕度高、低8位,溫度高、低8位,校驗位
uchar ,shi,ge,1,shi1,ge1; //數碼管 ,cnt=0
uchar code table[]={0xfb,0xfd,0xfe};//位選數組
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //無小數點
uchar code table2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //有小數點
sbit dht=P2^4;
/******************************
郵保╱s級)函數
******************************/
void delay_us(uint i)
{
while(i--);
}
/******************************
延時(ms級)函數
******************************/
void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for(y=100;y>0;y--);
}
/***********************************
溫濕度初始化(准備傳送數據)函數
***********************************/
void dht_init()
{
dht=0;
delay_us(50); //拉低延時500微秒,發送開始信號
dht=1; //釋放匯流排,延時30微秒
delay_us(4);
while(!dht); //拉低等待
while(dht); // 拉高等待,即將傳送數據
}
/************************************
讀取位元組函數
************************************/
uchar read_byte()
{
uchar n,byte=0,dat;
for(n=0;n<8;n++)
{
while(!dht);
delay_us(4); //理論上28us<延時<70us,此處寫2--6都可以
dat=0;
if(dht)
dat=1;
while(dht);
byte<<=1;
byte|=dat;
}
return byte;
}
/********************************
讀40位數據函數
********************************/
void read_hum_temp()
{
dht_init();
hum_h=read_byte(); //讀濕度
hum_l=read_byte();
temp_h=read_byte(); //讀溫度
temp_l=read_byte();
check=read_byte(); //讀校驗
while(!dht);// 等待低電平結束
dht=1; //最後拉高匯流排
}
/************************************
數據轉化函數
提取各位數字
************************************/
void zhuanhuan()
{
uchar a;
a=hum_h+hum_l+temp_h+temp_l;
if(a==check)
{
hum=temp=0;
hum=((hum|hum_h)<<8)|hum_l;
temp=((temp|temp_h)<<8)|temp_l;
=temp/100;
shi=temp%100/10;
ge=temp%10;
1=hum/100;
shi1=hum%100/10;
ge1=hum%10;
}
else =shi=ge=1=shi1=ge1=0;
}
void saomiao1()//溫度
{
P2=table[0];
P0=table1[ge];
delay(1);
P0=0X00;
P2=table[1];
P0=table2[shi];
delay(1);
P0=0X00;
P2=table[2];
P0=table1[];
delay(1);
P0=0X00;
}
void saomiao2()//濕度
{
P2=table[0];
P0=table1[ge1];
delay(1);
P2=table[1];
P0=table2[shi1];
delay(1);
P2=table[2];
P0=table1[1];
delay(1);
}
//===================================================
void main()
{
delay(200);
while(1)
{
read_hum_temp();
zhuanhuan();
for(i=0;i<1500;i++)
{
saomiao1() ;
}
delay(500);
}
}
Ⅳ 100分,求溫濕度感測器SHT11的源程序(51單片機語言)
#define DATA P1_1
#define SCK P1_0
#define ACK 1
#define noACK 0
#define MEASURE_TEMP 0x03 //測量溫度命令
#define MEASURE_HUMI 0x05 //測量濕度命令
//讀溫濕度數據
char s-measure(unsigned char *p- value, un-signed char *p_checksum, unsigned char mode)
{
unsigned char error=0;
unsigned int i;
s_transstart(); //傳輸開始
switch(mode){
case
TEMP:error+=s_write_byte(measure_temp);
break;
case
HUMI:error+=s_write_byte(measure_humi);break;
default:break;
}
for(i=0;i<65535;i++) if(DATA==0) break;
if (DATA) reeor+=1;
*(p_value)=s_read_byte(ACK);
*(p_value+1)=s_read_byte(ACK);
*p_checksum=s_read_byte(noACK);
return error;
}
//溫濕度值標度變換及溫度補償
void calc_sth15(float *p_humidity,float *p_tempera-ture)
{
const float c1=-4.0;
const float c2=0.0405;
const float c3=-0.0000028;
const float t1=-0.01;
const float t2=0.00008;
float rh=×p_humidity;
float t=×p_temperature;
float rh_lin;
float th_ture;
float t_c;
t_c=t×0.01-40;
rh_lin=c3×rh×rh+c2×rh+c1;
trh_ture=(t_c-25)×(t1+t2×rh)+rh_lin;
×p_temperature=t-c;
×p_humidity=rh_ture;
}
//從相對溫度和濕度計算露點
char calc_dewpoint(float h,float t)
{float logex,dew_point;
logex=0.66077+7.5×t/(237.3+t)+[log10(h)-2];
dew_point=(logex-0.66077)×237.3/(0.66077+7.5-logex);
return dew_point;
}
Ⅳ 正泰sht一x1下端怎麼接線
正泰sht一x1是接觸器的一款,正泰sht一x1接觸器下端接線具體的操作步驟如下:
1、准備好正泰sht一x1接觸器。
Ⅵ SHT1x系列的溫濕度感測器為什麼crc校驗總是不對呢
注意文檔中的描述的計算步驟,最後要把你計算出來的CRC按位反序,才能和它提供的CRC進行比較。
另外,CRC計算是從指令碼開始的,不要錯。
Ⅶ 基於單片機的溫濕度檢測系統設計
<<pic單片機應用系統開發典型實例〉〉有差不多的例子,不過 是數碼顯示,不是液晶顯示。液晶程序上網上找就行啊,www.pic16.com上有很多程序,或許有現成的。