基于51单片机SHT11温湿度传感器检测程序(含电路图)
下面是原理图:
下面是SHT11与MCU连接的典型电路:
下面是源代码:
#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[]=\湿度为:%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 ) {
lcdrs=0;
delay_50us(1); P0=; 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);
} }
/******************************************************** 12864液晶显示函数
********************************************************/ void display2(void) {
uchar i;
write_12864com(0x90); for(i=0;i<18;i++) {
write_dat(table3[i]); delay_50us(1); } }
/******************************************************** 12864液晶显示函数
********************************************************/ void display3(void) {
uchar i;
write_12864com(0x88); for(i=0;i<8;i++) {
write_dat(table4[i]); delay_50us(1); } }
/******************************************************** 12864液晶显示函数
********************************************************/ void displaywendu(void) {
uchar i;
write_12864com(0x94); for(i=0;i<3;i++) {
write_dat(wendu[i]); delay_50us(1); }
for(i=0;i<1;i++)
基于51单片机SHT11温湿度传感器检测程序文件



