好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

基于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[]=\温湿度检测%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++)

1ww7f14tv18uhsm07tfq670et7c1ze0175n
领取福利

微信扫码领取福利

微信扫码分享