|
程序
#include <REGX52.H>
#include<INTRINS.H>
unsigned char SXD[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //数字0-9
void Delay(unsigned int Delaytime); //延时
void X(unsigned char WX,unsigned char DX); //位选 段选
void main()
{
while(1)
{
X(1,1);
Delay(200);
X(2,2);
Delay(200);
X(3,3);
Delay(200);
}
}
void X(unsigned char WX,unsigned char DX)
{
switch(WX)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=SXD[DX];
}
void Delay(unsigned int Delaytime) //@12.000MHz
{
unsigned char i, j;
while(Delaytime)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
问题
烧录成功后本应在位置1、2、3上间隔200毫秒,分别显示1、2、3,但烧录成功后只有位置1上静止显示数字1.
万分感谢
|
|