编程实现共阳极八个数码管依次显示12345678

从共阴极改的,改不好!
哪位大神帮帮忙!

#include<reg51.h>

#include<intrins.h>

#define uchar
unsigned char

#define unit
unsigned int

uchar code table[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

void delayms(unit
x);

void display(uchar
y);

void main()

{

uchar aa=0x80,j=0;

while(1)

{uchar aa=0x80,j;

for(j=0;j<8;j++)

{

P3=aa;

P0=table[j];

delayms(2);

aa=_cror_(aa,1);}}}

void delayms (unit
xms)

{ unit i,j;

for(i=xms;0<i;i--)

for(j=300;0<j;j--);

}

那段码表还是共阴数码管的,要换成共阳数码管的.其实,用什么数码管都一样,只要显示出数字就行呗,为什么非要改成共阳呢,你自己还不会改程序。另外,你的仿真图与程序不符。

那个仿真图可以减化的,见下图,注意数码管的接法。改好的程序如下;

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define unit unsigned int

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9共阳数码管段码表

uchar led[]={1,2,3,4,5,6,7,8};

void delayms(uchar x)

{  unit j;

   for( ;x>0;x--)

   for(j=200;j>0;j--);

}

void display()

{

uchar aa=0x80,j;

for(j=0;j<8;j++)

{

P3=aa;

P0=table[led[j]];

delayms(2);

aa=_cror_(aa,1);

}

}

void main()

{

while(1)

{

display();

}

}

追问

我的成87654321了!

温馨提示:答案为网友推荐,仅供参考
相似回答