基于51单片机的L298电机PWM驱动汇编程序

仿真图:

在这里插入图片描述

功能简介:

单片机采用AT89C51,最小系统由晶振和复位电路组成
具有多个功能按键,分别是启动、暂停和加速以及减速等功能
电机驱动芯片采用的是L298,注意供电需要提供12V

芯片/模块的特点:

L298特点:

高驱动能力:L298具有高驱动电流能力,能够提供最高4安培的峰值输出电流。这使得它可以驱动较大功率的直流电机,适用于许多高性能应用。

双全桥结构:L298具有双全桥结构,即两个独立的H桥电路,可以分别控制两个直流电机的运行方向和速度。这种结构使得同时控制多个电机变得更加方便。

输入控制灵活:L298的输入控制接口可以使用标准的逻辑电平(TTL或CMOS)来控制电机的运行。它可以接受脉冲宽度调制(PWM)信号来实现速度控制,并且支持正向、反向和制动模式的控制。

内置保护功能:L298具有内置的过流保护和过温保护功能,可以保护芯片和外部电路免受损坏。当输出电流超过设定值或芯片温度过高时,保护功能会自动触发。

低功耗待机模式:L298具有低功耗待机模式,可以通过控制输入信号将芯片置于低功耗状态。这有助于节省电能和延长电池寿命。

多种封装形式:L298可提供不同的封装形式,如多引脚直插式封装(DIP)和表面贴装技术(SMT)封装。这使得L298适应不同应用的安装需求。

主程序:

PWMH DATA  30H ;占空比
PWM  DATA  31H ;周期长度(pwm*250us)
COUNTER  EQU  R0 ;计数器计数
TEMP DATA  33H ;暂存
IN1 EQU P2.0
IN2 EQU P2.1
ORG 0000H
LJMP MAIN
ORG  000BH
LJMP  INTT0
ORG  0030H
MAIN:
MOV  SP,#60H  
MOV  PWMH,#4  ;占空比初值
MOV  COUNTER,#11;计数器初值
MOV PWM,#11  ;周期初值
MOV  TMOD,#02H  ;定时器0,工作模式2
MOV  TL0,#06H ;定时250us
MOV  TH0,#06H ;自动重装初值
SETB  ET0 ;开定时器中断
SETB  EA ;开总中断
SETB  TR0 ;启动定时器
CLR IN1
CLR IN2
KSCAN:
JNB P2.3,K1CHECK  ;扫描加速键
JNB P2.5,K2CHECK  ;扫描减速键
JNB P2.4,K3CHECK  ;扫描启动键
JNB P2.6,K4CHECK  ;扫描停止键
SJMP  KSCAN



K1CHECK:
LCALL DELAY
JB  P2.3,KSCAN ;延时去抖
BACK1:
JNB P2.3,BACK1;等待按键松开
SJMP K1HANDLE;跳转处理子程序
K1HANDLE:
MOV  A,PWMH
CJNE  A,PWM,K1H0 ;判断是否达到上边界
SJMP  KSCAN ;达到最大,无法增加,不做处理
K1H0:          
MOV  A,PWMH ;未到最大
INC A     
MOV PWMH,A ;占空比未到最大
SJMP KSCAN

K2CHECK:
LCALL DELAY
JB  P2.5,KSCAN ;延时去抖
BACK2:
JNB P2.5,BACK2;等待按键松开
SJMP K2HANDLE;跳转处理子程序
K2HANDLE:
MOV  A,PWMH
CJNE  A,#02H,K2H0 ;判断是否达到下边界
SJMP  KSCAN ;达到最小,无法减小,不做处理
K2H0:          
MOV  A,PWMH ;未到最小
DEC A     
MOV PWMH,A ;
SJMP KSCAN

K3CHECK:
LCALL DELAY
JB  P2.4,KSCAN ;延时去抖
BACK3:
JNB P2.4,BACK3;等待按键松开
SJMP K3HANDLE;跳转处理子程序
K3HANDLE:
SETB IN1
CLR IN2;电机正转
SJMP KSCAN

K4CHECK:
LCALL DELAY
JB  P2.6,KSCAN ;延时去抖
BACK4:
JNB P2.6,BACK4;等待按键松开
SJMP K4HANDLE;跳转处理子程序
K4HANDLE:
CLR IN1
CLR IN2;电机反转
SJMP KSCAN

DELAY:
PUSH PSW;
MOV R6,#09FH;
D1: MOV R7,#0F9H;
D2: DJNZ R7,D2;
DJNZ R6,D1;
POP PSW;
RET



INTT0:      ;定时器中断函数
PUSH  PSW 
PUSH  ACC
DJNZ COUNTER,INTT01 ;达到一个周期
MOV COUNTER,#10
INTT01:
CLR C
MOV A,COUNTER
CJNE  A,PWMH,INTT02 ;判断pwm条件,counter<pwmh,c=1
INTT02:
JC HLEVEL ;counter<pwmh
CLR P2.2
HLEVEL:
SETB P2.2
OUT:
POP ACC 
POP PSW
RETI
END;

设计文件:

链接:https://pan.baidu.com/s/1hMGUkagWqsa1mnAM3UtRsg?pwd=q2zq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值