proteus中7段数码管显示问题

#include<reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
sbit led=P2^0;
#define uchar unsigned char
#define uint unsigned int

void delayms(uint x);

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

uint NUM=0,M1,M2,F1,F2,S1,S2;

void main()
{

EA=1;

EX0=1;
EX1=1;

led=0;
while(1)
{
M1=NUM%10;
M2=NUM%100/10;
F1=NUM/100%10;
F2=NUM/1000%10;
S1=NUM/10000%10;
S2=NUM/100000;

dula=1;
P0=tabled[M1];
dula=0;
P0=0;
wela=1;
P0=0xfe;
wela=0;
delayms(50);

dula=1;
P0=tabled[M2];
dula=0;
P0=0;
wela=1;
P0=0xfd;
wela=0;
delayms(50);

dula=1;
P0=tabled[F1];
dula=0;
P0=0;
wela=1;
P0=0xfb;
wela=0;
delayms(50);

dula=1;
P0=tabled[F2];
dula=0;
P0=0;
wela=1;
P0=0xf7;
wela=0;
delayms(50);

dula=1;
P0=tabled[S1];
dula=0;
P0=0;
wela=1;
P0=0xef;
wela=0;
delayms(50);

dula=1;
P0=tabled[S2];
dula=0;
P0=0;
wela=1;
P0=0xdf;
wela=0;
delayms(50);

NUM=NUM+1;
led=~led;

}
}

void PX0_minuts() interrupt 0
{
NUM++;
delayms(50);
}

void PX1_hours() interrupt 2
{
NUM--;
delayms(50);
}

void delayms(uint x)
{
int i,j;
for(i=110;i>0;i--)
for(j=x;j>0;j--);
}

在以上proteus中用该程序实现7段数码管逐步加1显示,可是不知为何proteus中一直都无法显示读数,求高手赐教!

先不说程序对不对,就仿真图就问题多多,P0口输出段码,要加上拉电阻,明白什么是上拉电阻吗?你加的电阻却是串联,根本就起作用。输出段码和位码是用两个573锁存的,程序是用P0口输出段码和位码然后锁存的,可仿真图却用P1口锁存位码,程序和图不符。数码管有6位一体的,画图更方便简单,连线更少,就不用加这么多的网络标号了,画这个图很费劲吧!图这么画:

试了你的程序也不对的。

 

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答