【资源下载】下载地址如下1547:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
直流电机PWM控制系统的主要功能包括:实现对直流电机的加速、减速以及电机的正转、反转和急停,并且可以调整电机的转速,能够很方便的实现电机的智能控制。
主体电路:即直流电机PWM控制模块。这部分电路主要由AT89S52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,能够很方便的实现电机的智能控制。其间是通过AT89S52单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。该直流电机PWM控制系统由以下电路模块组成:
设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速以及电机的正转、反转和急停控制。
设计控制部分:主要由AT89S52单片机的外部中断扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298直流电机驱动模块组成。
设计显示部分: LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/**********************************************************************
L298n接口定义
**********************************************************************/
sbit MOTOR_A_1=P3^6;
sbit MOTOR_A_2=P3^7;
sbit k1=P1^0; //定义k1为p1.0口
sbit k2=P1^1; //定义k2为p1.1口
sbit k3=P1^2; //定义k3为p1.2口
sbit k4=P1^3; //定义k4为p1.3口
uchar T=0; //定时标记
uchar W=0; //脉宽值 0~100
uchar A=0; //方向标记 0,1
uchar k=0; //按键标记
uchar i=0; //计数变量
uchar code table1[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table2[]={0xfe,0xfb,0xfd,0xf7};
void delayms(uint t);
/**********************************************************************
数码管显示
**********************************************************************/
void disp(void)
{
P2=table2[3];
P0=table1[W%10]; //显示占空比个位
delayms(1); //延时1ms
P2=0xff; //P0清1
P2=table2[2];
P0=table1[W/100]; //显示占空比百位
delayms(1); //延时1ms
P2=0xff; //P0清1
P2=table2[1];
P0=table1[W/10%10]; //显示占空比十位
delayms(1); //延时1ms
P2=0xff; //P0清1