51单片机drv8870驱动直流电机pwm调速代码
时间: 2023-06-10 14:08:34 浏览: 81
以下是基于51单片机的drv8870驱动直流电机pwm调速代码:
```c
#include <reg51.h>
sbit IN1 = P1^0; // IN1连接P1.0
sbit IN2 = P1^1; // IN2连接P1.1
void delay(unsigned int t); // 延时函数
void main()
{
unsigned char i;
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0xFC; // 初始值,定时1毫秒
TL0 = 0x18;
TR0 = 1; // 启动定时器0
ET0 = 1; // 定时器0中断使能
EA = 1; // 总中断使能
while (1)
{
for (i = 0; i < 100; i++) // 增加PWM占空比
{
P1 = i;
delay(10);
}
for (i = 100; i >= 0; i--) // 减小PWM占空比
{
P1 = i;
delay(10);
}
}
}
void T0_ISR() interrupt 1 // 定时器0中断函数
{
static unsigned char count = 0;
count++;
if (count > 100)
{
count = 0;
}
if (count < P1) // 占空比控制
{
IN1 = 1;
IN2 = 0;
}
else
{
IN1 = 0;
IN2 = 1;
}
}
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--)
{
for (j = 110; j > 0; j--);
}
}
```
需要注意的是,以上代码仅作为参考,具体实现要根据自己的具体情况进行修改。
阅读全文