看代码的19-20行,{0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; 这是共阳数码管的段码,分别对应数字0-9,既然是共阳数码管,在显示的时候就要在每位数码管的阳极接通高电平才能点亮。
再看37-48行,
- P2=0X08;
- P0=table[m%10]; //显示个位
- delayms(5);
- P2=0X04;
- P0=table[m/10]; //显示十位
- delayms(5);
- P2=0X02;
- P0=table[n%10]; //显示百位
- delayms(5);
- P2=0X01;
- P0=table[n/10]; //显示千位
- delayms(5);
这里表明显示的时候分别往数码管阳极输出高电平,如果能的电路用了三极管扩流驱动数码管,那么就需要输出低电平,也就是“取反“,不然就是你那种现象,该亮的不亮,不该亮的全亮。如果你使用的是12或15单片机,可以在函数后加上
P0M1 = 0x00; P0M0 = 0xFF; //P0(00000000B,11111111B)
P2M1 = 0x00; P2M0 = 0x0F; //P2(00000000B,00001111B)
使用单片机推挽模式直接驱动数码管。
|