Simple LED Projects Using AVR Microcontroller

This article is another step forward in learning more about AVR microcontrollers. We have demonstrated 3 simple LED based projects using ATmega328 microcontroller, which will help you to learn its basic concepts. ATmega328 is an eight bit AVR (Advanced Virtual RISC) based microcontroller. It is a powerful microcontroller with a built-in  internal memory of around 32Kb. Most Arduino boards consist of an Atmel 8-bit AVR microcontroller with varying amounts of flash memory, pins, and features. Arduino Uno is a microcontroller board based on the ATmega328.

Simple LED Projects Using AVR Microcontroller

AVR microcontrollers are very easy to use. All AVR microcontrollers require Integrated Development Environment(IDE) such as Atmel Studio. Using this IDE, we can create, compile and debug program on all AVR microcontrollers.

Let’s develop simple LED Blinking programs for ATmega328 using Atmel Studio 7.

  1. Blinking Two LED’s using ATmega328
  2. Control Two LED’s using a Push button switch
  3. Toggle Two LED’s using a Push button switch

#1. Blinking Two LED’s using ATmega328

 In this section, we will learn How to blink two LEDs with AVR ATmega328 microcontroller. First, we will connect the 2 LED’s with PB2 and PB3 of  PORTB of the ATmega328 microcontroller. Then, we will make the 2 LED’s to blink with an interval of 1 second. It means, initially the 1st LED alone will glow and on the next second, it will turn off and the 2nd  one will glow. This process continues forever and in this way LEDs blinks continuously.

Assemble the circuit as shown in diagram. A photograph of the assembled circuit is shown below. A video demonstration of the project is shown below.

Program Explanation

Blinking Two LED’s Using ATmega328 – Download Program

 At the beginning of the program a pre-processor named “F_CPU” is defined. It is simply your way to tell some of the library code how many CPU cycles per second the processor is executing. Here we defined the F_CPU as 1 MHz. “#include <avr/io.h>” is a header files which provides you with various  i/o operations like DDRx, PINx, PORTx, etc. “#include <util/delay.h>” is a header file which provides you with inbuilt delay functions like _delay_ms(), _delay_us(), etc. “_delay_ms(1000)” provides a delay of 1000 milliseconds (i.e., equivalent to 1 second).

DDRx – Data Direction Register configures data direction of the port(Input/Output). The instruction “ DDRB |= (1<<DDB2)”  makes corresponding port pin as output.

Simple LED Projects Using AVR Microcontroller schematics

PORTx – Port register is for assigning appropriate values for the port pins.

Writing to PORTx.n will immediately change state of the port pins according to given value. “PORTB |=(1<<PORTB2)” will generate a high signal at PB2. And “PORTB&=~(1<<PORTB3)” is for generating a low signal at PB3.

Read more: Simple LED Projects Using AVR Microcontroller


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top