Ⅰ 在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上有很多程序,或许有现成的。