You are on page 1of 5

Tutorial No.

: 4
Tutorial Name: DC-Motor control



Content: page
1. Bill of Materials --------------------------------------------------- 3
2. Circuit connection------------------------------------------------- 4
2.1 Proteus components------------------------------------------4
3. Code----------------------------------------------------------------- 5

1-Bill of Materials:
# Name Quantity
1 ATmega16A-pu 40pin 1
2 Crystal Oscillator 8MHz 1
3 Resistance 10K 1
4 22pF Capacitor 2
5 DC-Motor 12V 1
6 L293D Motor driver (H-birdge) 1















2- Circuit Connection:











2.1 Proteus components:
1. ATmega16.
2. Resistance.
3. Capacitor.
4. Crystal.
5. Motor.
6. L293D motor driver.




3- Code:

#ifndef F_CPU
#define F_CPU 8000000UL // "set the clock to 8MHz"
#endif


#include <avr/io.h> //io.h is AVR ports Header file
#include <util/delay.h> //delay.h is Delay Function Header file
#include <avr/iom16.h> //iom16.h is atmega16 ports Header file

int main(void)
{
DDRC=0xff; // SET ALL PORTC pins as Output
PORTC=0x00; // Initialize PORTC to zero


while(1)
{
//Motor 'M1' control -------------------------------------------------------------

PORTC=(1<<PC0)|(0<<PC1); //Apply '1' on pin0 and '0' on pin1
_delay_ms(100); //Which make the motor "M1" rotate counter-clock wise

PORTC=(1<<PC0)|(1<<PC1); //Apply '1' on pin0 and '1' on pin1
_delay_ms(100); //Which make the motor "M1" stop rotating

PORTC=(0<<PC0)|(1<<PC1); //Apply '0' on pin0 and '1' on pin1
_delay_ms(100); //Which make the motor "M1" rotate clock wise

PORTC=(0<<PC0)|(0<<PC1); //Apply '0' on pin0 and '0' on pin1
_delay_ms(100); //Which make the motor "M1" stop rotating

//Motor 'M2' control--------------------------------------------------------------

PORTC=(1<<PC5)|(0<<PC6); //Apply '1' on pin5 and '0' on pin6
_delay_ms(100); //Which make the motor "M1" rotate clock wise

PORTC=(1<<PC5)|(1<<PC6); //Apply '1' on pin5 and '1' on pin6
_delay_ms(100); //Which make the motor "M1" stop rotating

PORTC=(0<<PC5)|(1<<PC6); //Apply '0' on pin5 and '1' on pin6
_delay_ms(100); //Which make the motor "M1" rotate counter-clock wise

PORTC=(0<<PC5)|(0<<PC6); //Apply '0' on pin5 and '0' on pin6
_delay_ms(100); //Which make the motor "M1" stop rotating

}
}

You might also like