STC单片机简单控制直流电机正反转

最近在研究智能小车,简单研究了一下单片机简单控制直流电机正反转,一开始想着用单片机直接控制,结果失败了。

原因是:虽然I/O口输出的电压也是5V,但输出的电流太小,以致输出功率太小,不足以驱动电机工作。因此,想要电机工作,需要驱动芯片,这里我选择了L293D,插拔式芯片,如图:

STC单片机简单控制直流电机正反转_第1张图片

引脚图:

STC单片机简单控制直流电机正反转_第2张图片

注意:引脚4,5,12,13都是互相连通的,所以只需要一个引脚接地即可。

真值表:

STC单片机简单控制直流电机正反转_第3张图片

想控制电机正反转,我们这里只用到了两个输入端。

与单片机的连接过程:

单片机 L293D
P1^0 引脚1,EN使能端
P1^1 引脚2,1A,信号的输入端1
P1^2 引脚7,2A,信号的输入端2
单片机的地端 引脚4,5,接地
单片机电源 引脚8,16接电源VCC
  引脚3,6为信号的输出端,分别接在直流电机的两侧,不需要和单片机相连
   

代码如下:

#include 

sbit EN  = P1^0;  //    电机输入输出1,2
sbit IN1 = P1^1;  //    输入1
sbit IN2 = P1^2;  //    输入2
sbit key1=P3^5;
sbit key2=P3^4;

void delay();

void main()
{
    EN=1;
    IN1=0;
    IN2=0;
    while(1)
    {     
        if(key1==0)
        {
            delay();
            {
                if(key1==0)
                {
                    IN1=1;
                    IN2=0;
                }
                while(key1==0);
            }
        
        }
        if(key2==0)
        {
            delay();
            {
                if(key2==0)
                {
                    IN1=0;
                    IN2=1;
                }
                while(key2==0);
            }
        }
    }
}

void delay()
{
    int i,j;
    for(i=0;i<10;i++)
    {
        for(j=0;j<100;j++);
    }
}

效果展示这里就不展示了,因为传不了视频,这个是为了手机通过WIFI模块控制直流正反转做铺垫的。期待学习能一直坚持下去。

我把我的硬件电路给大家看看吧:

STC单片机简单控制直流电机正反转_第4张图片

然后我也在protues上进行了仿真,就用上面的代码,效果是一样的,要注意的是仿真图中的引脚布局和实物L293D的引脚分布不一样,需要大家注意一下。

STC单片机简单控制直流电机正反转_第5张图片

你可能感兴趣的:(单片机c语言)