基于51单片机SHT11温湿度传感器检测程序(含电路图)
? 下面是原理图:
下面是SHT11与MCU连接的典型电路:
仅供参照! 1
下面是源代码:
#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[]=\温湿度检测%uchar table3[]=\温度为: ℃%uchar table4[]=\湿度为:\
仅供参照!
2
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;
仅供参照!
3