📄 element.h
字号:
#define T_Num 2
#define T1_ON PORTD.6=0
#define T2_ON PORTD.3=0
#define T1_OFF PORTD.6=1
#define T2_OFF PORTD.3=1
#define T1_EEPROM 26
#define T2_EEPROM 22
int Temp_def[T_Num];
int Temp_Current[T_Num];
int Temp_Tel[T_Num];
char Temp_flg[T_Num];
char flg_T_ON[T_Num];
char flg_T_OFF[T_Num];
char T_Set[T_Num];
char show_t_flg;
//************************************* ADC Read **************************
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 1
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x00
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
// Start the AD conversion
ADCSRA|=0x40;
}
//************************************ ADC init ****************************
void ADCinit(void)
{
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xCE;
}
//******************************** Read_Temp *****************************
float Read_Temp(char n)
{
float VREF=1;
unsigned int data=0;
float volt=0;
float temp=0;
#asm("wdr")
data=adc_data[n];
volt=((float)data*VREF/1024)-VREF/1024;
temp=(volt/0.01);
return temp;
}
//********************************* Temp Control ***************************
void Temp_Control(char *T_set,int *T_def,int *T_cur,int *T_tel,char *T_flg)
{
char i;
for(i=0;i<T_Num;i++)
{
if((T_cur[i]<T_def[i]-T_tel[i]) && T_flg[i]==1 && flg_T_ON[i]==0)
{
flg_T_ON[i]=1;
flg_T_OFF[i]=0;
T_set[i]=1;
}
else if((T_cur[i]>=T_def[i]+T_tel[i]) && T_flg[i]==1 && flg_T_OFF[i]==0)
{
flg_T_OFF[i]=1;
flg_T_ON[i]=0;
T_set[i]=0;
}
else if(T_flg[i]==0)
{
T_set[i]=0;
}
}
}
//********************************* Auto Control *******************************
void Temp_Auto_Control(void)
{
char i;
char ii;
char k;
Temp_Current[0]=(int)Read_Temp(1);
Temp_Current[1]=(int)Read_Temp(0);
Temp_Current[0]=Temp_Current[0]*2;
Temp_Current[1]=Temp_Current[1]*2;
Temp_def[0]=Read_EEProm(22);
Temp_def[1]=Read_EEProm(26);
for(i=0;i<T_Num;i++)
{
Temp_Tel[i]=2;
}
if(show_t_flg==1)
{
Send_To_LCD('D',Temp_Current[0]);
show_t_flg=0;
}
else
{
Send_To_LCD('G',Temp_Current[1]);
show_t_flg=1;
}
for(ii=0;ii<2;ii++)
{
if((Temp_Current[ii]<Temp_def[ii]-Temp_Tel[ii]) && Temp_flg[ii]==1 && flg_T_ON[ii]==0)
{
flg_T_ON[ii]=1;
flg_T_OFF[ii]=0;
T_Set[ii]=1;
}
else if((Temp_Current[ii]>=Temp_def[ii]+Temp_Tel[ii]) && Temp_flg[ii]==1 && flg_T_OFF[ii]==0)
{
flg_T_OFF[ii]=1;
flg_T_ON[ii]=0;
T_Set[ii]=0;
}
else if(Temp_flg[ii]==0)
{
T_Set[ii]=0;
flg_T_ON[ii]=0;
}
}
for(i=0;i<T_Num;i++)
{
k=T_Set[i];
if(k==1)
{
if(i==0)
{
T1_ON;
Send_To_LCD('K',15);
}
else if(i==1)
{
T2_ON;
Send_To_LCD('N',33);
}
}
else if(k==0)
{
if(i==0)
{
T1_OFF;
Send_To_LCD('R',57);
}
else if(i==1)
{
T2_OFF;
Send_To_LCD('W',71);
}
}
}
}
/*
void Temp_Control_Auto(void)
{
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -