Interface stepper motor with 8051

A stepper motor is an electromechanical device which converts electrical pulses into discrete mechanical movement or steps.

  • This motor divides a full rotation of 360 degrees into a number of equal steps.
  • Stepper Motor are classified into two, based on its winding arrangement.
    • Unipolar Motor.
    • Bipolar Motor.


  • A unipolar motor has centre tapped windings.
  • By centre connection,coils are tied together and used as the power connection.
  • By this arrangement a magnetic poles can be reversed without reversing the direction of current.
unipolar stepper coil


  • Bipolar motor have no center tap connections.
  • Current through a winding should be reversed to reverse the magnetic poles.
  • So the driving circuit should be more complicated.
  • We can solve this by using a H-bridge connection or by using ready made chips such as L293D.
bipolar stepper coil

Driving of Stepper Motor : Stepping Modes

There are three types of stepping modes.
1. Wave Drive : One at On a Time,
2. Full Drive : Two at On a Time,
3. Half Drive : One or Two On at a Time.

Wave Drive

  • Only one stator electromagnet is energized at a time.
  • The torque is significantly less.
  • It is rarely used.

Wave Drive Stepping Sequence

Half Drive

  • One and two phases are energized alternatively .
  • Increase the angular resolution of the motor but the torque is less approximately 70%.

Half Drive Stepping Sequence

Full Drive

  • Two stator electromagnets are energized at a time.
  • The motor will run at its full torque.

Full Drive Stepping Sequence

L293D Motor Driver

  • L293D is a H-BRIDGE dc motor controller,which can control dc motor upto 36V.
  • Driver allow dc motor to rotate in both direction,which can interface and control two motor at a time with microcontroller.
  • Driver allow voltage to flow in both direction hence motor can rotate in both clock and anti-clock direction.

Direction Table

Hardware Required

  • Stepper Motor.
  • L293D Motor Driver.
  • 8051 MicroController.

Circuit Unipolar

Circuit Bipolar

Virtual Circuit


#include <REGx51.h>
 void delay()
  int i,j;
 void main()
 P1=0x01;    //0001
 P1=0x02;    //0010
 P1=0x04;    //0100
 P1=0x08;    //1000