(此数码管为共阴极)

首先写一个函数,在指定的其中数码管显示单个1位数数字

参数一:第几个数码管

参数二:要显示的数字

unsigned char arr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void show1number(unsigned int location,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;
		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=arr[number];
	//yanshi(1);//加上延时会更亮
	P0=0x00;//清空状态,清空前加延时会更亮
	
}

再来写一个函数  显示int数字 

void show_int(int number){//这里只是用前4个数码管,最大显示9999  显示4位数字    更多位数的要重新判断
	if(number>0){show1number(4,number%10);}	
	if(number>9){show1number(3,number%100/10);}	
	if(number>99){show1number(2,number%1000/100);}	
	if(number>999){show1number(1,number%10000/1000);}
}