* *
基于89C51单片机SHT11温湿度传感器电路图于程序作者: 张志杰
SHT11.h文件: #ifndef __SHT11_H__ #define __SHT11_H__
/************************* SHT11相关命令
**************************/ #define uchar unsigned char #define uint unsigned int
#define TEM_TEST 0x03//温度检测命令
* *
#define HUM_TEST 0x05//湿度检测命令 #define REG_READ 0x07//读寄存器 #define REG_WRITE 0x06//写寄存器
#define FUNCTION_SET 0x01//设置SHT11的工作精度为8位/湿度 12位温度 /************************** SHT11端口定义
***************************/
sbit SHT11_DATA=P3^1; sbit SHT11_SCK=P3^0; sbit P33=P3^3; sbit P32=P3^2; sbit P36=P3^6; sbit P37=P3^7;
uchar flag_tempeture=0; //显示温度位置的标志 uchar flag_humidity=0; //显示湿度位置的标志
uchar code str1[]={ 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//温度图标 uchar code str6_sht11[]=\ \ uchar code str4_sht11[]=%uchar code str2_sht11[]=\
uchar code str7_sht11[]=\ \清除没不要的显示 /***************************
* *
函数名称:Delay() 函数功能:SHT11内部延时 ****************************/ void Delay() { ; ; }
/*************************** 函数名称:Delay_Ms() 函数功能:SHT11检测等待延时
函数说明:11ms/55ms/210ms 分别对应8位/12位/14位 测量结果 对应的形参为N 则延时Nms ****************************/
void Delay_Ms(uint ms) // ms延时函数 (AT89C51 @ 11.0592MHz) { uint i; uchar j;
for(i=0;i for(j=0;j<200;j++); * * for(j=0;j<102;j++); } } /************************** 函数功能:SHT11启动时序 ***************************/ void SHT11_Start() { SHT11_SCK=1; SHT11_DATA=1; Delay(); SHT11_DATA=0; Delay(); SHT11_SCK=0; Delay(); SHT11_SCK=1; Delay(); SHT11_DATA=1; } /****************************** 函数名称:SHT11_Sendbyte(uchar dat) * * 函数功能: 向SHT11发送8bite数据 ******************************/ void SHT11_Sendbyte(uchar dat) { uchar i; SHT11_SCK=0; Delay(); for(i=0;i<8;i++) { if(dat&0x80) { SHT11_DATA=1; Delay(); } else { SHT11_DATA=0; Delay(); } dat=dat<<1; SHT11_SCK=1; Delay();