AVR microcontroller PWM controls the speed and forward and reverse rotation of DC motor

Publisher:CaptivatingGazeLatest update time:2019-11-13 Source: 51hei Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

Controlled by uln2003, the following is the simulation schematic diagram:
0.png

Source program:

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

?Copyright 1998-2008 Pavel Haiduc, HP InfoTech srl

http://www.hpinfotech.com


Project : 

Version : 

Date    : 7/26/2009

Author  : 

Company : 

Comments: 



Chip type           : ATmega32

Program type        : Application

Clock frequency     : 12.000000 MHz

Memory model        : Small

External RAM size   : 0

Data Stack size     : 512

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


#include

#include


// Declare your global variables here


void Motor_Speed (int x)

{

switch (x)

   {

    case 0:    PORTB = 0x00;

               break;

                

    case 6:    PORTB = 0x08;

               break;                

    

    case 12:   PORTB = 0x28;

               break;

                

    case -6:   PORTB = 0x10;

               break;                        

                

    case -12:  PORTB = 0x30;

               break;                    

   }

}

//////////////////////////////////////////////////////////////////

void main(void)

{

// Declare your local variables here


// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 

PORTA=0x00;

DDRA=0x00;


// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 

PORTB=0x00;

DDRB=0xFF;


// Port C initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 

PORTC=0x00;

DDRC=0xFF;


// Port D initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 

PORTD=0x00;

DDRD=0xFF;


// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;


// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;


// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;


// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;


// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;


// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;


while (1)

      {

            Motor_Speed(6);

            delay_ms(3000);

       

            Motor_Speed(12);

            delay_ms(3000);

       

            Motor_Speed(-6);

            delay_ms(3000);

       

            Motor_Speed(-12);

            delay_ms(3000);

       

            Motor_Speed(0);

            delay_ms(3000);     

      };

}



Reference address:AVR microcontroller PWM controls the speed and forward and reverse rotation of DC motor

Previous article:LCD12864 simple menu program, eight buttons with proteus simulation and program
Next article:MCU CNC PTZ master simulation and source program

Latest Microcontroller Articles
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号