#include <reg51.h>sbit motor = P1^0; // 直流电机控制信号void delay(unsigned int time) // 延时函数{ unsigned int i, j; for (i = time; i > 0; i--) for (j = 110; j > 0; j--);}void main(){ motor = 0; // 初始状态设为停止 while (1) { motor = 1; // 控制继电器闭合,使直流电机正转 delay(1000); // 延时1秒 motor = 0; // 控制继电器断开,使直流电机停止 delay(1000); // 延时1秒 motor = 1; // 控制继电器闭合,使直流电机反转 delay(1000); // 延时1秒 motor = 0; // 控制继电器断开,使直流电机停止 delay(1000); // 延时1秒 }}再这个的基础上加上两个按键使按键控制直流电机的转动与停止
时间: 2024-01-27 08:05:58 浏览: 53
单片机中用c编程时头文件reg51.h及reg52.h解析
好的,可以在代码中添加两个按键来控制直流电机的转动与停止。假设按键1接在P3.0引脚上,按键2接在P3.1引脚上,可以使用下面的代码实现:
```
#include <reg51.h>
sbit motor = P1^0; // 直流电机控制信号
sbit button1 = P3^0; // 按键1
sbit button2 = P3^1; // 按键2
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
motor = 0; // 初始状态设为停止
while (1)
{
if (button1 == 0) // 按键1按下,直流电机正转
{
motor = 1; // 控制继电器闭合,使直流电机正转
delay(1000); // 延时1秒
}
else if (button2 == 0) // 按键2按下,直流电机反转
{
motor = 0; // 控制继电器断开,使直流电机停止
delay(1000); // 延时1秒
motor = 1; // 控制继电器闭合,使直流电机反转
delay(1000); // 延时1秒
}
else // 没有按键按下,直流电机停止
{
motor = 0; // 控制继电器断开,使直流电机停止
delay(100); // 延时0.1秒,避免CPU占用率过高
}
}
}
```
在上述代码中,按键1按下时,直流电机正转;按键2按下时,直流电机先停止,然后反转。如果没有按键按下,则直流电机保持停止状态。由于按键可能存在抖动,需要在按键检测过程中添加一些延时来消除抖动。另外,为了避免CPU占用率过高,可以在没有按键按下时添加一个短暂的延时。
阅读全文