首页 新闻 会员 周边

关于c51单片机器件的一些问题

0
悬赏园豆:20 [待解决问题]

我想请教一个问题,我设计了一个电路图,但是不知道如何去改,所以就来请教一些各位,希望各位能为我解惑。
只会基于Proteu和keil联编实现的。
电路图如下:

定是查询中断

 

详细放大图

详细下角下标显示图

实现代码如下:

 

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char 
#define uint unsigned int 
sbit r2=P1^2;  //设置方波P1.2输出-->十位数
sbit r3=P1^3;  //设置方波P1.3输出-->个位数
unsigned char code table[]={0x40, 0xf9, 0x24, 0x30,
                            0x19, 0x12, 0x02, 0x78, 
                            0x00, 0x10, 0x08, 0x03, 
                            0x46, 0x21, 0x06, 0x0e};
uint num=60;
void delay(uint z);      
void init();
void timeover(void);
void main(){  //r2为真时LED十位数亮,r3为真时LED个位数亮
    init();
    TR0=1;  //启动定时
    while(1){
        r2=0;
        r3=1;
        P0=table[num%10];
        delay(5000);
        r3=0;
        r2=1;
        P0=table[num/10];
        delay(5000);
        if(TF0){
            timeover();
            TF0=0;
        }
    }
}
void init()
{
     //uint i;              
    TMOD=0x01;  //设置定时器/计数器的工作方式1
    TH1=0x59;  //设置初值为高字节    //关于频率的计算,开始算出来的默认值是
    //23870us,经过进一步的计算得出23000的初值
    TL1=0xd8;  //设置初值为低字节
    IE=0x00;  //禁止中断

}

void delay(uint z){
    while(z--){_nop_();}
}

void timeover(void){  
     TR0=0;
    TH1=0x59;
    TL1=0xd8;
    num--;
    if(num == -1)
        num = 60;
        TR0=1;
}

上述代码是可以实现的,但问题是:我上面的电路图用的是npn 但是我现在没有npn只有pnp我只能用pnp代替 上面的npn 那我的电路图和代码应该如何去修改呢?我希望路过的都能进来给我解解惑。

鱼时代的主页 鱼时代 | 初学一级 | 园豆:182
提问于:2013-12-07 10:24
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册