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