用单片机控制直流电机转动和停止?1盏灯来表示!

2025-04-01 21:24:47
推荐回答(5个)
回答1:

特地为你制作的一个按钮改变LED亮/灭(电机启/停)的原理图和程序。

汇编程序:
         ORG0000H;复位后LED灭
MAIN:    JB P3.2,MAIN;等待按钮动作
         ACALL DELAY_50MS;按钮去抖动延时50毫秒
         JB P3.2,MAIN;确认按钮动作                       
         CPL P1.0;LED动作取反
         JNB P3.2,$;等待按钮释放
         SJMP MAIN

DELAY_50MS:MOV R2,#50;延时子程序
LOOP:      MOV R3,#200
LOOP1:     NOP
           NOP
           DJNZ R3,LOOP1
           DJNZ R2,LOOP
           END 
           
C语言程序:
#include
#include
#define uchar unsigned char
#define LED P1^0//LED引脚定义
#define KEY P3^2//按钮引脚定义
void DELAY(uchar MS);//延时函数声明
void main()
{
 while(1)
  {
   while(KEY);//等待按钮动作
   DELAY_50MS(50);//按钮去抖动延时50毫秒
   if(!KEY)LED = ~LED;//确认按钮动作,LED动作取反
   while(!KEY);//等待按钮释放
  }
}

void DELAY(uchar MS)
{
 uchar i;
 for(;MS>0;MS--)
 for(i = 200;i>0;i--)
 {
  _nop_();
  _nop_();
 }
}

回答2:

51单片机对直流电机的转动,是通过高低电平来控制的
直流电机有两根线,分别简称为正和负
第一种情况,当正接电源负接地的时候,电机正转
第二种情况,当正接地负接电源的时候,电机反转
第三种情况,当正和负都接电源或者都接地的时候,电机停止
综上,51单片机通过IO口连接电机的正和负
然后给高低电平,就可以控制直流电机正转和反转了。

回答3:

#include //通用89C52头文件
sbit KEY1 = P2 ^ 0; //设置按键接在P2.0
sbit KEY2 = P2 ^ 1; //设置按键接在P2.1
sbit LED = P2 ^ 1; //设置显示接在P2.2
/*********************************************************************************************/
/*********************************************************************************************/
void main( )
{
LED=1;//单片机端口0有效,先设置为1,停止运转
while(1)
{
if(KEY1 == 0) { LED=0; }//如果按下启动键,则点亮LED,电机运转
if(KEY2 == 0) { LED=1; }//如果按下停止键,则熄灭LED,电机停转
}
}
/*********************************************************************************************/
/*********************************************************************************************/

回答4:

 

代码用1楼,我做个原理图

回答5:

单片机控制直流电机转动和停止 仿真实例,供参考