按键控制led数码管,数码管显示温度和电压

只有按键4能工作,5和6没有效果,按键4电压刷新的特别快,再按下按键四温度显示不出来,led显示的也不对,主代码如下
#include "iic.h"
#include "keyheseg.h"
#include "onewire.h"
#include "stdio.h"
#define u8 unsigned char
#define u16 unsigned int
unsigned char pucSeg_Buf[10], pucSeg_Code[8],ucSeg_Pos;
u8 dianya , wendu = 1, led=0, wei;
u8 dianyatime, wendutime;
u8 keyold,ucKey_Dly;
u8 ucAdc_Val,dianyaflag,temperature;
sfr AUXR = 0x8e;
void key_proc(void);
void seg_proc(void);
void led_proc(void);

void Timer1Init(void) // @12.000MHz
{
AUXR &= 0xBF;
TMOD &= 0x0F;
TL1 = 0x18;
TH1 = 0xFC;
TF1 = 0;
TR1 = 1;

ET1 = 1;
EA = 1;
}
void Time_1(void) interrupt 3 {
if (++dianyatime == 5000) dianyatime = 0;
if (++wendutime == 500) wendutime = 0;
segdisplay(pucSeg_Code, ucSeg_Pos);
if(++ucSeg_Pos==8) ucSeg_Pos=0;

}

void main() {
close();
Timer1Init();
while (1) {
key_proc();
// seg_proc();
// led_proc();
}
}
void key_proc(void) {
unsigned char keydown, Key_Val;
if(ucKey_Dly) return;
ucKey_Dly = 1;

Key_Val = key_read();
keydown = Key_Val & (keyold^Key_Val);
keyold = Key_Val;
switch (keydown) {
case 4: {
dianya^=1;
if (dianya) {
seg_proc();
} else {
seg_proc();
}

} break;
case 5: {
  dianya^=1;
   if (dianya) {

    sprintf(pucSeg_Buf, "        ",pucSeg_Code);

  } else {
     sprintf(pucSeg_Buf, "        ",pucSeg_Code);
   
  }
  // sprintf(pucSeg_Buf, "        ",pucSeg_Code);
   segtran(pucSeg_Buf, pucSeg_Code);
} break;
case 9: {
  dianya^=1;
  if (dianya) {
  if (led == 0) {
    led_proc();
    led ^= 1;
  } else {
    P2 = 0XFF;
    P2 = (P2 & 0X1F) | 0X80;
    P2 &= 0X1F;
    led ^= 1;
  }}
} break;

}
}

void seg_proc(void) {
ucAdc_Val = PCF8591_ADC();
temperature=rd_temperature();
dianya^=1;
if (dianya) {
sprintf(pucSeg_Buf, "U %3.2f",(float)ucAdc_Val/ 51.0);
}

else {
sprintf(pucSeg_Buf, "%A %3.1f ",(float)temperature*0.0625);
}

segtran(pucSeg_Buf, pucSeg_Code);
}
void led_proc(void) {
ucAdc_Val = PCF8591_ADC();
if (dianya) {
P0 = 0XFF << 1;
P2 = (P2 & 0X1F) | 0X80;
P2 &= 0X1F;

 if (ucAdc_Val < 1.5) {
P0 = 0XFE;
P2 = (P2 & 0X1F) | 0X80;
P2 &= 0X1F;

} else {
P0 = (0XFF << 3) | 0x02;
P2 = (P2 & 0X1F) | 0X80;
P2 &= 0X1F;
}
}
else {
P0 = (0XFF << 2) | 0X01;
P2 = (P2 & 0X1F) | 0X80;
P2 &= 0X1F;
}
}