电子系统设计 室内温度湿度测控系统设计 联系客服

发布时间 : 星期一 文章电子系统设计 室内温度湿度测控系统设计更新完毕开始阅读923053700b1c59eef8c7b434

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