三极管这样子接,如果是用的普通的AT89C5x,或者Intel的标准51片子的话,这个Q1应该是不能导通的.
在P0口和电源之间,应该接一个上拉电阻,因为P0口是不自带上拉的,它无法主动输出高电平,更无法主动向外输出电流,而是需要通过外接的上拉电阻来给外围电路(例如这个Q1的B极)提供驱动电流.
此外,如果是有30个红外LED的话,三极管的容量应该要满足要求,主要是电流容量.
如果换用功率较大的三极管,那么单片机IO通过外上拉来驱动的话,可能会有一些问题,这个时候就可以将驱动的三极管改成两个,一个PNP的作为主驱动,而单片机通过驱动另外一个NPN的来驱动那个主PNP,这样会比较完善和可靠,也能较好地保护单片机.
你补充的图接法不对的.
上面这两个都是正确的接法,左边的是用NPN三极管的接法,右边的是用于较大功率的PNP管的接法.
你应该把你所用红外管的工作电压,工作电流,以及你外部驱动电路打算要配接的电源电压给出来,否则,别人怎么给你确定具体电路?
你这三极管应该是在 开关状态 按照开关频率和 电流选三极管 P0口要加上拉电阻,三极管基极要加电阻的