陈立123 发表于 2019-3-15 14:36 TX-1C开发板段、位码共用P0+573驱动数码管,如果书上这么写的话那就是错的,共阴数码管消隐要用P0=0x00; 共阳数码管消隐要用P0=0xff; 否则鬼影更严重!如果要完全消除鬼影还可以这样写: P0=0x00; dula=1;//送段消隐 dula=0; P0=0xfe; wela=1;//送位码 wela=0; P0=table[bai]; dula=1;//送段码 dula=0; delay(2);//2ms延时不要太长,否则会闪烁 下同 |
wulin 发表于 2019-3-15 11:21 你好,你这代码和我在书上看的代码都是为了避免出现乱码么 你的代码 P0=0xfe; wela=1; wela=0; P0=table[bai]; dula=1; dula=0; delay(5); 书上的代码 dula=1; P0=table[bai]; dula=0; P0=0xff; //多出来的代码 wela=1; P0=0xfe; wela=0; delay(5); |
你错的不是一点点,给你改好了。 #include<reg52.h> #define uint unsigned int #define uchar unsigned char //void delay(uint z); sbit wela=P2^7; sbit dula=P2^6; void delay(uint z); uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; //uint bai,shi,ge,temp,numdu; uchar bai,shi,ge,temp; void main() { // numdu=0; temp=111; // bai=temp%100; bai=temp/100; shi=temp%100/10; ge=temp%10; while(1) { P0=0xfe; wela=1; wela=0; P0=table[bai]; dula=1; dula=0; delay(5); // P0=0xfe; P0=0xfd; wela=1; wela=0; P0=table[shi]; dula=1; dula=0; delay(5); // P0=0xfe; P0=0xfb; wela=1; wela=0; P0=table[ge]; dula=1; dula=0; delay(5); } } void delay(uint z) { uint x,y; // for(x=z;x>0;x++) // for(y=110;y>0;y++); for(x=z;x>0;x--) for(y=110;y>0;y--); } |
XIUAOJEI 发表于 2019-3-14 22:15 谢谢 |
2678254412 发表于 2019-3-14 18:56 谢谢 |
你一直在原地踏步,他怎么会动呢? |
P0=0xfe; 一直位选第一位。。。。 |
因为你始终让位选信号P0=0xfe了 |