51 单片机数码管显示不正常

51单片机在使用数码管的时候,若使用自定义函数则会出现如图所示情况

img

要实现的效果是利用switch语句来实现第几个数码管显示什么数字
代码如下 理想结果是应该只有第二个灯显示数字1

#include <REGX52.H>
void Nixie(unsigned char Location,unsigned char number)
{
    switch(Location)
    {
        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;
    }
    P0=0x06; 
}
void main()
{
    Nixie(2,2);
}

即使不使用switch语句也是同样的结果,但是放在主函数里写显示正常

P0是段选,P2是位选吗?数码管是共阴的还是共阳的!