Hello Readers, welcome to my Blog BloggerTipsTricks. com - A Blog For Bloggers By A Blogger. I'm Arun, an entrepreneur Blogger from India.

16X2 Alphanumeric LCD Interfacing with ATmega16

20800
Mark as Favourite

LCD (Liquid Crystal Display) screen is an electronic display module and find a wide range of applications. These modules are preferred over seven segments and other multi segment LEDs. When you start working with LCD modules you will start feeling the real power of MCU and your imaginations will be touching sky. The alphanumeric LCD that we are going to interface is a 16X2 alphanumeric LCD. It means the LCD can display 16 characters in each row and it has two rows. It is a HD44780 controller based LCD. There are two methods to interface any alphanumeric LCD with AVR ATmega16 microcontroller: 8-bit and 4-bit interfacing method. In 8-bit interfacing method, all the eight data pins of the alphanumeric LCD are used and in 4-bit interfacing method, only the upper 4 data pins (D4, D5, D6 and D7) of the alphanumeric LCD are used to send 8-bit data (or command) to the alphanumeric LCD from the microcontroller. In 8-bit method, the 8-bit data (or command) is sent at a time using the 8 data lines of the alphanumeric LCD but in 4-bit method, the 8-bit data (or command) cannot be sent at a time to the alphanumeric LCD. So, the upper 4 bits of data (or command) are sent first and the lower 4 bits are sent later.

In this project, we will learn How to interface a 16X2 alphanumeric LCD with AVR ATmega16 microcontroller using 8-bit interfacing method. Here, we will display “ABLab Solutions” in 1st row and “www.ablab.in” in 2nd row of the 16X2 alphanumeric LCD.

Softwares Required

Hardwares Required

Name / Unit Price Quantity Total Price
AVR Trainer Board-100 with ATmega16
Rs. 700.00
1pc
Rs.700.00
AVR USB Programmer
Rs. 350.00
1pc
Rs.350.00
RG1602A 16X2 Alphanumeric LCD Green
Rs. 150.00
1pc
Rs.150.00
12V, 1A DC SMPS Adaptor
Rs. 130.00
1pc
Rs.130.00
1 to 1 Connector-Female to Female
Rs. 4.00
3pc
Rs.12.00
10 to 10 FRC Female to Female Connector
Rs. 15.00
2pc
Rs.30.00
TOTAL Rs.1372.00

Circuit Diagram

C Program

Fullscreen
 

 //**************************************************************//
//System Clock                          :1MHz
//Software                                 :AVR Studio 4
//LCD Data Interfacing             :8-Bit
//**************************************************************//

#include<avr/io.h>
/*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/

#define          F_CPU          1000000
/*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/

#include<util/delay.h>
/*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/

#define          LCD_DATA_PORT          PORTB
/*Defines a macro for the lcd.h header File. LCD_DATA_PORT is the microcontroller PORT Register to which the data pins of the LCD are connected. Default PORT Register for data pins in lcd.h header file is PORTA*/

#define          LCD_CONT_PORT          PORTD
/*Defines a macro for the lcd.h header File. LCD_CONT_PORT is the microcontroller PORT Register to which the control pins of the LCD are connected. Default PORT Register for control pins in lcd.h header file is PORTB*/

#define          LCD_RS          PD0
/*Defines a macro for the lcd.h header file. LCD_RS is the microcontroller Port pin to which the RS pin of the LCD is connected. Default Port pin for RS pin in lcd.h header file is PB0*/

#define          LCD_RW          PD1
/*Defines a macro for the lcd.h header file. LCD_RW is the microcontroller Port pin to which the RW pin of the LCD is connected. Default Port pin for RW pin in lcd.h header file is PB1*/

#define          LCD_EN          PD2
/*Defines a macro for the lcd.h header file. LCD_EN is the microcontroller Port pin to which the EN pin of the LCD is connected. Default Port pin for EN pin in lcd.h header file is PB2*/

#include<avr/lcd.h>
/*Includes lcd.h header file which defines different functions for all Alphanumeric LCD(8-Bit Interfacing Method). LCD header file version is 1.1*/

int main(void)
{

DDRB=0xff;
/*All the 8 pins of PortB are declared output (data pins of LCD are connected)*/

DDRD=0x07;
/*PD0, PD1 and PD2 pins of PortD are declared output (control pins of LCD are connected)*/

char first_row_lcd_display[] =”ABLab Solutions”, second_row_lcd_display[]=”www.ablab.in”;
/*Variable declarations*/

lcd_init();
/*LCD initialization*/

lcd_string_write(first_row_lcd_display);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

lcd_string_write(second_row_lcd_display);
/*String display in 2nd row of LCD*/

}
/*End of Program*/

  

 //**************************************************************//
//System Clock                          :1MHz
//Software                                 :AVR Studio 4
//LCD Data Interfacing             :8-Bit
//**************************************************************//

#include<avr/io.h>
/*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/

#define          F_CPU          1000000
/*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/

#include<util/delay.h>
/*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/

#define          LCD_DATA_PORT          PORTB
/*Defines a macro for the lcd.h header File. LCD_DATA_PORT is the microcontroller PORT Register to which the data pins of the LCD are connected. Default PORT Register for data pins in lcd.h header file is PORTA*/

