兴安xa 发表于 2022-6-10 18:41 厉害厉害厉害厉害 |
这种写法复杂化了,还是用查表法更好 while (1) { P0=0x00;DU1=1;DU1=0; WE1=1;P0=0xfe;WE1=0; DU1=1;P0=0x06;DU1=0;//1 delay(10); P0=0x00;DU1=1;DU1=0; WE1=1;P0=0xfd;WE1=0; DU1=1;P0=0x5b;DU1=0;//2 delay(10); P0=0x00;DU1=1;DU1=0; WE1=1;P0=0xfb;WE1=0; DU1=1;P0=0x4f;DU1=0;//3 delay(10); |
加上消隐应该就可以了。 |
你对照一下就知道哪里不对 #include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; //顺序共阴极数码管段码表,段码a-h顺序接PX0-PX7 uchar code table[]={//共阴数码管段码"0~f-." 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x40,0x80}; void Delay_ms(uint t) { uint i,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } void main() { uchar i; while(1) { P0=0x00;dula=1;dula=0; P0=~(0x01<<i);wela=1;wela=0; P0=table[i+1];dula=1;dula=0; i=++i%6; Delay_ms(1); } } |
啥叫报错? 哪里报错? 报错信息呢? |