2009级 电子信息科学与技术专业 电子系统设计报告
humi_val.f=(float)humi_val.i; //转换为浮点数 temp_val.f=(float)temp_val.i; //转换为浮点数
calc_sth10(&humi_val.f,&temp_val.f); //修正相对湿度及温度 // dew_point=calc_dewpoint(humi_val.f,temp_val.f); //计算e dew_point temp=temp_val.f*10; humi=humi_val.f*10;
Temp_bai=temp/1000; //温度百位 Temp_shi=temp00/100; //温度十位 Temp_ge =temp0/10; //温度个位 Temp_fen=temp; //温度小数点后第一位 Humi_bai=humi/1000; //湿度百位 Humi_shi=humi00/100; //湿度十位 Humi_ge =humi0/10; //湿度个位 Humi_fen=humi; //湿度小数点后第一位 alarm();
if(( Temp_bai !=0) && ( Temp_bai !=1) ) {
temp=temp*-1.0+10.0;
Temp_shi=temp00/100; //温度十位 Temp_ge =temp0/10; //温度个位 Temp_fen=temp; //温度小数点后第一位 /*
Temp_CHA=Temp_shi*100+Temp_ge*10+Temp_fen; Temp_CHA=55.0-Temp_CHA; Temp_shi=Temp_CHA/100; //温度十位 Temp_ge =Temp_CHA0/10; //温度个位 Temp_fen=Temp_CHA; //温度小数点后第一位 */ display0(); } else { display1(); } display2(); } } else
handle_key_lcd1602(); } }
/***********************/ void Init() {
21
2009级 电子信息科学与技术专业 电子系统设计报告
//TMOD=0x11; //TL1=0x3C; //TH1=0xB0; EA=1;
// ET1=1; //定时器1允许 IT1=1;
EX1=1; //外部中断1允许 // TR1=1; //定时器1运行 }
/*********延时K*1ms,12.000mhz**********/
void delay(uint k) {
uint i,j;
for(i=0;i /*****************报警子函数*******************/ void alarm(void) { uint sht_temp1; uint sht_temp2; uint sht_humi1; uint sht_humi2; uint sht_temp; uint sht_humi; sht_temp1=sht_10[0]*100+sht_10[1]*10+sht_10[2]; sht_temp2=sht_10[3]*100+sht_10[4]*10+sht_10[5]; sht_humi1=sht_10[6]*100+sht_10[7]*10+sht_10[8]; sht_humi2=sht_10[9]*100+sht_10[10]*10+sht_10[11]; sht_temp =Temp_bai*100+Temp_shi*10+Temp_ge; sht_humi =Humi_bai*100+Humi_shi*10+Humi_ge; if(sht_temp>=sht_temp1) { Beep =1; LED_RED =0; LED_GREEN=1; delay(500); } else { Beep =0; LED_RED =1; 22 2009级 电子信息科学与技术专业 电子系统设计报告 LED_GREEN=0; } if(sht_temp<=sht_temp2) { Beep =1; LED_RED =0; LED_GREEN=1; delay(500); } else { Beep =0; LED_RED =1; LED_GREEN=0; } if(sht_humi>=sht_humi1) { Beep =1; LED_RED =0; LED_GREEN=1; delay(500); } else { Beep =0; LED_RED =1; LED_GREEN=0; } if(sht_humi<=sht_humi2) { Beep =1; LED_RED =0; LED_GREEN=1; delay(500); } else { Beep =0; LED_RED =1; LED_GREEN=0; } /* if(sht_temp>=124 || sht_temp<=-40 || sht_humi>=101 || sht_humi<0) { 23 2009级 电子信息科学与技术专业 电子系统设计报告 Beep =1; LED_RED =0; LED_GREEN=1; delay(1000); } else { Beep =0; LED_RED =1; LED_GREEN=0; }*/ } void handle_key_lcd1602(void) //处理按键与lcd1602显示,while循环中直接使用{ //uchar j=0;//临时循环变量 //static uchar xdata save_data[12]={0,0,0,0,0,0,0,0,0,0,0,0}; //static uchar inner_page_offset=1; //static uchar key_up_down_value = 0;//指向0f if( is_setting_system == 0 ) //当前处于循环显示 数据界面 { if(key_value_valid==1)//按键值有效,按键按下(检测ENTER按键按下) { if(key_value==KEY_CANCEL) { is_setting_system = 1;//下一次进入系统设置页面 //inner_page_offset = 1; display3(); display4(); } } } else//当前处于设置界面 { if(key_value_valid == 1)//有效按键按下 { switch(key_value)//处理有效键值 { /*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/ case KEY_UP://按下的是向上键↑ { sht_10[j]++; if(sht_10[j]>=9) 24
相关推荐: