求助,PNP三极管驱动共阳数码管的问题,帮忙看下Protues仿真图哪里有问题?

2020-02-04 09:09发布

RT,用protues仿真,51单片机连接数码管显示时间,数码管驱动怎么显示不正确呢?不用三极管驱动的话是正确显示的。


(原文件名:未命名.jpg)


(原文件名:QQ截图20110514115500.jpg)


(原文件名:QQ截图20110514115539.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
cheng307
2020-02-05 05:05
贴下程序:
#include<reg52.h>   
sbit ksec=P3^0;
sbit kmin=P3^1;
sbit khour=P3^2;
sbit P33=P3^3;
unsigned char

secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;
unsigned int num=0,sec=0,min=0,hour=0,x,n;
unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void delay(unsigned int);
void keyscan();
void display();

main()
        {        TMOD=0x11;
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                TH1=(65536-50000)/256;
                TL1=(65536-50000)%256;
                EA=1;ET0=1;TR0=1; TR1=0; ET1=1;
        while(1)
        {
                display();
                keyscan();
         }
        }

void delay(unsigned int z)
{unsigned int x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);}
void time0() interrupt 1
{num++;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}

void time1() interrupt 3

{
n++;
  TH0=(65536-50000)/256;
TL0=(65536-50000)%256;

}

void display()
{
if(min==0)
{
TR1=1;
}
else
{TR1=0;}
if(n>10)
{
n=0;
P33=~P33;
}  
  if(num==20)
  {num=0;
   sec++;
   if(sec==60)
   {sec=0;
   min++;
   if(min==60)
    {min=0;
      hour++;
      if(hour==24)
       {hour=0;
        min=0;
        sec=0;
        }
      }
   }
  }
secge=sec%10;
secshi=sec/10;
minge=min%10;
minshi=min/10;
hourge=hour%10;
hourshi=hour/10;
P2=1;
P0=table[secge];
delay(5);
P2=2;
P0=table[secshi];
delay(5);
P2=4;
P0=191;
delay(5);
P2=8;
P0=table[minge];
delay(5);
P2=16;
P0=table[minshi];
delay(5);
P2=32;
P0=191;
delay(5);  
P2=64;
P0=table[hourge];
delay(5);
P2=128;
P0=table[hourshi];
delay(5);
}
void keyscan()
{
if(ksec==0)
  {delay(10);
   if(ksec==0)
   {sec++;
    if(sec>=60)
    sec=0;
    }
while(ksec==0)
display();}
if(kmin==0)
   {delay(10);
   if(kmin==0)
    {min++;
     if(min>=60)
     min=0;
     }
while(kmin==0)
display();
   }
if(khour==0)
   {delay(10);
   if(khour==0)
    {hour++;
     if(hour>=24)
     hour=0;
     }
while(khour==0)
display();
}
}

一周热门 更多>