基于89c51任务要求1: 请设计程序,控制直流电动机实现以下步骤(控制旋转速度的电压值及旋转时间,可以自由选定): 1.电机在2s,从禁止状态加速到5V电压旋转; 2.以5V的电压运行10s; 3.2秒时间内,从5V的电压减少到3.5V; 4.以3.5V的电压运行7s后停止;
时间: 2024-02-22 11:56:46 浏览: 29
以下是89c51控制直流电动机的程序设计,实现上述步骤:
```
#include <reg51.h>
// 定义端口
#define MOTOR P2
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
unsigned char speed, i;
// 初始化电机为禁止状态
MOTOR = 0x00;
// 步骤1:电机在2s内从禁止状态加速到5V电压旋转
for (i = 0; i < 255; i++)
{
speed = i;
MOTOR = speed; // 控制电机旋转速度
delay(10); // 延时10ms
}
// 步骤2:以5V电压运行10s
speed = 255;
MOTOR = speed;
delay(10000); // 延时10s
// 步骤3:2秒时间内,从5V的电压减少到3.5V
for (i = 255; i > 178; i--)
{
speed = i;
MOTOR = speed;
delay(10);
}
// 步骤4:以3.5V的电压运行7s后停止
speed = 178;
MOTOR = speed;
delay(7000); // 延时7s
// 停止电机旋转
MOTOR = 0x00;
}
```
上述程序中使用了一个延时函数 `delay()`,可以根据实际情况调整延时时间。在程序中,通过控制电机的电压值来控制电机的旋转速度,其中速度值的范围为0-255,0为禁止状态,255为最大电压旋转速度。根据步骤要求,程序中通过循环语句控制电机的电压值从禁止状态加速到5V,再以5V运行10s,接着从5V减少到3.5V,最后以3.5V运行7s后停止。