如何用单片机来控制步进电机,并用两盏灯分别来表示其正反转! 大侠可以在空闲时帮我画个电路图吗?谢谢

如果能有电路文件和程序编程就万分感谢!

/****************************************************************

                                                             

程序名称:  按键控制电机正反转           

           p1.0键为反转 p1.1键为停止  p1.2键为正转                                                     

             

*****************************************************************/


/*头文件*/

#include <reg52.h>     

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

#define _Nop() _nop_()


/*端口定义*/   

#define motor P0  /*步进电机接口*/

sbit P12 = P1^2;  /*控制正转按键*/

sbit P11 = P1^1;  /*控制电机停止*/

sbit P10 = P1^0;  /*控制电机反转*/

sbit led1 = P1^3;  /*正转指示灯*/

sbit led2 = P1^4;  /*反转指示灯*/


uchar code table1[]={0xf3,0xf6,0xfc,0xf9};  /*正转表*/

uchar code table2[]={0xf3,0xf9,0xfc,0xf6};  /*反转表*/

 

/*1MS为单位的延时程序*/

void delay_1ms(uchar x)

{

    uchar j;

    while(x--) { for(j=0;j<125;j++); }   

}

 

/*主程序*/

void main()

{

 uchar yunzhuang=0; /*运转状况 0停止 1正转 2反转*/

 uchar count=0; /*电机转动步数*/

 motor = 0xf0; /*电机停止*/

       

 while(1){

  if(yunzhuang==0){

    motor = 0xf0; /*电机停转*/

                        led1=0;led2=0;

   }

  else if(yunzhuang==1){

                        led1=0;led2=1;     //等于0为点亮LED灯

    motor = table1[count]; /*电机正转*/

   }

  else if(yunzhuang==2){

                        led1=1;led2=0;     //等于0为点亮LED灯

    motor = table2[count]; /*电机反转*/

   }

  count++;

  if(count>=4) count=0;

  delay_1ms(5);

  if(P12==0){

   delay_1ms(3);

   if(P12==0){

    yunzhuang = 1;

    }

   }

  else if(P11==0){

   delay_1ms(3);

   if(P11==0){

    yunzhuang = 0;

    count = 0;

    }

   }

  else if(P10==0){

   delay_1ms(3);

   if(P10==0){

    yunzhuang = 2;

    }

   }

  }

}

温馨提示:答案为网友推荐,仅供参考
相似回答