?? m128_alky_touch_con1._c
字號:
if(WD_PID.Derivative>200) WD_PID.Derivative=200;
EEPROM_write(EE_WDPID_P_Addr, WD_PID.Proportion);
EEPROM_write(EE_WDPID_I_Addr, WD_PID.Integral);
EEPROM_write(EE_WDPID_D_Addr, WD_PID.Derivative);
Display_TOUCH_MENU();
Clr_TOUCH_KEY_DISP_F();
SEI();
break;
case 6: //日期修改
DS1302_Write(DS1302_CONTROL_Reg,0x00);//關閉寫保護
Year = (KEY_TEMP[5]<<4) | KEY_TEMP[4];
DS1302_Write(DS1302_YEAR_Reg,Year); //年
Month = (KEY_TEMP[3]<<4) | KEY_TEMP[2];
if(Month>0x12) Month=0x12;
if(Month==0) Month=1;
DS1302_Write(DS1302_MONTH_Reg,Month); //月
Date = (KEY_TEMP[1]<<4) | KEY_TEMP[0];
if(Date>0x31) Date=0x31;
if(Date==0) Date=1;
DS1302_Write(DS1302_DATE_Reg,Date); //日
DS1302_Write(DS1302_CONTROL_Reg,0x80);//打開寫保護
Display_TOUCH_MENU();
Clr_TOUCH_KEY_DISP_F();
break;
case 7: //標定52PPM
case 8: //標定130PPM
case 9: //標定208PPM
case 10: //標定300PPM
case 11: //標定0PPM
CLI();
Set_LD_Value= KEY_TEMP[2] * 100 +KEY_TEMP[1] * 10 + KEY_TEMP[0];
LD_PID.SetPoint = Set_LD_Value;
EEPROM_write(EE_Set_LD_AddrL, Set_LD_Value%256);
EEPROM_write(EE_Set_LD_AddrH, Set_LD_Value/256);
SEI();
break;
case 14: //溫度修改
CLI();
Set_WenDu_Value= KEY_TEMP[1] * 10 + KEY_TEMP[0];
if(Set_WenDu_Value>40) Set_WenDu_Value=40;
WD_PID.SetPoint =Set_WenDu_Value;
EEPROM_write(EE_Set_WD_Addr, Set_WenDu_Value);
Display_TOUCH_MENU();
Clr_TOUCH_KEY_DISP_F();
SEI();
break;
case 15: //風量修改
CLI();
Set_LiuLiang_Value= KEY_TEMP[3] * 1000 + KEY_TEMP[2] * 100 +KEY_TEMP[1] * 10 + KEY_TEMP[0];
if(Set_LiuLiang_Value>1280) Set_LiuLiang_Value=1280;
EEPROM_write(EE_Set_FL_AddrL, Set_LiuLiang_Value%256);
EEPROM_write(EE_Set_FL_AddrH, Set_LiuLiang_Value/256);
OCR0=255-(Set_LiuLiang_Value/10);
break;
}
}
else
if(k==11) //取消
{
Display_TOUCH_MENU();
Clr_TOUCH_KEY_DISP_F();
}
else
if(k==12) //清除
{
KEY_TEMP[0]=KEY_TEMP[1];
KEY_TEMP[1]=KEY_TEMP[2];
KEY_TEMP[2]=KEY_TEMP[3];
KEY_TEMP[3]=KEY_TEMP[4];
KEY_TEMP[4]=KEY_TEMP[5];
KEY_TEMP[5]=0;
}
}
else
if(YN_TOUCH_MENU_DISP_F)
{
switch(k)
{
case 0: //濃度修改
MENU_NUM=0;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=Set_LD_Value/100;
KEY_TEMP[1]=(Set_LD_Value%100)/10;
KEY_TEMP[0]=(Set_LD_Value%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 1: //濃度周期修改
MENU_NUM=1;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=F_LDZQ_Value/1000;
KEY_TEMP[2]=(F_LDZQ_Value%1000)/100;
KEY_TEMP[1]=((F_LDZQ_Value%1000)%100)/10;
KEY_TEMP[0]=((F_LDZQ_Value%1000)%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 2: //溫度周期修改
MENU_NUM=2;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=0;
KEY_TEMP[1]=F_WDZQ_Value/10;
KEY_TEMP[0]=F_WDZQ_Value%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 3: //時間修改
MENU_NUM=3;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=(Hour>>4)&0x03;
KEY_TEMP[2]=Hour&0x0F;
KEY_TEMP[1]=(Minute>>4)&0x07;
KEY_TEMP[0]=Minute&0x0F;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 4: //濃度PID修改
MENU_NUM=4;
KEY_TEMP[5]=LD_PID.Proportion/10;
KEY_TEMP[4]=LD_PID.Proportion%10;
KEY_TEMP[3]=LD_PID.Integral0/10;
KEY_TEMP[2]=LD_PID.Integral0%10;
KEY_TEMP[1]=LD_PID.Derivative/10;
KEY_TEMP[0]=LD_PID.Derivative%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 5: //溫度PID修改
MENU_NUM=5;
KEY_TEMP[5]=WD_PID.Proportion/10;
KEY_TEMP[4]=WD_PID.Proportion%10;
KEY_TEMP[3]=WD_PID.Integral0/10;
KEY_TEMP[2]=WD_PID.Integral0%10;
KEY_TEMP[1]=WD_PID.Derivative/10;
KEY_TEMP[0]=WD_PID.Derivative%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 6: //日期修改
MENU_NUM=6;
KEY_TEMP[5]=Year>>4;
KEY_TEMP[4]=Year&0x0F;
KEY_TEMP[3]=(Month>>4)&0x01;
KEY_TEMP[2]=Month&0x0F;
KEY_TEMP[1]=(Date>>4)&0x03;
KEY_TEMP[0]=Date&0x0F;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 7: //標定52PPM
MENU_NUM=7;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=Set_LD_Value/100;
KEY_TEMP[1]=(Set_LD_Value%100)/10;
KEY_TEMP[0]=(Set_LD_Value%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 8: //標定130PPM
MENU_NUM=8;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=Set_LD_Value/100;
KEY_TEMP[1]=(Set_LD_Value%100)/10;
KEY_TEMP[0]=(Set_LD_Value%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 9: //標定208PPM
MENU_NUM=9;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=Set_LD_Value/100;
KEY_TEMP[1]=(Set_LD_Value%100)/10;
KEY_TEMP[0]=(Set_LD_Value%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 10: //標定300PPM
MENU_NUM=10;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=Set_LD_Value/100;
KEY_TEMP[1]=(Set_LD_Value%100)/10;
KEY_TEMP[0]=(Set_LD_Value%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 11: //標定0PPM
MENU_NUM=11;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=Set_LD_Value/100;
KEY_TEMP[1]=(Set_LD_Value%100)/10;
KEY_TEMP[0]=(Set_LD_Value%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 12: //返回
Clr_TOUCH_MENU_DISP_F();
Display_CON320240();
break;
break;
case 13: //空
k=20;
break;
break;
case 14: //溫度修改
MENU_NUM=14;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=0;
KEY_TEMP[2]=0;
KEY_TEMP[1]=Set_WenDu_Value/10;
KEY_TEMP[0]=Set_WenDu_Value%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
case 15: //風量修改
MENU_NUM=15;
KEY_TEMP[5]=0;
KEY_TEMP[4]=0;
KEY_TEMP[3]=Set_LiuLiang_Value/1000;
KEY_TEMP[2]=(Set_LiuLiang_Value%1000)/100;
KEY_TEMP[1]=((Set_LiuLiang_Value%1000)%100)/10;
KEY_TEMP[0]=((Set_LiuLiang_Value%1000)%100)%10;
Set_TOUCH_KEY_DISP_F();
Display_TOUCH_KEY();
break;
}
}
if(!(k==20))
Sound_Nms(70);
}
//**************************************************
//**************************************************
if(YN_TOUCH_KEY_DISP_F)
{
Display_TOUCH_KEY_VAL();
}
if(YN_TOUCH_KEY_DISP_F | YN_TOUCH_MENU_DISP_F)
{
ReadTime();
Display_Time(0);
LD_JiSuan();
}
else
CON_Value_XIANSHI();
Button_YN();
}
//******************************************
//UART0 initialize
// desired baud rate: 110
// actual: baud rate:110 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0xE0; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x98;
}
//******************************************
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
//uart has received a character in UDR
}
//******************************************
//ADC initialize
// Conversion time: 13uS
//右對齊,參考電壓AREF
void adc_init(void)
{
ADCSRA = 0x00; //disable adc
ADMUX = 0x00; //select adc input 0
ACSR = 0x80; //模擬比較器禁用
ADCSRA = 0x82;
}
//******************************************
uint SYS_ADC(unsigned char n)
{
unsigned char i,j;
ADMUX = n; //select adc input
ADCSRA |= (1<<ADSC); //ADC 開始轉換
while(ADCSRA & (1<<ADSC)) //等待轉換結束
;
i=ADCL;
j=ADCH;
return(j*256+i);
}
//******************************************
float WENDU_TZ(uint ad_v)
{
if(ad_v<239) return 0;
else
{
if(ad_v<341) return ((ad_v-239)*0.1); //0-10
else
{
if(ad_v<567) return ((ad_v-341)*0.075+10); //10-27
else
{
if(ad_v<669) return ((ad_v-567)*0.1+27); //27-37
else
{
if(ad_v<753) return ((ad_v-669)*0.12+37);
else
{
if(ad_v<960) return ((ad_v-753)*0.242+47);
else return 99.9;
}
}
}
}
}
}
//******************************************
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
//XDIV = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init();
timer0_init();
timer1_init();
timer2_init();
// timer3_init();
uart0_init();
adc_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x45; //timer interrupt sources
// ETIMSK = 0x04; //extended timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
//SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//******************************************
//******************************************
//******************************************
void XG_F_Set(unsigned char kkk)
{
unsigned char k,Temp,Temp1;
k=kkk;
switch(F_FLAG1)
{
case 1: //溫控
if(k<10)
{
switch(F_FLAG2)
{
case 1:
if(k<2)
{
Temp=F_WDZQ_Value%10; //取低位
F_WDZQ_Value=k*10+Temp;
if(F_WDZQ_Value>16) F_WDZQ_Value=16;
F_FLAG2=2;
}
break;
case 2:
Temp=F_WDZQ_Value/10; //
F_WDZQ_Value=Temp*10+k;
if(F_WDZQ_Value>16) F_WDZQ_Value=16;
}
}
break;
case 2: //注樣
if(k<10)
{
switch(F_FLAG2)
{
case 1:
Temp=F_LDZQ_Value%1000; //
F_LDZQ_Value=k*1000+Temp;
F_FLAG2=2;
break;
case 2:
Temp=F_LDZQ_Value/1000; //
Temp1=F_LDZQ_Value%100; //
F_FLAG2=3;
break;
case 3:
Temp=F_LDZQ_Value/100; //
Temp1=F_LDZQ_Value%10; //
F_LDZQ_Value=Temp*100+k*10+Temp1;
F_FLAG2=4;
break;
case 4:
Temp=F_LDZQ_Value/100; //
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -