基于单片机的温湿度传感器毕业论文 联系客服

发布时间 : 星期一 文章基于单片机的温湿度传感器毕业论文更新完毕开始阅读3dc2b6b8951ea76e58fafab069dc5022aaea462a

Delay_1ms(20); 需大于 18 毫秒 dht11 = 1; 释放数据线, 用于检测低电平的应答信号 DHT11_Delay_10us(); 延时20-40us,等待一段时间后检测应答信号, 应答信号是从机拉低数据线80us DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us();

if(dht11 != 0) 检测应答信号, 应答信号是低电平 { return ERROR; 没应答信号 }

else 有应答信号 { while(dht11 == 0 && count++ < NUMBER); 等待应答信号结束 if(count >= NUMBER) 检测计数器是否超过了设定的范围 { dht11 = 1; return ERROR; 读数据出错, 退出函数 } count = 0; dht11 = 1; 释放数据线 while(dht11 != 0 && count++ < NUMBER); 应答信号后会有一个 80us 的高电平,等待高电平结束 if(count >= NUMBER) { dht11 = 1; return ERROR; 退出函数 } for(i = 0; i < SIZE; i++) 读出湿. 温度值 { value_array[i] = DHT11_ReadValue(); if(i != SIZE - 1) 读出的最后一个值是校验值不需加上去 { check_value += value_array[i]; 读出的五字节数据中的前四字节数据和等于第五字节数据表示成功 } } end for if(check_value == value_array[SIZE - 1]) 在没用发生函数调用失败时进行校验 { dht11 = 1; return OK; 正确的读出 dht11输出的数据

} } }

void Display_5110(unsigned char value,unsigned char () { unsigned char i; res=0; delay_us(100); res=1; LCD_init(); 初始化LCD模块 LCD_clear(); 清屏幕 Display_hanzi(0,2,6) ; 显示 温度: . Display_hanzi(2,2,8) ; Display_zimu(4,2,10) ; Display_zimu(8,2,11) ; Display_hanzi(0,4,7) ; 显示 湿度: . Display_hanzi(2,4,8) ; Display_zimu(4,4,10) ; Display_zimu(8,4,11) ; while(1) { DHT11_ReadTempAndHumi(); Display_5110( value_array[0], 6, 4); Display_5110( value_array[1], 9, 4); Display_5110( value_array[2], 6, 2); Display_5110( value_array[3], 9, 2); Delay_1ms(500);

℃%

if(flag==1) { Display_hanzi(2,0,18) ; Display_zimu(4,0,1) ; Display_zimu(5,0,0) ; Display_zimu(6,0,0) ; Display_zimu(7,0,0) ; Display_zimu(8,0,2) ; Display_zimu(9,0,2) ; Display_zimu(10,0,0) ; Display_zimu(11,0,6) ; Display_zimu(12,0,2) ; Display_zimu(13,0,0) ; flag++; Delay_1ms(1000); } if(flag==2) { for(i=0;i<15;i++) 清除第一行显示 Display_zimu(i,0,12) ; Display_hanzi(0,0,19) ; 在第一行显示 姓名 李能剑 Display_hanzi(2,0,20) ; Display_hanzi(6,0,12) ; Display_hanzi(8,0,13) ; flag=0; Delay_1ms(1000); } else { i=0; while(i<7) 向左动态移动 { Display_hanzi(i*2,0,k+i); i++; } k++; if(k>4) k=0; }

} }