VSM Studio 直流电机H桥驱动PWM 单向控制

VSM Studio 直流电机H桥驱动PWM 单向控制

  • Proteus仿真

在这里插入图片描述

VSM Studio 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* Main.c file generated by New Project wizard
*
* Created: 周二 6月 7 2022
* Processor: AT89C52
* Compiler: Keil for 8051
*/

#include <REGX52.H>
#include <intrins.H>

// Define P3 pins
sbit Inc =P3^4;
sbit Dec = P3^5;
sbit Dir = P3^6 ;
sbit PWM = P3^7;

// Define new types
typedef unsigned char uchar;
typedef unsigned int uint;

void delay(uint);

void main(void)
{
int speed;
// Select initial direction and speed.
Dir = 1;
if (Dir)
speed = 400;
else
speed = 100;
while(1)
{ if(!Inc)
// Increase speed
speed = speed > 0 ? speed - 1 : 0;
if(!Dec)
// Decrease speed
speed = speed < 500 ? speed + 1 : 500;

// Drive a PWM signal out.
PWM=1;
delay(speed);
PWM=0;
delay(500-speed);
}
}

void delay(uint j)
{ for(; j>0; j--)
{
_nop_();
}
}

`/* Main.c file generated by New Project wizard
*

  • Created: 周二 6月 7 2022
  • Processor: AT89C52
  • Compiler: Keil for 8051
    */

#include <REGX52.H>
#include <intrins.H>

// Define P3 pins
sbit Inc =P3^4;
sbit Dec = P3^5;
sbit Dir = P3^6 ;
sbit PWM = P3^7;

// Define new types
typedef unsigned char uchar;
typedef unsigned int uint;

void delay(uint);

void main(void)
{
int speed;
// Select initial direction and speed.
Dir = 1;
if (Dir)
speed = 400;
else
speed = 100;
while(1)
{ if(!Inc)
// Increase speed
speed = speed > 0 ? speed - 1 : 0;
if(!Dec)
// Decrease speed
speed = speed < 500 ? speed + 1 : 500;

  // Drive a PWM signal out. 
  PWM=1;
  delay(speed);
  PWM=0;
  delay(500-speed);
}

}

void delay(uint j)
{ for(; j>0; j–)
{
nop();
}
}`

仿真资源

本实验基于Proteus8.12平台。

Proteus8.12

1
2
链接:https://pan.baidu.com/s/1a1oIn0mIsth85X3W7tAbRg 
提取码:ukg5

链接:https://pan.baidu.com/s/1a1oIn0mIsth85X3W7tAbRg 提取码:ukg5