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

2020-02-04 09:09发布

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


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


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


(原文件名:QQ截图20110514115539.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
Hamyou
1楼-- · 2020-02-04 12:27
在数码管驱动上,库里面的三极管是无法仿真的,因为此时三极管基本就是开关作用,仿真不了,不过我这里有别人做的模型可以仿真。


(原文件名:ff.jpg)
perron
2楼-- · 2020-02-04 17:44
 精彩回答 2  元偷偷看……
cheng307
3楼-- · 2020-02-04 22:58
回复【1楼】Hamyou
-----------------------------------------------------------------------

我改成npn就可以正常显示了。。这什么情况?。。我是用的共阳数码管呀?
cheng307
4楼-- · 2020-02-05 00:12
回复【2楼】perron
-----------------------------------------------------------------------

换npn了。。就正常了。。

显示正常了,但是为什么秒比原来那个慢了1秒呢? (原文件名:QQ截图20110514130124.jpg)
cheng307
5楼-- · 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();
}
}
Hamyou
6楼-- · 2020-02-05 07:51
换成PNP的三极管,不管怎么改都不能正常工作

我不用库里面的三极管,对于数码管来说不好使

一周热门 更多>