找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3671|回复: 6
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
求大神指导下我的问题,51单片机开发板已经和L298N驱动模块连接了,但我不知道是否正确,目前我只是控制了一个小的直流电机,但是按下按键没有反应,不清楚是程序还是原理图出了问题,求大神指教,非常感谢!
以下是我的程序、原理图和连线图。
//#include <reg52.h>
//
////--定义使用的IO口--//
//sbit PWM=P1^0;
//
////--定义一个全局变量--//
//unsigned char timer1;
//#define uint  unsigned int
//#define uchar unsigned char
//uint i;
//void Time1Config();
//sbit IN1=P1^3;
//sbit IN2=P1^4;               
//sbit ENA=P1^0;
//sbit K2=P2^1;          //正转
//sbit K3=P2^2;          //反转
//
//void delay ( uint x)                                          
//{                                                                                                                               
//    uint y;       
//        for(;x>0;x--)                  
//        for(y=0;y<200;y++);                                                          
//}
//
///*******************************************************************************
//* 函 数 名       : main
//* 函数功能                 : 主函数
//* 输    入       : 无
//* 输    出       : 无
//*******************************************************************************/
//
//void main(void)
//{
//        Time1Config();
//        while(1)
//        {
//                if(timer1>100)  //PWM周期为100*0.5ms
//                {
//                        timer1=0;
//                }
//                if(timer1<20)        //改变30这个值可以改变直流电机的速度
//                {
//                        PWM=1;
//                }
//                else
//                {
//                        PWM=0;
//                }
//               
//               
//                if(K2==0)
//                {
//            ENA=1;
//                        IN1=1;                 //正转                                                  
//                        IN2=0;
//                        for(i=0;i<200;i++)
//                        {
//                                delay(200);
//                                ENA=~ENA;
//                        }
//                }
//                if(K3==0)
//                {       
//            ENA=1;   
//                        IN1=0;                 //反转                                                  
//                        IN2=1;
//                        for(i=0;i<200;i++)
//                        {
//                                delay(200);
//                                ENA=~ENA;
//                        }
//                }
//
//        }
//       
//
// }
//
///*******************************************************************************
//* 函 数 名       : Time1Config
//* 函数功能                 : 设置定时器
//* 输    入       : 无
//* 输    出       : 无
//*******************************************************************************/
//
//void Time1Config()
//{
//        TMOD|= 0x10;   //设置定时计数器工作方式1为定时器
//
//        //--定时器赋初始值,12MHZ下定时0.5ms--//  
//        TH1 = 0xFE;
//        TL1 = 0x0C;
//
//       
//        ET1 = 1;          //开启定时器1中断
//        EA = 1;
//        TR1 = 1;         //开启定时器       
//}
//
//void Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
//{
//        TH1 = 0xFE;  //重新赋初值
//        TL1 = 0x0C;
//        timer1++;   
//}
//

P70721-113131.jpg (3.63 MB, 下载次数: 65)

P70721-113131.jpg

P70721-113136.jpg (4.18 MB, 下载次数: 78)

P70721-113136.jpg

P70721-113150.jpg (4.02 MB, 下载次数: 61)

P70721-113150.jpg

YY31VHB3W`(I90MUJHJD(]1.png (18.98 KB, 下载次数: 76)

YY31VHB3W`(I90MUJHJD(]1.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:169394 发表于 2017-7-21 14:09 | 只看该作者
按照以上的连接正反转能够实现了,但是停止实现不了,求大神指教!
回复

使用道具 举报

板凳
ID:150593 发表于 2017-7-21 15:59 | 只看该作者
ENA端为0停止,让P1.0输出低电平停止
回复

使用道具 举报

地板
ID:34643 发表于 2017-7-22 06:32 | 只看该作者
你这程序怎么前面都加了“//”,还能编译不?
回复

使用道具 举报

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

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

1.jpg
回复

使用道具 举报

6#
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;
}




回复

使用道具 举报

7#
ID:221804 发表于 2017-7-23 17:55 | 只看该作者
注意和单片机共地
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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