为什么我的数码管0x01显示1,0x40不显示横杠,想改成时间_时间_时间的形式

#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit ce=P1^3;
sbit io=P1^2;
sbit sclk=P1^4;
sbit wela=P2^1;
sbit dula=P2^0;
uchar code table_du[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar time_data[]={21,6,7,1,17,15,30};
uchar write_add[]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};
uchar read_add[]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};
uchar disp[8];
delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
void write_ds1302_byte(uchar add)
{
uchar i;
for(i=0;i<8;i++)
{
sclk=0;
io=add&0x01;
sclk=1;
add=add>>1;
}
}
void write_ds1302(uchar add,uchar dat)
{
ce=0;
sclk=0;
ce=1;
nop();
write_ds1302_byte(add);
write_ds1302_byte(dat);
ce=0;
nop();
io=1;
sclk=1;
}
uchar read_ds1302(uchar add)
{
uchar i,value;
ce=0;
sclk=0;
ce=1;
nop();
write_ds1302_byte(add);
for(i=0;i<8;i++)
{
value=value>>1;
sclk=0;
if(io)
{
value=value|0x80;
}
sclk=1;
}
ce=0;
nop();
sclk=0;
nop();
sclk=1;
io=1;
return value;
}
void set_rtc()
{
uchar i,j,k;
for(i=0;i<7;i++)
{
j=time_data[i]/10;
k=time_data[i]%10;
time_data[i]=k+j*16;
}
write_ds1302(0x8e, 0x00);
for(i=0;i<7;i++)
{
write_ds1302(write_add[i],time_data[i]);
}
write_ds1302(0x8e, 0x80);
}
void read_rtc()
{
uchar i;
for(i=0;i<7;i++)
{
time_data[i]=read_ds1302(read_add[i]);

}

}
void time_pros()
{
disp[0]=time_data[4]/16;
disp[1]=time_data[4]%16;
disp[2]=0x0e;
disp[3]=time_data[5]/16;
disp[4]=time_data[5]%16;
disp[5]=0x0e;
disp[6]=time_data[6]/16;
disp[7]=time_data[6]%16;
}
void display()
{
P0=0xff;
wela=1;
wela=0;
P0=table_du[disp[0]];
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[1]];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[2]];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[3]];
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[4]];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[5]];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[6]];
dula=1;
dula=0;
P0=0xbf;
wela=1;
wela=0;
delay(5);

P0=table_du[disp[7]];
dula=1;
dula=0;
P0=0x7f;
wela=1;
wela=0;
delay(5);

}
void main()
{
set_rtc();
while(1)
{
read_rtc();
time_pros();
display();
}
}

需要看数码管的管脚gpio连接