打印
[C语言]

两组数码管同时显示为什么不行?显示一个却可以。

[复制链接]
1488|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wo_yjk|  楼主 | 2014-3-26 17:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wo_yjk 于 2014-3-26 22:11 编辑

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的两个锁存器的LE端接地,另外的就可以显示正常??为什么?



1.png (143.16 KB )

1.png

相关帖子

沙发
wo_yjk|  楼主 | 2014-3-26 19:31 | 只看该作者
来个人给看看啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