//**********************************/
void changgeset(uint value_data) {
value_shi=value_data/10+0x30;
value_data=value_data; //取余运算
value_ge=value_data+0x30; }
void Key_set_scan() {
if(key_set==0) {
delay1ms(10); if(key_set==0) {
TR1 = 0; // 停止计时 selectnum++; if(selectnum==1) {
value=read_add(2); changgeset(value);
set_temp_up=1;//设置温度上限位 set_temp_down=0; set_humidity_up=0; set_humidity_down=0; DisplayOneChar(10,0,'T'); DisplayOneChar(11,0,'H'); DisplayOneChar(12,0,':');
DisplayOneChar(13,0,value_shi); DisplayOneChar(14,0,value_ge);
WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); }
if(selectnum==2) {
value=read_add(3); changgeset(value);
set_temp_down=1;//设置温度下限位 set_temp_up=0; set_humidity_up=0; set_humidity_down=0; DisplayOneChar(10,1,'T'); DisplayOneChar(11,1,'L'); DisplayOneChar(12,1,':');
DisplayOneChar(13,1,value_shi); DisplayOneChar(14,1,value_ge);
WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); }
if(selectnum==3) {
value=read_add(4); changgeset(value);
set_humidity_up=1;//设置湿度上限位 set_humidity_down=0; set_temp_down=0; set_temp_up=0;
DisplayOneChar(10,0,'H'); DisplayOneChar(11,0,'H'); DisplayOneChar(12,0,':');
DisplayOneChar(13,0,value_shi);
DisplayOneChar(14,0,value_ge);
WriteCommandLCM(0x80+0x00+15,02);
WriteCommandLCM(0x0f,02); } if(selectnum==4) {value=read_add(5); changgeset(value);
set_humidity_down=1;//设置湿度下限位 set_humidity_up=0; set_temp_down=0; set_temp_up=0;
DisplayOneChar(10,1,'H'); DisplayOneChar(11,1,'L'); DisplayOneChar(12,1,':');
DisplayOneChar(13,1,value_shi); DisplayOneChar(14,1,value_ge); WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); } if(selectnum==5)
29
{ set_humidity_down=0; set_humidity_up=0; set_temp_down=0; set_temp_up=0; selectnum=0; selectnum=0; TR1=1; WriteCommandLCM(0x0c,1); } while(!key_set);//等待按键释放 } }
/////////////////////////// if(key_ok==0) { delay1ms(10); if(key_ok==0) { write=1;
set_humidity_down=0; set_humidity_up=0; set_temp_down=0; set_temp_up=0; TR1=1; while(!key_ok);//等待按键释放 } }
///////////////////////////////// if(key_up==0) {
delay1ms(10); if(key_up==0) {
TR1 = 0; // 停止计时 value++;
if(value==99)value=0; changgeset(value); if(set_temp_up==1) {
//温度上限加
temp_uplimit=value; DisplayOneChar(10,0,'T'); DisplayOneChar(11,0,'H'); DisplayOneChar(12,0,':');
DisplayOneChar(13,0,value_shi); DisplayOneChar(14,0,value_ge);
WriteCommandLCM(0x80+0x00+15,02); WriteCommandLCM(0x0f,02); }
if(set_humidity_up==1) {
//湿度上限加
humidity_uplimit=value; DisplayOneChar(10,0,'H'); DisplayOneChar(11,0,'H'); DisplayOneChar(12,0,':');
DisplayOneChar(13,0,value_shi); DisplayOneChar(14,0,value_ge);
WriteCommandLCM(0x80+0x00+15,02);
WriteCommandLCM(0x0f,02); }
if(set_temp_down==1) {
//温度下限
temp_lowlimit=value; DisplayOneChar(10,1,'T'); DisplayOneChar(11,1,'L'); DisplayOneChar(12,1,':');
DisplayOneChar(13,1,value_shi); DisplayOneChar(14,1,value_ge); WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); }
if(set_humidity_down==1) {
//湿度下限 humidity_lowlimit=value; DisplayOneChar(10,1,'H'); DisplayOneChar(11,1,'L'); DisplayOneChar(12,1,':');
DisplayOneChar(13,1,value_shi); DisplayOneChar(14,1,value_ge); WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); }
30
while(!key_up);//等待按键释放 DisplayOneChar(13,0,value_shi); } } ////////////////////////////////// if(key_down==0) { delay1ms(10); if(key_down==0) { TR1 = 0; // 停止计时 value--; if(value==0) value=99; changgeset(value); if(set_temp_down==1) } //温度下限 temp_lowlimit=value; DisplayOneChar(10,1,'T'); DisplayOneChar(11,1,'L'); DisplayOneChar(12,1,':'); DisplayOneChar(13,1,value_shi); DisplayOneChar(14,1,value_ge); WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); } if(set_humidity_down==1) { //湿度下限 humidity_lowlimit=value; DisplayOneChar(10,1,'H'); DisplayOneChar(11,1,'L'); DisplayOneChar(12,1,':'); DisplayOneChar(13,1,value_shi); DisplayOneChar(14,1,value_ge); WriteCommandLCM(0x80+0x40+15,02); WriteCommandLCM(0x0f,02); } if(set_temp_up==1) { //温度 temp_uplimit=value; DisplayOneChar(10,0,'T'); DisplayOneChar(11,0,'H'); DisplayOneChar(12,0,':'); DisplayOneChar(14,0,value_ge); WriteCommandLCM(0x80+0x00+15,02); WriteCommandLCM(0x0f,02); } if(set_humidity_up==1) { //湿度 humidity_uplimit=value; DisplayOneChar(10,0,'H'); DisplayOneChar(11,0,'H'); DisplayOneChar(12,0,':'); DisplayOneChar(13,0,value_shi); DisplayOneChar(14,0,value_ge); WriteCommandLCM(0x80+0x00+15,02);
WriteCommandLCM(0x0f,02); } while(!key_down);//等待按键释放 } } } void Save_Limit_Vlaue() { if(write==1&&set_temp_up==1) { write=0; //清零 write_add(2,temp_uplimit); //在24c02的地址2中写入数据temp_uplimit温度上限值 } if(write==1&&set_temp_down==1) { write=0; write_add(3,temp_lowlimit); //在24c02的地址3行慈胧emp_uplimit温度下限值 } if(write==1&&set_humidity_up==1) { write=0; write_add(4,humidity_uplimit); //在24c02的地址4中写入数据humidity_uplimit湿度上限值
31
}
if(write==1&&set_humidity_down==1) {
write=0;
write_add(5,humidity_lowlimit); //在24c02的地址5中写入数据humidity_lowlimit湿度下限值 } }
void Alarm_Limit() {
//Alarm_temp_up=read_add(2); //读出temp_uplimit温度上限值//
Alarm_temp_low=read_add(3); //读出temp_uplimit温度下限值
//Alarm_humidity_up=read_add(4); //读出humidity_uplimit湿度上限值
//Alarm_humidity_low=read_add(5); //读出humidity_lowlimit湿度下限值
if(U8T_data_H>=24&&U8T_data_H<=32)//判断温度值是否超出设定范围,如超出LED亮 {
AlarmTemp=1; staticOK=0; } else {
AlarmTemp=0; staticOK=1; }
if(U8RH_data_H>=55&&U8RH_data_H<=78)//判断湿度值是否超出设定范围,如超出LED亮 {
AlarmHum=1; staticOK=0; } else {
AlarmHum=0; staticOK=1;
}
}
32
河西学院本科生毕业论文(设计)题目审批表
学院:物理与机电工程学院 专业:物理学 教师姓名 顾建雄 职称 副教授 学历 研究生 拟选论文(设计)题目 选题内容与要求: 基于单片机的温室大棚测控系统研究 基于单片机的温室大棚测控系统主要用来实现温室大棚中温度和湿度的自动调节,其基本内容与要求如下: (1)采用51单片机+DHT11温湿度传感器+AT24C02(存储器)+LCD1602液晶显示+蜂鸣器。检测环境的温湿度,预定报警值,超过上限值或低于下限值就会报警。 (2)上电显示环境温湿度值。带温湿度报警、显示功能,可设置报警范围(报警上限值和下限值存放IIC)。 (3)4个按键操作:温湿度报警范围设置。 (4)可查询设定温度、湿度报警上限值和下限值。 教研室(研究所、中心)负责人审查意见: 签字: 年 月 日 学院审核意见: 学院(章) 年 月 日 注:本表按选题填写,每题一页,由学院存档。