• STC51单片机34——五线四相步进电机驱动(1个步进电机)


     

    /*--------------------------------------------------------------------------------
         MCU:             STC15W408AS 注意其没有T1,但是有T2
         开发板:             STC15W408AS最小系统板
         晶振:              内部时钟11.0592M,波特率38400
         扩展模块:        -
         软件:            Keil.C51.V9.01
    -------------------------------------------------------------------------------------*/


    #include "STC15.h"

    #define u8 unsigned char
    #define u16 unsigned int    


    sbit StepperPin1=P1^2;
    sbit StepperPin2=P1^3;
    sbit StepperPin3=P1^4;
    sbit StepperPin4=P1^5;

    void StepmotorDelay(u8 n){
      u16 i;
        for(;n>0;n--)
          for(i=2000;i>0;i--) //不要小于2000
                ;
    }

    void Step(void);


    //----------------------------------------------------------   
    //  函数名称:void IniSerialPort(void)   
    //  函数功能:串口初始化   
    //----------------------------------------------------------   

    void InitSerialPort(void)
    {
            SCON = 0x50;            //8位数据,可变波特率
        AUXR = 0x14;                //T2为1T模式, 并启动定时器2
        AUXR |= 0x01;               //选择定时器2为串口1的波特率发生器
            T2L = 0xB8;        //设置定时初始值
          T2H = 0xFF;        //设置定时初始值
          ES=1;                     //串口中断开关,采用查询法时不用打开中断   
        EA=1;    
          //PS=1;//高优先级
        REN=1;                  //串口为工作方式1,允许接收数据
    }
    //----------------------------------------------------------   
    //  函数名称:void SerialPortInte(void)
    //  函数功能:串口中断方式接收一个字符
    //----------------------------------------------------------   
    #define Download_command 0xf1 //功能码

    void SerialPortInte(void) interrupt 4
    {
        unsigned char dat;
        unsigned int ISP_i,ISP_j;
        
        if(TI==1)
        {
            TI=0;
        }
        else
        {
            RI=0;
            dat=SBUF;
            SBUF=dat;
            if(dat==Download_command)
            {
                for(ISP_j=1000;ISP_j>0;ISP_j--)
                  for(ISP_i=123;ISP_i>0;ISP_i--);
                IAP_CONTR =0x60;//软件复位
            }
        }
    }

    /************************主函数******************************************************/
    void main()  
    {
      InitSerialPort();
         while(1)
         {
          Step();
                StepmotorDelay(10);
         }
    }  

    u8 StepN=1;
    void Step(void) //4 相8 拍
    {
        switch(StepN){
            case 1: StepperPin1=1;
                            StepperPin2=0;
                            StepperPin3=0;
                            StepperPin4=0;
                            break;
            case 2: StepperPin1=1;
                            StepperPin2=1;
                            StepperPin3=0;
                            StepperPin4=0;    
                            break;
            case 3: StepperPin1=0;
                            StepperPin2=1;
                            StepperPin3=0;
                            StepperPin4=0;    
                            break;
            case 4: StepperPin1=0;
                            StepperPin2=1;
                            StepperPin3=1;
                            StepperPin4=0;
                            break;
            case 5: StepperPin1=0;
                            StepperPin2=0;
                            StepperPin3=1;
                            StepperPin4=0;
                            break;
            case 6: StepperPin1=0;
                            StepperPin2=0;
                            StepperPin3=1;
                            StepperPin4=1;
                            break;
            case 7: StepperPin1=0;
                            StepperPin2=0;
                            StepperPin3=0;
                            StepperPin4=1;
                            break;
            case 8: StepperPin1=1;
                            StepperPin2=0;
                            StepperPin3=0;
                            StepperPin4=1;        
                            StepN=0;
                            break;
        default:break;                        
        }
        StepN++;
        StepmotorDelay(1);

    }

    完整资料打包:

    STC51单片机34-五线四相步进电机驱动(1个步进电机)-单片机文档类资源-CSDN下载

  • 相关阅读:
    基础算法C++讲解(目前更新至:双指针)
    推荐一个好用的电商开源项目yudao源码
    Live800:三点自测,你的客服系统该升级了吗?
    分析java.lang.IncompatibleClassChangeError
    代码随想录动day单调栈
    基于梯度优化的BP神经网络(分类应用) - 附代码
    单片机调试
    reactNative导入excel文件
    ON-LSTM介绍
    七大软件设置原则
  • 原文地址:https://blog.csdn.net/fengyuzhe13/article/details/127945108