不要用三极管放大,接上拉电阻即可。
做实验直接选用线圈电压为5V的继电器就可以。单片机输出引脚与继电器之间要接一个三极管,单片机I/O直接继电器电流不够。
单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的。
在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件。
扩展资料:
现在,单片机的某一个需要控制这个继电器电路的输出引脚就是一只"手",当单片机的这个引脚输出低电平的时候,就像"手"在打开三极管"水龙头",水就从上往下流,继电器"水轮机"就开始转起来了。
反之,如果是输出高电平,"手"就开始关"水龙头",继电器"水轮机"因为没有水流下来,就会停止。
这就是三极管的开关作用。
简单的理解和记忆就是:三极管是一个开关器件,其实真的可以将它看成是一个开关,只不过它不是用手来控制,而是用电压(电流)来控制的,因此,三极管有些时候也被称做电子开关(与机械开关相区别)。
参考资料来源:百度百科——单片机控制器
这个是简单的电路图,因为单片机上电时,各IO口有个瞬间高电平脉冲;这里选用PNP三极管来驱动。至于你说的按任意键启动。。。。这个没多大意义了,这里给你的是按键开、关继电器。 //按K1 继电器吸合//按K2 继电器断开
/*********************************************************/#include <reg52.h>
sbit K1 =P3^2//K1
sbit K2 =P3^3//K2
sbit JDQ=P1^0 //继电器/*********************************************************/
void Delay(unsigned int ii) //1MS
{
unsigned int jj
for(ii>0ii--)
for(jj=0jj<125jj++)
{}
}
void main()
{ while(1){
if (K1==0)
{
Delay(10)
if(K1==0){
JDQ=0//吸合
P0=0x00//P0口LED亮
}
}if (K2==0){
Delay(10)
if(K2==0){
JDQ=1//释放
P0=0xff//P0口LED灯灭
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)