新手求教数码管问题~
#include<reg51.h>typedef unsigned char uint8;
typedef unsigned int uint16;
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
main()
{
uint8 code input[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint16 count;
uint8 i,sec,out[8];
TMOD=0x01;
TH0=0xFC;
TL0=0x67;
TR0=1;
while(1)
{
if(1==TF0)
{
TF0=0;
TH0=0xFC;
TL0=0x67;
count++;
}
if(1000==count)
{
count=0;
sec++;
}
out[0]=input[sec];
out[1]=input[sec];
out[2]=input[sec];
out[3]=input[sec];
out[4]=input[sec];
out[5]=input[sec];
out[6]=input[sec];
out[7]=input[sec];
for(i=0;i<8;i++)
{
P0=out[i];
switch(i)
{
case 0:LS138A=0;LS138B=0;LS138C=0;break;
case 1:LS138A=1;LS138B=0;LS138C=0;break;
case 2:LS138A=0;LS138B=1;LS138C=0;break;
case 3:LS138A=1;LS138B=1;LS138C=0;break;
case 4:LS138A=0;LS138B=0;LS138C=1;break;
case 5:LS138A=1;LS138B=0;LS138C=1;break;
case 6:LS138A=0;LS138B=1;LS138C=1;break;
case 7:LS138A=1;LS138B=1;LS138C=1;break;
default:break;
}
}
}
}
这样数码管可以0,1,2这样一直显示。
可把out[2]=input[sec];改为input[sec+1];为什么显示就完全乱了呢?