看你的意思你用的是PNP型三极管吧,这样你还是不行的。。。。。
你的单片机输出低时,三极管发射极与基极的电压为12V,发射结正偏,是不,貌似可以导通吧。
好吧,当你输出高电平时,三极管发射极与基极的电压为12V-5V=7V,发射结还是正偏是不,你的始终导通,没法控制了。。。。况且,你的电路正好满足发射结正偏,集电结反偏的要求,所以,即便工作了,也是工作在放大区。。。。。不是你用来做开关的饱和截止区。。。。
这样连的结果就是三极管的BE结直接烧毁
还有就是你说是12V的继电器,为啥要有正负12V,这样加起来24V了,继电器也可能烧啊。
如果想控制,最简单的就是先控制一个5V继电器,再用这个2V继电器去连12V继电器
楼主这样是不对的。
首先。没有必要-12V。没用。-12V改为GND就可以了。
第二,用PNP的话,改为单电源如图:单片机不管输出5V还是0V。电压都要比VCC=12v低,发射结肯定是一直导通的。所以,你应该换成NPN管,E极接地,用IO口去控制基极。
1、51单片机的IO口是准双向IO,PNP的E极到B极是一个正向的二极管,是通的,完全有能力把IO拉高,所以你写P20=0时,实际上P20是高电平的。正确的做法是把P20的上拉去掉,然后在P20口到B极间接个1K到10K的限流电阻(这个电阻很关键),如果要增加抗干扰则在三极管的BE极接个10K的电阻(不是接在电源到P20,而是电源到B极)。
2、我没看到图,既然不共地,那么P20出来后怎样形成回路,如果没有回路,肯定不会有电流,也就是说无法工作。
参考:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/429b5e35208e9bb9d0a2d398.html
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/d9581a5155e8f5521138c2d6.html
要用两级驱动才可以