我想请教一个问题,我设计了一个电路图,但是不知道如何去改,所以就来请教一些各位,希望各位能为我解惑。
只会基于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 那我的电路图和代码应该如何去修改呢?我希望路过的都能进来给我解解惑。