新乡学院本科毕业论文(设计)
第4章 软件系统设计
4.1总体设计
图4.1 总体系统流程图
单片机LCD1602 SHT11初始化 延时 SHT11数据采集 单片机处理 LCD1602显示 调控温湿度设备 蜂鸣器 延时
主函数: void main() {
unsigned int temp1,humi1, temp2,humi2;
value humi_val1,temp_val1, humi_val2,temp_val2;//定义两个共同体,一个用于湿度,
28
新乡学院本科毕业论文(设计)
一个用于温度
//float dew_point1 dew_point2; //用于记录露点值 unsigned char error1,error2; //用于检验是否出现错误 unsigned char checksum1, checksum2;//CRC uchar wendu[6]; //用于记录温度 uchar shidu[6]; //用于记录湿度
LCD_Initial(); //初始化液晶
GotoXY(0,0); //选择温度显示位置 Print(\ C\ //4格空格 GotoXY(10,0); //选择湿度显示位置 Print(\ % \ //4格空格 GotoXY(0,1); //选择温度显示位置 Print(\ C\ //4格空格 GotoXY(10,1); //选择湿度显示位置 Print(\ % \ //4格空格 s_connectionreset1(); //启动连接复位 s_connectionreset2(); while(1) {
error1=0; //初始化error=0,即没有错误
error1+=s_measure1((unsigned char*)&temp_val1.i,&checksum1,TEMP); //温度测量 error1+=s_measure1((unsigned char*)&humi_val1.i,&checksum1,HUMI); //湿度测量 if(error1!=0) s_connectionreset1(); //如果发生错误,系统复位 else {
humi_val1.f=(float)humi_val1.i; //转换为浮点数
29
新乡学院本科毕业论文(设计)
temp_val1.f=(float)temp_val1.i; //转换为浮点数 calc_sth101(&humi_val1.f,&temp_val1.f); //修正相对湿度及温度 // dew_point1=calc_dewpoint1(humi_val1.f,temp_val1.f); //计算e dew_point temp1=temp_val1.f*10; humi1=humi_val1.f*10;
GotoXY(3,0); //设置温度显示位置
wendu[0]=temp100/100+'0'; //温度十位 wendu[1]=temp10/10+'0';//温度个位 wendu[2]=0x2E;//小数点
wendu[3]=temp1+'0';//温度小数点后第一位 Print(wendu); //输出温度 GotoXY(12,0); //设置湿度显示位置
shidu[0]=humi100/100+'0'; //湿度十位 shidu[1]=humi10/10+'0';//湿度个位 shidu[2]=0x2E;//小数点
shidu[3]=humi1+'0';//湿度小数点后第一位 Print(shidu); //输出湿度 }
delay(20); //等待足够长的时间,以现行下一次转换
error2=0; //初始化error=0,即没有错误
error2+=s_measure2((unsigned char*)&temp_val2.i,&checksum2,TEMP); //温度测量 error2+=s_measure2((unsigned char*)&humi_val2.i,&checksum2,HUMI); //湿度测量 if(error2!=0) s_connectionreset2(); //如果发生错误,系统复位 else {
humi_val2.f=(float)humi_val2.i; //转换为浮点数 temp_val2.f=(float)temp_val2.i; //转换为浮点数
30
新乡学院本科毕业论文(设计)
calc_sth102(&humi_val2.f,&temp_val2.f); //修正相对湿度及温度 // dew_point2=calc_dewpoint2(humi_val2.f,temp_val2.f); //计算e dew_point temp2=temp_val2.f*10; humi2=humi_val2.f*10;
GotoXY(3,1); //设置温度显示位置
wendu[0]=temp200/100+'0'; //温度十位 wendu[1]=temp20/10+'0';//温度个位 wendu[2]=0x2E;//小数点
wendu[3]=temp2+'0';//温度小数点后第一位 Print(wendu); //输出温度 GotoXY(12,1); //设置湿度显示位置 shidu[0]=humi200/100+'0'; //湿度十位 shidu[1]=humi20/10+'0'; //湿度个位 shidu[2]=0x2E;//小数点
shidu[3]=humi2+'0';//湿度小数点后第一位 Print(shidu); //输出湿度 }
delay(800); //等待足够长的时间,以现行下一次转换 } }
31
新乡学院本科毕业论文(设计)
4.2 SHT11测量流程
发送测量值 图4.2 SHT11测量流程图
初始化 发动启动传输 等待主机发送测量指令 发送测量指令 判断指令 温湿度计算 浮点转换
SHT11函数声明:
void s_connectionreset1(void);
char s_measure1(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode);
void calc_sth101(float *p_humidity1,float *p_temperature1); float calc_dewpoint1(float h,float t);
32