📄 gq-1.c
字号:
_pa1=1;
_pa2=1;
_pa3=0;
delay(3);
_pa3=1;
}
//-----------------------------------------------
// 增加键
//-----------------------------------------------
void key_inc()
{
qdz8(0xfd);
if(port_com==0&&flag_inc==0&&windows!=0&&windows!=10&&flag_set==1)
{
flag_inc=1;
flag_inc_check=1;
flag_close=1;
flag_disp=0;
time_15s=0;
time_keep=0;
time_close=0;
switch(windows)
{
case 1:
if(temp_set<250)
{
temp_set++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 2:
if(time_set<240)
{
time_set++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 3:
if(temp_low<240)
{
temp_low++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 4:
if(temp_high<250)
{
temp_high++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 5:
if(time_delay<240)
{
time_delay++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 6:
if(time_temp_keep<240)
{
time_temp_keep++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 7:
if(time_temp_close<240)
{
time_temp_close++;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 8:
if(product_count>0)
{
product_count=0;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
}
}
else
{
qdz8(0xfd);
if(port_com==1)
{
flag_inc=0;
flag_inc_check=0;
}
}
}
//-----------------------------------------------
// 减少键
//-----------------------------------------------
void key_dec()
{
qdz8(0xdf);
if(port_com==0&&flag_dec==0&&windows!=0&&windows!=10&&flag_set==1)
{
flag_dec=1;
flag_dec_check=1;
flag_close=1;
flag_disp = 0;
time_15s=0;
time_keep=0;
time_close=0;
switch(windows)
{
case 1:
if(temp_set>0)
{
temp_set--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 2:
if(time_set>0)
{
time_set--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 3:
if(temp_low>0)
{
temp_low--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 4:
if(temp_high>0)
{
temp_high--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 5:
if(time_delay>0)
{
time_delay--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 6:
if(time_temp_keep>0)
{
time_temp_keep--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 7:
if(time_temp_close>0)
{
time_temp_close--;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
case 8:
if(product_count>0)
{
product_count=0;
if(flag_soon==0)
{
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
}
break;
}
}
else
{
qdz8(0xdf);
if(port_com==1)
{
flag_dec=0;
flag_dec_check=0;
}
}
}
//-----------------------------------------------
// 清按键长闭合的标志
//-----------------------------------------------
void clr_key()
{
if (flag_inc_check==0 && flag_dec_check==0)
{
flag_close=0;
flag_soon=0;
data_key=0;
}
}
//-----------------------------------------------
// ok键
//-----------------------------------------------
void key_ok()
{
qdz8(0xf7);
if(port_com==0&&flag_ok==0)
{
flag_ok=1;
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
time_delay_check=time_delay;
flag_temp_music=0;
flag_temp_keep=0;
flag_temp_close=0;
data_keep=temp_set;
time_15s=0;
time_keep=0;
time_close=0;
switch (windows)
{
case 1:
write24c02(temp_set,0x0);
break;
case 2:
write24c02(time_set,0x1);
break;
case 3:
write24c02(temp_low,0x2);
break;
case 4:
write24c02(temp_high,0x3);
break;
case 5:
write24c02(time_delay,0x4);
break;
case 6:
write24c02(time_temp_keep,0x5);
break;
case 7:
write24c02(time_temp_close,0x6);
break;
case 8:
write24c02(product_count,0x7);
break;
}
windows++;
win_delay=0;
flag_win=1;
flag_disp=1;
flag_set=1;
num3=0x8c;
num2=0xbf;
num1=frg[windows];
if(windows>=0x9)
{
windows=0;
flag_disp=0;
flag_set=0;
data_keep=temp_set;
flag_temp_reach=0;
}
}
else
{
qdz8(0xf7);
if(port_com==1)
{
flag_ok=0;
}
}
}
//-----------------------------------------------
// Enter键
//-----------------------------------------------
void key_enter()
{
qdz8(0x7f);
if(port_com==0&&flag_enter==0)
{
flag_enter=1;
time_15s=0;
time_keep=0;
time_close=0;
if(windows==0||windows==8||windows==10)
{
switch(windows)
{
case 0: //实际温度显示界面
if(flag_temp_reach==1)
{
flag_time_auto=1;
windows=10;
time_sec=time_set;
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
}
break;
case 8: //烤杯计数器界面
if(flag_set==0)
{
windows=0;
data_keep=temp_set;
flag_temp_keep=0;
flag_temp_close=0;
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
flag_temp_music=0;
flag_temp_reach=0;
write24c02(product_count,0x7);
}
break;
case 10: //倒计时界面
windows=8;
time_delay1=0;
flag_buzzer=0;
port_buzzer=1;
flag_alarm=0;
time_delay_check=time_delay;
break;
}
}
}
else
{
qdz8(0x7f);
if(port_com==1)
{
flag_enter=0;
}
}
}
//-----------------------------------------------
// 数据交换
//-----------------------------------------------
void data_set()
{
if (windows!=0)
{
switch (windows)
{
case 1:
data_disp = temp_set; //设定温度显示
break;
case 2:
data_disp = time_set;
break;
case 3:
data_disp = temp_low;
break;
case 4:
data_disp = temp_high;
break;
case 5:
data_disp = time_delay;
break;
case 6:
data_disp = time_temp_keep;
break;
case 7:
data_disp = time_temp_close;
break;
case 8:
data_disp = product_count;
if(flag_temp_keep==1)
{
data_disp = temperature;
}
break;
case 10:
data_disp = time_sec;
break;
}
}
else
{
data_disp = temperature; //实际温度显示
}
}
//-----------------------------------------------
// AD检测
//-----------------------------------------------
void ad_check()
{
_adcr=0x8;
_acsr=0x1;
ad_start=0;
ad_start=1;
ad_start=0;
while(ad_eoc==1)
{
}
ad_zong=ad_zong+_adrh;
ad_count++;
if(ad_count==10)
{
temperature=ad_zong/10;
ad_count=0;
ad_zong=0;
temp_check=temperature;
}
}
//-----------------------------------------------
// 恒温
//-----------------------------------------------
void hengwen()
{
if(windows==0||windows==8||windows==10)
{
if(flag_set==0&&flag_temp_close==0)
{
if(temp_check+15>=data_keep)
{
flag_temp15=1; //实际温度接近设定温度15度了,置标志
if(temp_check+4<=time_set)
{
//flag_temp_music=0; //温度低清音乐标志
flag_temp_reach=0;
flag_time_auto=0;
time_delay_check=time_delay;
}
if(temp_check+2>=data_keep)
{
if(temp_check>=data_keep)
{
port_temp=1; //实际温度大于设定温度停止加热
flag_temp_on=0; //清加热指示的标志
flag_temp2=1; //实际温度在设定温度2度以内的标志置1
flag_pid_90=0; //清90秒加热没到设定温度的标志
time_pid=0; //清间歇加热90秒计时寄存器
data_pid=0; //导通时间清0
flag_temp_reach=1; //实际温度达到设定温度的标志置1
//time_delay_check=time_delay;
}
else
{
port_temp=0;
flag_temp_on=1; //置加热指示的标志
}
}
else
{
flag_temp2=0; //实际温度小于设定温度2度以下,清标志
}
}
else
{
port_temp=0; //实际温度小于设定温度15度以下,加热
flag_temp_on=1; //置加热指示的标志
flag_temp15=0; //实际温度小于设定温度15度以下,清标志
flag_pid_90=0; //清90秒加热没到设定温度的标志
time_pid=0; //清间歇加热90秒计时寄存器
data_pid=0; //导通时间清0
}
}
else
{
port_temp=1; //不在设定状态停止加热
flag_temp_on=0; //清加热指示的标志
}
}
else
{
port_temp=1; //不在设定状态停止加热
flag_temp_on=0; //清加热指示的标志
}
}
//-----------------------------------------------
// 超高温报警
//-----------------------------------------------
void e_temp_high()
{
if(temp_high>temp_set)
{
if(temp_check>=temp_high)
{
temp_tall_e=1;
}
if(temp_check<=temp_set)
{
temp_tall_e=0;
}
}
}
//-----------------------------------------------
// 主程序
//-----------------------------------------------
void main() {
safeguard_int();
clr_ram();
start();
check_at24();
temp_set = read24c02(0x0);
time_set = read24c02(0x1);
temp_low = read24c02(0x2);
temp_high = read24c02(0x3);
time_delay = read24c02(0x4);
time_temp_keep = read24c02(0x5);
time_temp_close = read24c02(0x6);
product_count = read24c02(0x7);
time_delay_check=time_delay;
data_keep=temp_set;
while(1)
{
_clrwdt();
d_aa(data_disp);
display();
key_inc();
key_dec();
key_ok();
data_set();
clr_key();
ad_check();
hengwen();
key_enter();
e_temp_high();
auto_wt();
/*key_shift();
check_low();
check_high();
clr_alarm();*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -