找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

小菜鸟第一次使用L298N驱动模块,求大神交我怎么连线?

查看数: 4603 | 评论数: 6 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-7-21 12:01

正文摘要:

求大神指导下我的问题,51单片机开发板已经和L298N驱动模块连接了,但我不知道是否正确,目前我只是控制了一个小的直流电机,但是按下按键没有反应,不清楚是程序还是原理图出了问题,求大神指教,非常感谢! 以下 ...

回复

ID:221804 发表于 2017-7-23 17:55
注意和单片机共地
ID:221507 发表于 2017-7-23 09:45
前几天刚做了一个

#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int  uint;

sbit shineng = P1^2;   
sbit i0        = P1^0;                  
sbit i1        = P1^1;                    

sbit stop  = P3^4;     
sbit fan     = P3^5;     
sbit jia     = P3^7;   
sbit jian      = P3^6;   

sbit we=P2^7;
sbit du=P2^6;
static uchar c;
uchar th0=(65535-50000)/256;
uchar tl0=(65535-50000)%256;
code uchar disptab[]={0x3f,0x6,0x5b,0x4f,0x66,
0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,
0x79,0x71,0x0};
code uchar dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar dispbuf[6];

uchar speed = 0;
delayms(uint k);
PWM() ;
key();
delay1(uchar x);
Inittimer0();

void main(void)
{
        delayms(10);
        Inittimer0();
  while(1)
        {
                key();
                PWM();
                if(speed<100)
                {
                  dispbuf[5]=speed/20;
                       
                }
                else if(speed>=100)
                {
                        dispbuf[5]=5;
                       
                }
        }
       
       

}



delayms(uint k)     
{
        uint a,s;
   for(a=k;a>0;a--)
       for(s=110;s>0;s--);
}

PWM()      
{
  shineng=1;
  delayms(speed);
  shineng=0;
  delayms(100-speed);
}


key()
{
        if(stop==0)            
        {
                delayms(1);
                if(stop==0)
                {
                        while(stop==0);
                        i0 = 0;
                        i1 = 0;
                }
        }

        if(fan==0)               
        {
                delayms(1);
                if(fan==0)
                {               
                        while(fan==0);
                        i0=~i1;
      i0=~i0;
                        i1=~i1;
                }
        }
        if(jia==0)              //??
        {
                delayms(1);
                if(jia==0)
                {
                        while(jia==0);
                                speed=speed+20;
                                if(speed >= 100)
                                        speed=100;
                }
        }

        if(jian==0)             //??
        {
                delayms(1);
                if(jian==0)
                {
                        while(jian==0);
                        if(speed != 0)
                                speed=speed-20;
                  else if(speed<=0)
                                speed=0;                       
                }
        }       
}

delay1(uchar x)
{       
        uint y;
        for(;x>0;x--)
                for(y=100;y>0;y--);
}
timer0() interrupt 1
{
        static uchar count=0;
        uchar tmp;
        P0|=0x3f;
        we=1;
        tmp=dispbit[count];
        P0=P0&tmp;
        we=0;
  P0=disptab[16];
        du=1;
        tmp=dispbuf[count];
        tmp=disptab[tmp];
    P0=tmp;
        du=0;
        count++;
        if(count==6)
        {
                count=0;
        }
        TH0=th0;
        TL0=tl0;
}
Inittimer0()
{
        TMOD=0x02;
        TH0=th0;
        TL0=tl0;
        EA=1;
        ET0=1;
        TR0=1;
}




ID:164602 发表于 2017-7-22 08:48
看我给你的图。
要注意的是:5V是输出,供小车上的单片机用电。看你的图,是不需要的。

1.jpg (192.43 KB, 下载次数: 86)

1.jpg
ID:34643 发表于 2017-7-22 06:32
你这程序怎么前面都加了“//”,还能编译不?
ID:150593 发表于 2017-7-21 15:59
ENA端为0停止,让P1.0输出低电平停止
ID:169394 发表于 2017-7-21 14:09
按照以上的连接正反转能够实现了,但是停止实现不了,求大神指教!

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表