?? 88888pid.c
字號:
write_eeprom(SEC3_ADDR0,set_temper>>8);
write_eeprom(SEC3_ADDR1,set_temper&0xff);
}
void sec_3_min_up() //第3段的 設定時間min+
{
min_up();
}
void sec_3_min_down() //第3段的 設定時間min-
{
min_down();
}
void sec_3_hour() //第3段的 設定時間hour
{
//dis_data0=10;
dis_data1=11;
dis_data2=10;
//dis_data3=3;
}
void sec_3_hour_up() //第3段的 設定時間hour+
{
hour_up();
}
void sec_3_hour_down() //第3段的 設定時間hour-
{
hour_down();
}
void sec_4_temper() //第4段的 設定溫度
{
dis_data0=11;
dis_data1=10;
//dis_data2=10;
dis_data3=4;
temper_set();
min3=set_min;
hour3=set_hour;
write_eeprom(SEC3_ADDR2,set_min);
write_eeprom(SEC3_ADDR3,set_hour);
set_min=set_hour=0;
}
void sec_4_temper_up() //第4段的 設定溫度+
{
temper_up();
}
void sec_4_temper_down() //第4段的 設定溫度-
{
temper_down();
}
void sec_4_min() //第4段的 設定時間min
{
dis_data0=10;
//dis_data1=10;
dis_data2=11;
//dis_data3=4;
time_set();
temper4=set_temper;
write_eeprom(SEC4_ADDR0,set_temper>>8);
write_eeprom(SEC4_ADDR1,set_temper&0xff);
}
void sec_4_min_up() //第4段的 設定時間min+
{
min_up();
}
void sec_4_min_down() //第4段的 設定時間min-
{
min_down();
}
void sec_4_hour() //第4段的 設定時間hour
{
//dis_data0=10;
dis_data1=11;
dis_data2=10;
//dis_data3=4;
}
void sec_4_hour_up() //第4段的 設定時間hour+
{
hour_up();
}
void sec_4_hour_down() //第4段的 設定時間hour-
{
hour_down();
}
void sec_5_temper() //第5段的 設定溫度
{
dis_data0=11;
dis_data1=10;
//dis_data2=10;
dis_data3=5;
temper_set();
min4=set_min;
hour4=set_hour;
write_eeprom(SEC4_ADDR2,set_min);
write_eeprom(SEC4_ADDR3,set_hour);
set_min=set_hour=0;
sect=1;
}
void sec_5_temper_up() //第5段的 設定溫度+
{
temper_up();
}
void sec_5_temper_down() //第5段的 設定溫度-
{
temper_down();
}
void sec_5_min() //第5段的 設定時間min
{
dis_data0=10;
// dis_data1=10;
dis_data2=11;
// dis_data3=5;
SEC5_FLAG=1;
time_set();
temper5=set_temper;
write_eeprom(SEC5_ADDR0,set_temper>>8);
write_eeprom(SEC5_ADDR1,set_temper&0xff);
}
void sec_5_min_up() //第5段的 設定時間min+
{
min_up();
}
void sec_5_min_down() //第5段的 設定時間min-
{
min_down();
}
void sec_5_hour() //第5段的 設定時間hour
{
//dis_data0=10;
dis_data1=11;
dis_data2=10;
//dis_data3=5;
}
void sec_5_hour_up() //第5段的 設定時間hour+
{
hour_up();
}
void sec_5_hour_down() //第5段的 設定時間hour-
{
hour_down();
}
//********************************
//計算溫度段理論值 擴大十倍的
//********************************
void theory_count()
{
float k;
int t1,t2,day,dax;
char th,tm;
if(sect==1)
{
t1=t0;
t2=temper1;
th=hour1;
tm=min1;
}
else if(sect==2)
{
t1=temper1;
t2=temper2;
th=hour2;
tm=min2;
}
else if(sect==3)
{
t1=temper2;
t2=temper3;
th=hour3;
tm=min3;
}
else if(sect==4)
{
t1=temper3;
t2=temper4;
th=hour4;
tm=min4;
}
else //(sect==5)
{
t1=temper4;
t2=temper5;
th=hour5;
tm=min5;
}
dax=(th*600+tm*10);
if(dax==0) //dax==0 表示時間到停止加熱
{
sect=0;
return;
}
day=t2-t1;
if(day==0){CT_FLAG=1;}
else {CT_FLAG=0;}
k=day*100.00/dax; //計算斜率
s_t0=k*min/10.0+10.00*t1;
//dis_data8=(s_t0)/1000; //百位
dis_data8=(s_t0%1000)/100; //十位
dis_data9=(s_t0%100)/10; //個位
dis_data10=s_t0%10;
//s_t1=s_t0; //s_t1<=s_t0;
}
//********************************
//按鍵程序
//********************************
void key_scan()
{
if(SCANKEY_FLAG) //10ms進來一次
{
SCANKEY_FLAG=0;
P2_0=1;
P2_1=1;
P2_2=1;
P2_3=1; //輸入先置1
key_data=P2; //狀態保存在 key_data;
key_data=~key_data; //取反
key_data=key_data&0x0f; //與0x0f 相與
if(key_data) //如果不為0表示有鍵按下
{
key_state=key_state<<1; //有鍵按下則擠一個零進入管道
if(!key_state) //管道全為零后則表示按鍵有效了
{
key_serries_cx+=1;
key_long_cx+=1;
if(KEY_FLAG) //KEY_FLAG=1表示不是連續按鍵只處理一次
{
KEY_FLAG=0;
SERRIES_FLAG=1;
DISP_FLAG=1;
if(KeyFunIndex)
{
if(!P2_0)
{
set();
}
}
if(!P2_1)
{
up();
}
if(!P2_2)
{
down();
}
if(!P2_3)
{
enter();
}
}
//********************************
//連續按鍵
else //否則是連續按鍵了
{
if(key_long_cx==200) //長按鍵2秒
{
key_long_cx=0;
if(!P2_0)
{
set();
}
}
// 連按鍵
if(SERRIES_FLAG)
{ //連加第一次500MS處理一次
if(key_serries_cx==51)
{
key_serries_cx=0;
SERRIES_FLAG=0;
}
}
if(key_serries_cx==8)
{ //以后80MS處理一次
if(!SERRIES_FLAG)
{
key_serries_cx=0;
DISP_FLAG=1;
if(!P2_1)
{
up();
}
if(!P2_2)
{
down();
}
}
}
//
}
//********************************
}
}
else
{
key_state=key_state<<1; //
key_state=key_state|0x01; //沒有按鍵則管道擠1 進去
//key_state=~key_state; //
SERRIES_FLAG=0; //
key_serries_cx=0; //清標志清0
key_long_cx=0; //
if(!KEY_FLAG)
{
KEY_FLAG=1; //
}
}
}
}
//********************************
void set()
{
KeyFunIndex=KeyTab[KeyFunIndex].KeyCrState; //找狀態號
KeyTab[KeyFunIndex].CurrentOperate(); //調狀態程序
}
//********************************
void up()
{
KeyFunIndex=KeyTab[KeyFunIndex].KeyUpState;
KeyTab[KeyFunIndex].CurrentOperate();
}
//********************************
void down()
{
KeyFunIndex=KeyTab[KeyFunIndex].KeyDnState;
KeyTab[KeyFunIndex].CurrentOperate();
}
//********************************
void enter()
{
KeyFunIndex=KeyTab[KeyFunIndex].KeyBackState;
KeyTab[KeyFunIndex].CurrentOperate();
}
//********************************
//in:dis_data0,dis_data1,dis_data2,dis_data3
//fun: 串口靜態顯示
//********************************
void display()
{
uchar temp;
if(_testbit_(DISP_FLAG))
{
// DISP_FLAG=0; //清顯示標志 1S 才顯示
dis(led_segment[dis_data15]);
dis(led_segment[dis_data14]);
dis(led_segment[dis_data13]);
dis(led_segment[dis_data12]);
dis(led_segment[dis_data11]);
dis(led_segment[dis_data10]);
dis(led_segment[dis_data9]);
dis(led_segment[dis_data8]);
dis(led_segment[dis_data7]);
dis(led_segment[dis_data6]);
dis(led_segment[dis_data5]);
dis(led_segment[dis_data4]);
dis(led_segment[dis_data3]);
temp=led_segment[dis_data2];
if(!KeyFunIndex){temp=temp&0xfe;}
dis(temp);
dis(led_segment[dis_data1]);
dis(led_segment[dis_data0]);
// time2();
}
}
//********************************
void init()
{
read_max6675();
a[0]=a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=samping_temper; //初始化采樣數組
time0_init();
time1_init();
// 測試說明EEPROM OK!
temper1=256*read_eeprom(SEC1_ADDR0)+read_eeprom(SEC1_ADDR1);
min1=read_eeprom(SEC1_ADDR2);
hour1=read_eeprom(SEC1_ADDR3);
temper2=256*read_eeprom(SEC2_ADDR0)+read_eeprom(SEC2_ADDR1);
min2=read_eeprom(SEC2_ADDR2);
hour2=read_eeprom(SEC2_ADDR3);
temper3=256*read_eeprom(SEC3_ADDR0)+read_eeprom(SEC3_ADDR1);
min3=read_eeprom(SEC3_ADDR2);
hour3=read_eeprom(SEC3_ADDR3);
temper4=256*read_eeprom(SEC4_ADDR0)+read_eeprom(SEC4_ADDR1);
min4=read_eeprom(SEC4_ADDR2);
hour4=read_eeprom(SEC4_ADDR3);
temper5=256*read_eeprom(SEC5_ADDR0)+read_eeprom(SEC5_ADDR1);
min5=read_eeprom(SEC5_ADDR2);
hour5=read_eeprom(SEC5_ADDR3);
sect=read_eeprom(SECT_ADDR);
min=read_eeprom(MIN_ADDR);
/*
dis_data0=temper1/10;
dis_data1=temper1%10;
dis_data2=min1/10;
dis_data3=min1%10;
dis_data4=hour1/10;
dis_data5=hour1%10;
display();
*/
}
//********************************
void main()
{
init();
while(1)
{
key_scan();
read_max6675();
soft_filt();
display();
cktx();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -