当前位置: 代码迷 >> 单片机 >> 关于PNP的用法解决办法
  详细解决方案

关于PNP的用法解决办法

热度:105   发布时间:2016-04-28 15:07:10.0
关于PNP的用法

proteus电路图
想做一个60s的倒计时,将两位数码管的1,2口分别连接到P2^0和P2^1时并赋予高电平可以实现,但要通过PNP就实现不了,高手看看

#include<reg51.h>
#include<stdio.h>

int ge,shi,cout,num;
unsigned char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void delay(int x)
{
unsigned i,j;
for(i=1;i<=x;i++)
for(j=1;j<=100;j++);
}

void display(int shi,int ge)
{
 P0=a[shi];
 P2=0x01;  //数码管十位接通,问题应该出现在这里  
 delay(10);
 P2=0x00;    
 P0=a[ge];
 P2=0x02;  //数码管个位接通,问题应该出现在这里
 delay(10);
 P2=0x00;
}

void TimeNumOver()
{
TH0=0x3c;
TL0=0xb0;
cout++;
}

void main()
{
cout=0;
num=60;
EA=0;
TMOD=0x10;
IE=0x00;
TR0=1;
TH0=0x3c;
TL0=0xb0;
while(1)
{
 shi=num/10; //十位
 ge=num%10;  //个位
 display(shi,ge);
 TimeNumOver();
 if(cout==20)
 {
  cout=0;
  num--;
if(num==-1)
{
num=60;
}

 }
}
}
------解决方案--------------------
应该是增加驱动电流,LED数码管的共阳极接PNP
  相关解决方案