STC89C52RC通过TB6612驱动直流电机调速的程序代码
时间: 2023-09-01 12:13:35 浏览: 47
以下是STC89C52RC通过TB6612驱动直流电机调速的程序代码:
```c
#include <STC89C5xRC.H>
#define uchar unsigned char
#define uint unsigned int
sbit PWMA=P1^2;
sbit AIN1=P1^3;
sbit AIN2=P1^4;
sbit PWMB=P1^5;
sbit BIN1=P1^6;
sbit BIN2=P1^7;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void MotorA(uchar speed,bit direction)
{
PWMA=speed;
if(direction)
{
AIN1=1;
AIN2=0;
}
else
{
AIN1=0;
AIN2=1;
}
}
void MotorB(uchar speed,bit direction)
{
PWMB=speed;
if(direction)
{
BIN1=1;
BIN2=0;
}
else
{
BIN1=0;
BIN2=1;
}
}
void main()
{
uchar i;
PWMA=0;
AIN1=0;
AIN2=0;
PWMB=0;
BIN1=0;
BIN2=0;
while(1)
{
for(i=0;i<255;i++)
{
MotorA(i,1);
MotorB(i,1);
delay(10);
}
for(i=0;i<255;i++)
{
MotorA(i,0);
MotorB(i,0);
delay(10);
}
}
}
```
这段代码主要是通过PWM控制TB6612驱动的直流电机的速度,其中`MotorA`和`MotorB`函数用于控制两个电机的速度和方向。在`main`函数中,通过循环控制电机从0到255的速度变化,并且在两个方向上都进行了测试。需要注意的是,这里的PWM控制是通过改变`PWMA`和`PWMB`的值来实现调速的。