你这用是的共阳数码管吧,那8个阳极是不能连在一起的,你这么肯定是显示8个同样的数字呀,就相当于一个数码管吗。要显示8个不同的数字,那8个阳极要分别接到8个引脚上。写程序时,要轮流扫描这8位,但每次只显示一位。如,先输出第一个数码管显示的段码,再输出第一位数码管阳极有效的位码,只有这一个阳极为1。延时,再依次输出后面的数码管显示的段码和位码。这样不断循环显示才行的。但显示每一位的延时不能太长了,如你这个延时子程序,改成
for(a=0;a<300;a++);就可以,虽然是轮流显示的,但是看起来却是8个数字同时亮的,如果有闪烁的话,可以修改延时的长短。