L298N驱动模块---51单片机代码

简介: L298N驱动模块---51单片机代码

L298N驱动模块详解与代码


image.png

使能:开关

跳线帽:内部有金属接线,使用跳线帽在使能时,该开关短路,使能关闭

注意:电机与51单片机的接地点应接到一处

另:因为51单片机的电源是5v,可以将模块上的5V输出给到51单片机,就可以不用再另给51单片机连接一个电源

image.png

使能:开关

跳线帽:内部有金属接线,使用跳线帽在使能时,该开关短路,使能关闭

pwm频率:每秒钟信号从高电平到低电平再回到高电平的次数(频率高低与输出响应的速度相关)

占空比:高电平持续时间占总周期的比例

程序设计:

//此程序的目的是进行占空比为30%的一个使用pwm调速法控制的电机 pwm频率为1000hz也就是1ms,我们选择一次定时中断用时0.01ms,一共要100次中断才达到1ms,设置初值方面,因为晶振频率约为12mhz,所以一个机械周期约为1us也就是0.001ms,以此对应设置初值。

#include<reg52.h> 
void main()
{
        ENA = 1;
  IN1 = 0;
  IN2 = 1;   //正转
  set();
  while(1)
  {     
  }     
}
void set()
{
  TMOD=0x01;//定时器0工作方式1
  TH0=a;//(65536-100)/256;//赋初值定时
  TL0=b;//(65536-100)%256;//0.01ms
  EA=1;//开总中断
  ET0=1;//开定时器0中断
  TR0=1;//启动定时器0 
} 
void tim0() interrupt 1
{
  TR0=0;//赋初值时,关闭定时器
  TH0=a;//(65536-10)/256;//赋初值定时
  TL0=b;//(65536-10)%256;//0.01ms
  TR0=1;//打开定时器
  time++;
  if(time>=100)  //1khz
    time=0;   
  if(time<=30)   //占空比%30,可改
    IN1 = 0,IN2 = 1;  
  else 
      IN1 = 1,IN2 = 0;
}

0,IN2 = 1;

else

IN1 = 1,IN2 = 0;

}

此处也可以使用定时中断方式2,但需要修改初值可以被256整除.
相关文章
|
8天前
|
存储 算法 编译器
如何优化单片机程序里面的C代码方法
如何优化单片机程序里面的C代码方法
24 0
|
8天前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
8天前
|
传感器
51单片机矩阵键盘超详解!(内含LCD1602代码)
51单片机矩阵键盘超详解!(内含LCD1602代码)
13 0
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
|
8天前
|
C++
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
【51单片机】静态数码管显示(设计思路&原理&代码演示)
|
8天前
|
芯片 数据格式
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
【单片机】简单的自定义延时程序设计(代码演示)
【单片机】简单的自定义延时程序设计(代码演示)