基于51单片机SHT11温湿度传感器检测程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机SHT11温湿度传感器检测程序(含电路图)

下面就是原理

图:

下面就是SHT11与MCU连接的典型电路:

下面就是源代码:

#include

#include

/******************************************************** 宏定义

********************************************************/ #define uint unsigned int

#define uchar unsigned char

#define noACK 0

#define ACK 1

#define STATUS_REG_W 0x06

#define STATUS_REG_R 0x07

#define MEASURE_TEMP 0x03

#define MEASURE_HUMI 0x05

#define RESET 0x1e

enum {TEMP,HUMI};

typedef union //定义共用同类型

{

unsigned int i;

float f;

} value;

/******************************************************** 位定义

********************************************************/ sbit lcdrs=P2^0;

sbit lcdrw=P2^1;

sbit lcden=P2^2;

sbit SCK = P1^0;

sbit DATA = P1^1;

/******************************************************** 变量定义

********************************************************/ uchar table2[]="SHT11 温湿度检测";

uchar table3[]="温度为: ℃";

uchar table4[]="湿度为:";

uchar table5[]="、";

uchar wendu[6];

uchar shidu[6];

/******************************************************** 1ms延时函数

void delay(int z)

{

int x,y;

for(x=z;x>0;x--)

for(y=125;y>0;y--);

}

/******************************************************** 50us延时函数

********************************************************/ void delay_50us(uint t)

{

uint j;

for(;t>0;t--)

for(j=19;j>0;j--);

}

/******************************************************** 50ms延时函数

********************************************************/ void delay_50ms(uint t)

{

uint j;

for(;t>0;t--)

for(j=6245;j>0;j--);

}

/******************************************************** 12864液晶写指令

********************************************************/ void write_12864com(uchar com)

{

lcdrs=0;

delay_50us(1);

P0=com;

lcden=1;

delay_50us(10);

lcden=0;

delay_50us(2);

}

/******************************************************** 12864液晶写数据

void write_dat(uchar dat)

{

lcdrs=1;

lcdrw=0;

delay_50us(1);

P0=dat;

lcden=1;

delay_50us(10);

lcden=0;

delay_50us(2);

}

/******************************************************** 12864液晶初始化

********************************************************/ void init12864lcd(void)

{

delay_50ms(2);

write_12864com(0x30);

delay_50us(4);

write_12864com(0x30);

delay_50us(4);

write_12864com(0x0f);

delay_50us(4);

write_12864com(0x01);

delay_50us(240);

write_12864com(0x06);

delay_50us(10);

write_12864com(0x0c);

delay_50us(10);

}

/******************************************************** 12864液晶显示函数

********************************************************/ void display1(void)

{

uchar i;

write_12864com(0x80);

for(i=0;i<18;i++)

{

write_dat(table2[i]);

delay_50us(1);

相关文档
最新文档