#define          LCD_CONT_PORT          PORTD
/*Defines a macro for the lcd.h header File. LCD_CONT_PORT is the microcontroller PORT Register to which the control pins of the LCD are connected. Default PORT Register for control pins in lcd.h header file is PORTB*/

#define          LCD_RS          PD0
/*Defines a macro for the lcd.h header file. LCD_RS is the microcontroller Port pin to which the RS pin of the LCD is connected. Default Port pin for RS pin in lcd.h header file is PB0*/

#define          LCD_RW          PD1
/*Defines a macro for the lcd.h header file. LCD_RW is the microcontroller Port pin to which the RW pin of the LCD is connected. Default Port pin for RW pin in lcd.h header file is PB1*/

#define          LCD_EN          PD2
/*Defines a macro for the lcd.h header file. LCD_EN is the microcontroller Port pin to which the EN pin of the LCD is connected. Default Port pin for EN pin in lcd.h header file is PB2*/

#include<avr/lcd.h>
/*Includes lcd.h header file which defines different functions for all Alphanumeric LCD(8-Bit Interfacing Method). LCD header file version is 1.1*/

int main(void)
{

DDRB=0xff;
/*All the 8 pins of PortB are declared output (data pins of LCD are connected)*/

DDRD=0x07;
/*PD0, PD1 and PD2 pins of PortD are declared output (control pins of LCD are connected)*/

char first_row_lcd_display[] =”ABLab Solutions”, second_row_lcd_display[]=”www.ablab.in”;
/*Variable declarations*/

lcd_init();
/*LCD initialization*/

lcd_string_write(first_row_lcd_display);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

lcd_string_write(second_row_lcd_display);
/*String display in 2nd row of LCD*/

}
/*End of Program*/

Connection Guide

The step-by-step connection guide for 16X2 Alphanumeric LCD Interfacing with ATmega16 is as follows:

  • Insert the DC Pin of 12V, 1A DC Adapter to the DC Socket of AVR Trainer Board-100.

    Steps - 1 ( 0f 8 )

  • Connect PortB header with LCD data header in AVR Trainer Board-100 with a 10 to 10 FRC Female Connector.

    Steps - 2 ( 0f 8 )

  • Connect RS, RW & EN pins of LCD control header with PD0, PD1 & PD2 pins of PortD header respectively in AVR Trainer Board-100 with 1 to 1 Connectors.

    Steps - 3 ( 0f 8 )

  • Connect the 16X2 Alphanumeric LCD to the LCD header of AVR Trainer Board-100.

    Steps - 4 ( 0f 8 )

  • Connect the ISP header of AVR Trainer Board-100 with AVR USB Programmer header of AVR USB Programmer with a 10 to 10 FRC Female Connector.

    Steps - 5 ( 0f 8 )

  • Connect the AVR USB Programmer to the PC/Laptop's USB Port directly or with the help of USB AM-FM Cable.

    Steps - 6 ( 0f 8 )

  • Switch on the power with the help of Power Switch of AVR Trainer Board-100.

    Steps - 7 ( 0f 8 )

  • Download the 16X2 Alphanumeric LCD Interfacing with ATmega16 Hex file to AVR Trainer Board-100 with the help of SinaProg Hex downloader and AVR USB Programmer.

    Steps - 8 ( 0f 8 )

  • Insert the DC Pin of 12V, 1A DC Adapter to the DC Socket of AVR Trainer Board-100.

    Steps - 1 ( 0f 8 )

  • Connect PortB header with LCD data header in AVR Trainer Board-100 with a 10 to 10 FRC Female Connector.

    Steps - 2 ( 0f 8 )

  • Connect RS, RW & EN pins of LCD control header with PD0, PD1 & PD2 pins of PortD header respectively in AVR Trainer Board-100 with 1 to 1 Connectors.

    Steps - 3 ( 0f 8 )

  • Connect the 16X2 Alphanumeric LCD to the LCD header of AVR Trainer Board-100.

    Steps - 4 ( 0f 8 )

  • Connect the ISP header of AVR Trainer Board-100 with AVR USB Programmer header of AVR USB Programmer with a 10 to 10 FRC Female Connector.

    Steps - 5 ( 0f 8 )

  • Connect the AVR USB Programmer to the PC/Laptop's USB Port directly or with the help of USB AM-FM Cable.

    Steps - 6 ( 0f 8 )

  • Switch on the power with the help of Power Switch of AVR Trainer Board-100.

    Steps - 7 ( 0f 8 )

  • Download the 16X2 Alphanumeric LCD Interfacing with ATmega16 Hex file to AVR Trainer Board-100 with the help of SinaProg Hex downloader and AVR USB Programmer.

    Steps - 8 ( 0f 8 )

Downloads

16X2 Alphanumeric LCD Interfacing with ATmega16 C File
  • 118 downloads
  • 3 Kb
16X2 Alphanumeric LCD Interfacing with ATmega16 Circuit Diagram
  • 51 downloads
  • 156 Kb
16X2 Alphanumeric LCD Interfacing with ATmega16 Hex File
  • 78 downloads
  • 2 Kb
Alphanumeric LCD Header File v1.0
  • 826 downloads
  • 1 Kb

Comments