帮我看看程序,两组数码管同时显示为什么不行?显示一...
时间:10-02
整理:3721RD
点击:
void disp()//DS1302 display
{
uchar i;
display_code[0]=code2[time[0]/10];//
display_code[1]=code2[time[0]%10];
display_code[2]=code2[time[1]/10];
display_code[3]=code2[time[1]%10];
display_code[4]=code2[time[2]/10];
display_code[5]=code2[time[2]%10];
for(i=0;i<4;i++)
{
dula1=1;
P1=display_code;
dula1=0;
wela1=1;
P1=bit_code;
wela1=0;
delay1ms(3);
}
}
void display(uchar temp1,uchar temp2)// other display
{
uchar yi,er,san,si,wu,liu,qi;
yi=temp2/1000;
er=temp2%1000/100;
san=temp2%1000%100/10;
si=temp2%10;
wu=temp1/100;
liu=temp1%100/10;
qi=temp1%10;
dula2=1;
P0=code1[yi];
dula2=0;
P0=0xff;
wela2=1;
P0=0xfe;
wela2=0;
delay1ms(2); //下边有七个类似的显示方式。
}
void main(void)
{
temp1=0;
temp2=0;
InitTimer0();
set_rtc();
while(1)
{
gettime();
disp();//这个显示函数显示1302的时间 第一组 由P1口控制两个锁存器,控制段选和位选
display(temp1,temp2) ;//显示另外的七个数码管前四个共阴极,后三个共阳极。 由P0口控制两个锁存器,控制段选和位选
}
}
void Timer0Interrupt() interrupt 1
{
TH0 = 0x3C;
TL0 = 0x0B0;
a++;
if(a==20)
{
a=0;
temp1++;
flag=1;
if(temp1==999)
temp1=0;
}
if(temp1<30)
temp2=50;
if(temp1>30)
temp2=50+(temp1-30)*1.5;
}
为什么只显示其中一组显示就可以,两组同时就不行?第一组是P0口,第二组是P1口。code1是共阴极数码管 code2是共阳极的。或者两个同时显示的时候让P0或者P1的两个锁存器的LE端接地,另外的就可以显示正常?为什么?
电路图
来看看啊·
不能沉啊啊啊啊