+ All Categories
Home > Engineering > 131080111003 mci

131080111003 mci

Date post: 23-Feb-2017
Category:
Upload: jokersclown57
View: 404 times
Download: 0 times
Share this document with a friend
25
LCD Interfacing using Atmega 32 Name – himanshu Singh Dept. – ECE Sem – 5 th Sub – MCI Enroll no. – 131080111003
Transcript
Page 1: 131080111003 mci

LCD Interfacing using Atmega 32

Name – himanshu SinghDept. – ECE Sem – 5th Sub – MCIEnroll no. – 131080111003

Page 2: 131080111003 mci

Content

What is LCD PIN description Programming in LCD Sending commands on LCD Sending Data on LCD Schematic Code for Programming Output on PROTEUS Basic commands used in LCD display

Page 3: 131080111003 mci

What is LCD

LCD stands for Liquid Crystal Display, is an electronic device which is used for data display. LCDs are preferable over seven segments and LEDs as they can easily represent data in form of alphabets, characters, numbers or animations. LCDs are very easy to program and make your work quite attractive and simple. Numerous types of LCDs are available in MARKET        such as 16X2, 16X4, 20X2, 20X4, graphical LCDs (128X64) etc. The LCD which we are using is 16X2 alphanumeric LCD, it display 32 characters in two rows means in one row we have 16 characters.

Page 4: 131080111003 mci

PIN description of LCD

16X2 LCD can interface with AVR microcontroller by using two modes, 4-bit mode or 8-bit mode. In this article we will use 8-bit mode for interfacing. In 8-bit mode we send command to LCD by using eight data lines (D0-D7) while in 4-bit mode we use four data lines (D5-D7) for sending command and data. These data lines can be connected to any port of Atmega32.

Page 5: 131080111003 mci

PIN NO.

PIN NAME DESCRIPTION

1 VCC Supply pin (+5V DC)

2 VDD Ground pin

3 VEE Contrast pin

4 RSRegister selection pin (either data or command)RS=0: Command Register ,RS=1: Data Register

5 RWSelects Read or Write operationRW=0: for writeRW=1:  for read

6 E Enable pin

7 D0 Data pin 0

Page 6: 131080111003 mci

8 D1 Data pin 1

9 D2 Data pin 2

10 D3 Data pin 3

11 D4 Data pin 4

12 D5 Data pin 5

13 D6 Data pin 6

14 D7 Data pin 7

Page 7: 131080111003 mci

Programming of LCD Basically there are two registers, command and

data. When we are giving command to LCD, we select command register and when we are sending data to LCD for display, we select data register. Command is an instruction given to LCD in order to perform required function according to the given command. In order to display textual information, data is send to LCD.

Page 8: 131080111003 mci

Sending commands on LCD

For sending commands on LCD we have to write command on data pins. For this, selects:

RS = 0 >> selects command register RW = 0 >> selects write operation E >> make enable pin from high to low

Page 9: 131080111003 mci

Sending data on LCD

For sending data on LCD we have to write data on data pins. For this, selects:

RS = 1 >> selects data register RW = 0 >> selects write operation E >> make enable pin from high to low

Page 10: 131080111003 mci

SCHEMATIC

Page 11: 131080111003 mci

CODE FOR INTERFACING LCDWe use Atmel studio 6 for development of code and the code is written in C language.

#ifndef F_CPU

# define F_CPU 16000000UL // clock speed is 16MHz

#endif

 

Page 12: 131080111003 mci

#include<avr/io.h>        // AVR header#include<util/delay.h>    // delay header //******************LCD PROGRAM STARTS*********************//#define LCD_DATA PORTB          // port B is selected as LCD data port#define ctrl PORTD              //  port D is selected as LCD command port#define en PD7                  // enable signal is connected to port D pin 7#define rw PD6                  // read/write signal is connected to port D pin 6#define rs PD5                  // register select signal is connected to port D pin 5 

Page 13: 131080111003 mci

