【51单片机】【protues仿真】基于51单片机SHT11温湿度系统
目录
一、主要功能
二、使用步骤
三、硬件资源
四、软件设计
五、实验现象
一、主要功能
1、LCD1602液晶实时显示测量温湿度值
二、使用步骤
基于51单片机的SHT11温湿度检测系统设计是一种结合SHT11温湿度模块和LCD1602显示模块,实时显示温湿度值。
三、硬件资源
1、51单片机核心模块
2、SHY11温湿度传感器
3、LCD1602显示模块
四、软件设计
# include <all.h>
uint wendu,shidu;
typedef union
{
uint i; //定义了两个共用体
float f;
} value;
enum
{
TEMP,HUMI //TEMP=0,HUMI=1
};
void main(void)
{
value humi_val,temp_val;
char error;
char checksum;
LCD_init();
s_connectionreset();
LCD_disp_str(2,1,"Shidu ");
LCD_disp_str(2,2,"Wendu ");
LCD_disp_str(8,1,":TT.TC"); //初始化温度显示区
LCD_disp_str(8,2,":RR.R%"); //初始化湿度显示区
delay_n10us(2000); //延时0.2s
while(1)
{
error=0;
error+=s_measure((uchar*) &humi_val.i,&checksum,HUMI); //测量湿度
error+=s_measure((uchar*) &temp_val.i,&checksum,TEMP); //测量温度
if(error!=0)
s_connectionreset(); //如果出现错误:连接重置
else
{
humi_val.f=(float)humi_val.i; //将整数转换为浮点数
temp_val.f=(float)temp_val.i; //将整数转换为浮点数
calc_dht90(&humi_val.f,&temp_val.f); //计算湿度、温度
wendu=10*temp_val.f;
LCD_disp_char(8,2,wendu/1000+'0'); //显示温度百位
LCD_disp_char(9,2,(wendu%1000)/100+'0'); //显示温度十位
LCD_disp_char(10,2,(wendu%100)/10+'0'); //显示温度个位
LCD_disp_char(12,2,(wendu%10)+'0'); //显示温度小数点后第一位
shidu=10*humi_val.f;
LCD_disp_char(8,1,shidu/1000+'0'); //显示湿度百位
LCD_disp_char(9,1,(shidu%1000)/100+'0'); //显示湿度十位
LCD_disp_char(10,1,(shidu%100)/10+'0'); //显示湿度个位
LCD_disp_char(12,1,(shidu%10)+'0'); //显示湿度小数点后第一位
}
delay_n10us(8000); //延时约0.8s
}
}
五、实验现象
演示视频: