1.
你的驱动电路处于不正常工作状态。你的9015实际上一直处于半导通/全导通状态下,继电器有个特性,从“释放”->“吸合”要求电流大,从“吸合”->“释放”要求电流较小(即维持吸合的电流小于初始吸合电流),有回差,也即所谓的“迟滞”效应。你这里9015的基极电平在关断时必须要在(12-0.7)=11.3v以上,估计8051的输出到不了这个电平。所以,在初始时,由于9015还未全导通(半导通),虽然有部分电流流过继电器线圈,但由于继电器的“迟滞”效应,此时电流还没有达到完全吸合所要求的电流,因而继电器触点端是“断开”的;然后,9015基极变低电平,9015全导通,继电器吸合了,此时继电器状态变了,变成维持导通状态,你再想关掉,就必须要更小的电流,而此时9015的
关断并不彻底(还是半导通),所以继电器就很难或再也关不掉了。除非减低12v电源电压,或断掉电源。
2.
解决办法: (1),在9015基极串个稳压管,具体多少值要试验,可能是3v~6v,太大的话,吸合又不行了。方向是“-”极接在9015的基极上。基极上还要接个10k左右的电阻到12v电源。(2)还是改用9013(npn)晶体管吧,管脚对应接,就当它是9015,只不过8051的io口控制电平反相就是了。这是标准用法(采用9013),用9014是“负逻辑”接法,你的电路还缺一些保护器件。
******************************************
如果要上电时继电器不动作,这里只能用9013了,因为初始时,晶体管基极是低电平,用9015就会导通,而用9013就不会导通,随后只要8051的io口输出高电平,9013导通,继电器就吸合动作了。