void LCD_cmd(unsigned char cmd);void init_LCD(void);void LCD_write(unsigned char data); int main(void){DDRB=0xFF;              // set LCD data port as outputDDRD=0xE0;              // set LCD signals (RS, RW, E) as out putinit_LCD();             // initialize LCD_delay_ms(100);         // delay of 100 Milli seconds

Page 14: 131080111003 mci

LCD_cmd(0x0C);          // display on, cursor off_delay_ms(100); LCD_write(‘ ‘);         // call a function to display space on LCD_delay_ms(1);LCD_write(‘ ‘);         // call a function to display space on LCD_delay_ms(1);LCD_write(‘ ‘);         // call a function to display space on LCD_delay_ms(1);LCD_write(‘ ‘);         // call a function to display space on LCD_delay_ms(1);

Page 15: 131080111003 mci

LCD_write(‘ ‘);         // call a function to display space on LCD_delay_ms(1);LCD_write(‘A’);         // call a function to display “A” on LCD_delay_ms(100);LCD_write(‘V’);         // call a function to display “V” on LCD_delay_ms(100);LCD_write(‘R’);         // call a function to display “R” on LCD_delay_ms(100);

Page 16: 131080111003 mci

LCD_cmd(0xC0);          // move cursor to the start of 2nd line_delay_ms(100); LCD_cmd(0x0C);          // display on, cursor off_delay_ms(100); LCD_write(‘ ‘);         // call a function to display space on LCD_delay_ms(1);LCD_write(‘ ‘);_delay_ms(1);

Page 17: 131080111003 mci

LCD_write(‘ ‘);_delay_ms(1);LCD_write(‘A’);        // call a function to display “A” on LCD_delay_ms(100);LCD_write(‘t’);        // call a function to display “t” on LCD_delay_ms(100);LCD_write(‘m’);        // call a function to display “m” on LCD_delay_ms(100);LCD_write(‘e’);        // call a function to display “e” on LCD_delay_ms(100);

Page 18: 131080111003 mci

LCD_write(‘g’);        // call a function to display “g” on LCD_delay_ms(100);LCD_write(‘a’);        // call a function to display “a” on LCD_delay_ms(100);LCD_write(‘3’);        // call a function to display “3” on LCD_delay_ms(100);LCD_write(‘2’);        // call a function to display “2” on LCD_delay_ms(100);LCD_cmd(0x0E);          // make display ON, cursor ON_delay_ms(1);

Page 19: 131080111003 mci

return 0;}void init_LCD(void){LCD_cmd(0x38);           // initialization in 8bit mode of 16X2 LCD_delay_ms(1);LCD_cmd(0x01);          // make clear LCD_delay_ms(1);LCD_cmd(0x02);          // return home_delay_ms(1);LCD_cmd(0x06);          // make increment in cursor_delay_ms(1);

Page 20: 131080111003 mci

LCD_cmd(0x80);          // “8” go to first line and “0” is for 0th position_delay_ms(1); return;}

Page 21: 131080111003 mci

//**************sending command on LCD***************//void LCD_cmd(unsigned char cmd){LCD_DATA = cmd;      // data lines are set to send commandPORTD  &= ~(1<<rs);  // RS sets 0PORTD  &= ~(1<<rw);  // RW sets 0PORTD  |= (1<<en);   // make enable from high to low_delay_ms(100);PORTD  &= ~(1<<en); return;}

Page 22: 131080111003 mci

//*****************write data on LCD*****************//void LCD_write(unsigned char data){LCD_DATA= data;       // data lines are set to send commandPORTD  |= (1<<rs);    // RS sets 1PORTD  &= ~(1<<rw);   // RW sets 0PORTD  |= (1<<en);    // make enable from high to low_delay_ms(100);PORTD &= ~(1<<en); return ;}

Page 23: 131080111003 mci

SIMULATION ON PROTEUS

Page 24: 131080111003 mci

BASIC COMMANDS USED IN LCD DISPLAYCOMMANDS DESCRIPTION

0x01 Clear screen

0x02 return home

0x04 Cursor decrement

0x05 Display shifts to right

0x06 Cursor increment

0x07 Display shifts to left

0x08 Cursor and display OFF

0x10 Cursor position Shifts to left

0x14 Cursor position shifts to right

Page 25: 131080111003 mci

0x38 Using two lines, 8-bit mode

0x28 Using two lines, 4-bit mode

0x80 Move cursor to the beginning of first line

0x0C Display ON, cursor OFF

0XC0 Move cursor to the beginning of second line

0x0A Display OFF, cursor ON

0x0E Display ON, cursor blinking

0x30 For display in one line in 8-bit mode

0x20 For display in one line in 4-bit mode

0x0F Display data on cursor blinking

0x18 Shift complete data to left side

0x1C Shift complete data to right side


Recommended