基于单片机设计的简易热水器控制系统(7)

2019-05-17 16:43

}

}

if((P2 & 0x0f) != 0x0f) { }

key_value = 0; key_new = 0; flag_lj_en = 1;

//连加使能

zd_break_en = 1; //自动退出设置界使能 zd_break_value = 0; //自动退出设置界变量清零 key_value ++; //按键按下的时候 key_value = 0; else

if(key_value >= 7)

key_can = 20; if(key_500ms == 1) { }

if((key_new == 0) && (key_old == 1)) { }

switch(P2 & 0x0f) { }

case 0x0e: key_can = 4; break; //得到k1键值 case 0x0d: key_can = 3; break; //得到k2键值 case 0x0b: key_can = 2; break; //得到k3键值 case 0x07: key_can = 1; break; //得到k4键值 key_500ms = 0;

zd_break_en = 1; //自动退出设置界使能 zd_break_value = 0; //自动退出设置界变量清零 key_new = 0; key_old = 1;

key_old = key_new;

/****************按键处理数码管显示函数***************/ void key_with() {

if(key_can == 4) {

27

}

menu_1 ++; if(menu_1 >= 3) { }

if(menu_1 == 0) { }

if(menu_1 == 1) { }

if(menu_1 == 2) { }

//设置高温报警

dis_smg[0] = smg_du[t_low % 10]; //取low小数显示 dis_smg[1] = smg_du[t_low / 10 % 10] & 0x7f; //取个位显示 dis_smg[2] = smg_du[t_low / 100 % 10] ; //取十位显示 dis_smg[3] = 0xc7; smg_i = 4;

dis_smg[0] = smg_du[t_high % 10]; //取小数显示 dis_smg[1] = smg_du[t_high / 10 % 10] & 0x7f; //取个位显示 dis_smg[2] = smg_du[t_high / 100 % 10] ; //取low十位显示 dis_smg[3] = 0x89; smg_i = 4;

dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示

dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取温度的个位显示 dis_smg[2] = smg_du[temperature / 100 % 10] ; smg_i = 3;

//取温度的十位显示

menu_1 = 0;

if(menu_1 == 1) {

if(key_can == 3) {

if(flag_lj_3_en == 0)

t_high ++ ;

//按键按下未松开自动加三次

else

t_high += 10; //按键按下未松开自动加三次之后每次自动加10 t_high = 990; if(t_high > 990)

dis_smg[0] = smg_du[t_high % 10]; //取小数显示

28

} {

}

dis_smg[1] = smg_du[t_high / 10 % 10] & 0x7f; //取个位显示 dis_smg[2] = smg_du[t_high / 100 % 10] ; //取十位显示 dis_smg[3] = 0x89;

//H

if(key_can == 2) { }

//设置低温报警

if(flag_lj_3_en == 0)

t_high -- ;

//按键按下未松开自动加三次

else

t_high -= 10; //按键按下未松开自动减三次之后每次自动减10 t_high = t_low + 1; if(t_high <= t_low)

dis_smg[0] = smg_du[t_high % 10]; //取小数显示 dis_smg[1] = smg_du[t_high / 10 % 10] & 0x7f; //取个位显示 dis_smg[2] = smg_du[t_high / 100 % 10] ; //取十位显示 dis_smg[3] = 0x89;

//H

if(menu_1 == 2)

if(key_can == 3) { }

if(key_can == 2) {

if(flag_lj_3_en == 0)

t_low ++ ; t_low += 10; t_low = t_high - 1;

else

if(t_low >= t_high)

dis_smg[0] = smg_du[t_low % 10]; //取小数显示 dis_smg[1] = smg_du[t_low / 10 % 10] & 0x7f; //取个位显示 dis_smg[2] = smg_du[t_low / 100 % 10] ; //取十位显示 dis_smg[3] = 0xc7;

//L

if(flag_lj_3_en == 0)

t_low -- ; t_low -= 10;

else

if(t_low <= 10)

29

}

}

}

t_low = 10;

dis_smg[0] = smg_du[t_low % 10]; //取小数显示 dis_smg[1] = smg_du[t_low / 10 % 10] & 0x7f; //取个位显示 dis_smg[2] = smg_du[t_low / 100 % 10] ; //取十位显示 dis_smg[3] = 0xc7;

//L

/****************报警函数***************/ void clock_h_l() { }

void main() {

temperature = read_temp(); read_eepom(); if(a_a == 0xff) { }

t_high = 300; t_low = 100; a_a = 1; write_eepom();

30

{ }

if(temperature <= t_low)

relay = 0; //加热 beep = ~beep;

if(temperature > t_low) { }

if(temperature >= t_high) { }

relay = 1; //停止加热 beep = 1; //关闭蜂鸣器

//先读出温度的值

time_init(); //初始化定时器

//新的单片机初始单片机内问EEPOM

delay_1ms(650);

}

temperature = read_temp(); //先读出温度的值

dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示

dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取温度的个位显示 dis_smg[2] = smg_du[temperature / 100 % 10] ; while(1) { }

//显示函数 //按键程序

display(); key(); { }

temperature = read_temp(); //先读出温度的值 if(flag_300ms == 1) { }

clock_h_l(); //报警函数 flag_300ms = 0; if(menu_1 == 0) { }

if(zd_break_en == 1) //自动退出设置界面程序 { }

zd_break_value ++; //每300ms加一次

if(zd_break_value > 30) //15秒后自动退出设置界面 {

menu_1 = 0; zd_break_en = 0; zd_break_value = 0;

smg_i = 3;

dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示

dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取温度的个位显示 dis_smg[2] = smg_du[temperature / 100 % 10] ;

//取温度的十位显示

//300ms 处理一次温度程序

key_with();

//设置报警温度

//取温度的十位显示

if(key_can < 10)

}

/*************定时器0中断服务程序***************/ void time0_int() interrupt 1

31

{ }

static uchar value; TH0 = 0x3c;

TL0 = 0xb0; // 50ms value ++; { }

if(flag_lj_en == 1) //按下按键使能 { }

key_time ++;

if(key_time >= 10) //500ms { }

key_time = 0;

key_500ms = 1; //500ms flag_value ++; if(flag_value > 3) { }

flag_value = 10;

flag_lj_3_en = 1; //3次后1.5秒连加大些

flag_300ms = 1; //300ms value = 0;

if(value % 6 == 0)

32


基于单片机设计的简易热水器控制系统(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016.5人教版一年级下册数学全册教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: