📄 eco_energy_last.c
字号:
};break;
case 1:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 0;
P1_0 = 1;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 2:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 1;
P1_0 = 0;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 3:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 1;
P1_0 = 1;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 4:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 0;
P1_0 = 0;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 5:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 0;
P1_0 = 1;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 6:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 1;
P1_0 = 0;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 7:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 1;
P1_0 = 1;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 8:
{
P1_3 = 1;
P1_2 = 0;
P1_1 = 0;
P1_0 = 0;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
case 9:
{
P1_3 = 1;
P1_2 = 0;
P1_1 = 0;
P1_0 = 1;
P3_3 = 1;
P3_4 = 0;
P3_5 = 1;
};break;
}
}
else
{
switch(z)
{
case 0:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 0;
P1_0 = 0;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 1:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 0;
P1_0 = 1;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 2:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 1;
P1_0 = 0;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 3:
{
P1_3 = 0;
P1_2 = 0;
P1_1 = 1;
P1_0 = 1;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 4:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 0;
P1_0 = 0;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 5:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 0;
P1_0 = 1;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 6:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 1;
P1_0 = 0;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 7:
{
P1_3 = 0;
P1_2 = 1;
P1_1 = 1;
P1_0 = 1;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 8:
{
P1_3 = 1;
P1_2 = 0;
P1_1 = 0;
P1_0 = 0;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
case 9:
{
P1_3 = 1;
P1_2 = 0;
P1_1 = 0;
P1_0 = 1;
P3_3 = 1;
P3_4 = 1;
P3_5 = 0;
};break;
}
}
}
/************************************************************
*function:定时中断1,定时5ms中断
*parameter:
*return:
*Modify:
*************************************************************/
void KeyAndDis_Timer1() interrupt 3 using 2
{
TR0 = 0;
TH0 = 0xf6;
TL0 = 0x3c;
TR0 = 1;
}
/************************************************************
*function:定时中断0,定时5ms中断
*parameter:
*return:
*Modify:
*************************************************************/
void RectifyTEMP_Timer0() interrupt 1 using 2
{
uint m,n,t;
TR0 = 0;
TH0 = 0xf6;
TL0 = 0x3c;
TR0 = 1;
if((num % 100) == 0)
{
tempera[sum] = Temperature;
sum += 1;
}
num += 1;
if(501 == num)
{
for(m=1;m<=4;m++)
for(n=1;n<=5-m;n++)
if(tempera[m]>tempera[m+1])
{
t=tempera[m];
tempera[m] = tempera[m+1];
tempera[m+1] = t;
}
Temperature_final = tempera[4];
num = 1;
sum = 1;
if(0 == Type_data_flag)
{
Key_value = Temperature_final;
}
}
Scantime_flag--;
timing_num++;
if(0 == Scantime_flag)
{
Scantime_flag = 1;
Key_scan();
}
timing_wink_num++;
}
/************************************************************
*Function:每30ms扫键一次,去抖30ms,调显示,扫到键后100ms不再扫键
*parameter:
*Return:
*Modify:
*************************************************************/
void Key_scan(void)
{
if(6 <= timing_num) //扫描时间到
{
if((0 == up)||(0 == set)||(0 == down)) //有键按下
{
if(12 == timing_num) //去抖30ms
{
if((0 == up)||(0 == set)||(0 == down)) //确认有键按下
{
Type_data_flag = 1;
Keyscan_flag = 1;
if(0 == up) //若上翻键被按下
Up_flag = 1; //上翻标志置1
else if(0 == set)
Set_flag = 1;
else Down_flag = 1;
Scantime_flag = 20; //后100ms不再扫键
timing_num = 0;
Display_key_1();
}
}
}
else timing_num = 0;
}
}
/************************************************************
*Function:扫描到键值后显示相应内容,界面0和界面1
*parameter:
*Return:
*Modify:
*************************************************************/
void Display_key_1(void)
{
if((1 == Keyscan_flag)&&(1 == Type_data_flag))
{
if((1 == Set_flag)&&(0 == Page_flag)) //在缺省界面下按设定键,则进入功能选择界面
{
Page_flag = 1; //置相应的标志位和显示值
Key_value = 1;
Keyscan_flag = 0;
Set_flag = 0;
}
if((1 == Up_flag)&&(1 == Page_flag)) //在功能选择菜单按上翻键
{
Up_flag = 0;
Page_flag = 1;
Keyscan_flag = 0;
switch(Key_value)
{
case 1: Key_value = 3;break;
case 2: Key_value = 1;break;
case 3: Key_value = 2;break;
}
}
if((1 == Down_flag)&&(1 == Page_flag)) //在功能选择菜单上按下翻键
{
Down_flag = 0;
Page_flag = 1;
Keyscan_flag = 0;
switch(Key_value)
{
case 1: Key_value = 2;break;
case 2: Key_value = 3;break;
case 3: Key_value = 1;break;
}
}
Display_key_2();
}
}
/************************************************************
*Function:扫描到键值后显示相应内容,界面2
*parameter:
*Return:
*Modify:
*************************************************************/
void Display_key_2(void)
{
if((1 == Keyscan_flag)&&(1 == Type_data_flag))
{
Keyscan_flag = 0;
Page_flag = 2;
Set_flag = 0;
Key_value = Temperature_final;
}
}
/************************************************************
*function:主函数
*parameter:
*return:
*Modify:
*************************************************************/
void main()
{
uint i;
P3_3 = 1;
P3_4 = 1;
P3_5 = 1;
P1_4 = 0;
opera_flag = 0;
EA = 1; //允许CPU中断
ET0 = 1; //定时器0中断打开
TMOD = 0x11; //设定时器为模式1,16位模式
TH0=0xf6;
TL0=0x3c; //设定时值为5000us(5ms)
TR0 = 1;
ET1 = 1; //定时器1中断打开
TH1 = 0xf6;
TL1 = 0x3c; //设定时值为5000us(5ms)
TR1 = 1;
num = 1;
sum = 1;
Page_flag = 0; //初始缺省界面标志为0
LED_one = 0;
LED_two = 0;
LED_three = 0;
timing_num = 0; //计数标志置0
timing_wink_num = 0;
Scantime_flag = 1;
Key_value = 0; //初始键值置0
Keyscan_flag = 0; //位标志初始化
Up_flag = 0;
Set_flag = 0;
Down_flag = 0;
Type_data_flag = 0;
while(1)
{
for(i=1;i<4;i++)
{
TemperatuerResult();
if (3 == opera_flag)
{
Trans_temp(Key_value);
opera_flag = 0;
}
Dis_play_temp(LED_one,LED_two,LED_three,i);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -