写了一个计数的程序,用数码管显示的,可是问题出现了,两个数码管只有一个是正常的,另一个数码管
该灭的地方倒不灭了,程序如下,求高手指点:
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit LED8_1=P1^1;
unsigned char table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
unsigned int i,n ,DelayCNT;
unsigned char m;
void delay()
{
{
for(n; n > 0; n--)
for(m = 2000; m > 0; m--);
}
}
void main()
{
unsigned int i,LedNumVal=1 ;
unsigned int LedOut[10];
DelayCNT=0;
while(1) //进入循环状态
{
if(++DelayCNT>=500)
{
DelayCNT=0; //延时计数 每扫描一次加一次
++LedNumVal; //每隔50个扫描周期加一次
}
LedOut[6]=table[LedNumVal%10]; //十位
LedOut[7]=table[LedNumVal%100/10];
for(i=0;i<9;i++)
{
P0=LedOut[i];
switch(i)
{
case 0:
case 1:
case 2:;
case 3:
case 4:
case 5:
case 6: LS138A=0; LS138B=1; LS138C=1; LED8_1=1; break;
case 7: LS138A=1; LS138B=1; LS138C=1; LED8_1=1; break;;
}
delay();
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
{
for(n; n > 0; n--)
for(m = 2000; m > 0; m--);
}
}
两个大括号,要那么多干嘛
LedOut[10];
为什么设置是10维的?有那么多没用的
这个程序是不怎么样,LedOut[10]主要是因为for(i=0;i<9;i++)
循环次数的缘故
这个在数码管进行现实的时候需要加上适当的延时的,这样人的视觉才能区分开两只数码管的不同状态的
一周热门 更多>