}
}
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