-->

LCD Interfacing

By

.......LCD Interfacing.......

                             ..........................................................

                LCD display is commonly used in most of the micro controller based projects. A different kind of LCD modules are available in the market. The display used here is 16X2 LCD it meas that 16 character per line by 2 lines.Hitachi HD 44780 LCD controller is one of the most common dot matrix Liquid Cristal Display controller available in the market (4more).
Datasheet of Hitachi HD 44780 LCD controller Download here.












The 44780 standard has  16 pins 8 pins for data or instruction .
The 44780 standard requires 3 control lines as well as either 4 or 8 I/O lines for the data bus. 
ie , it can interface with 3 control line   +  4 I/O ----->  called 4 bit mode 
or , it can interface with 3 control lines + 8 I/O  -----> called 8 bit mode 



The Lcd works according to the data comes from the micro controller. We gives the data from micro-controller to the LCD port of the DB0 - DB7 (see the picture) these applying data is 8 bit data ,because ,Hitachi HD 44780 LCD controller has two 8 bit registers named an instruction register (IR) and a data register (DR).we can disscuss later about the instruction register and data register .


3 Control Lines   RS,RW and EN -Pin No: 4,5,6 respectively.

RS-is the "Register select " the 8 bit data gives to the LCD from the micro-controller are of two type  one is the command data (these command data are giving to the LCD's internal controller and the controller decide as display screen ,position,clear disply ,second line etc according to the command data )  ,which is 8 bit . 
And the second  data is the data which is actually display to LCD (string,name ,numbers etc)

When RS is low (0) the data coming from the micro-controller to the LCD data port is treated as command data


Some LCD Basic Commands:
No.
Instruction
Hex
Decimal
1
Function Set: 8-bit, 1 Line, 5x7 Dots
0x30
48
2
Function Set: 8-bit, 2 Line, 5x7 Dots
0x38
56
3
Function Set: 4-bit, 1 Line, 5x7 Dots
0x20
32
4
Function Set: 4-bit, 2 Line, 5x7 Dots
0x28
40
5
Entry Mode
0x06
6
6
Display off Cursor off
(clearing display without clearing DDRAM content)
0x08
8
7
Display on Cursor on
0x0E
14
8
Display on Cursor off
0x0C
12
9
Display on Cursor blinking
0x0F
15
10
Shift entire display left
0x18
24
12
Shift entire display right
0x1C
30
13
Move cursor left by one character
0x10
16
14
Move cursor right by one character
0x14
20
15
Clear Display (also clear DDRAM content)
0x01
1
16
Set DDRAM address or cursor position on display
0x80+add
128+add
17
Set CGRAM address or set pointer to CGRAM location
0x40+add
64+add

For example
8 bit controller out put port  is named as P0 (8 bit )
RS = 0;     // select the register in command mode 
P0 = 0x20 // giving a 8 bit data  work the LCD as   4-bit, 1 Line, 5x7 Dots refer above command 

When RS is high (1) ,the data coming from the micro-controller to the LCD data port is the text data which should be displayed on the screen.
 For example, to display the letter "m" on the screen you would set RS high.
RS = 1;     // select the register in Data mode 
P0 = 0x20 // giving a 8 bit data,that  will be displayed on the LCD screen.

RW :- When RW is low(0), the data from the micro-controller is being written to the LCD. When RW is high (1), the microcontroller reads the data from the  LCD (eg: busy flag testing )
Most of the times there is no need to read the LCD so this(RW) lines can be connected to ground directly,for saving controller one I/O port line. 
EN :- line is called "Enable." This control line is used to tell the LCD that you are sending it data. To send data to the LCD, your program should make sure this line is low (0) and then set the other two control lines and/or put data on the data bus. When the other lines are completely ready, bring EN high (1) and wait for the minimum amount of time required by the LCD datasheet (this varies from LCD to LCD), and end by bringing it low (0) again.

DD-RAM is the Ram used to display the content of the DD-RAM to LCD ,we send the data (to display in LCD screen) to DD RAM in ASCII format ,8 bit character code .
DD-RAM address is the position of the cursor (ie,where the data sent will be displayed) .








The data of the LCD display according to the command register that we have sent to the instruction register of the LCD. These command determine how /where the data display on the LCD. some of the Command as follows.









picture (4)







Complete command reference:








Picture (4)




Initialization 
Initialization means starting of LCD  . Initialization can be done by two ways as follows

  1.Initialization by internal Reset Circuit .
It will happen automatically when the power is ON
An internal reset circuit automatically initializes the HD44780U when the power is turned on. The following instructions are executed during the initialization. The busy flag (BF) is kept in the busy state until the initialization ends (BF = 1). The busy state lasts for 10 ms after VCC rises to 4.5 V.
  • Display clear
  • Function set:
    DL = 1; 8-bit interface data
    N = 0; 1-line display
    F = 0; 5 x 8 dot character font
  • Display on/off control:
    D = 0; Display off
    C = 0; Cursor off
    B = 0; Blinking off
  • Entry mode set:
    I/D = 1; Increment by 1
    S = 0; No shift
If we need to initialization by internal Reset  there are certain condtions that has to be met  see the picture below .picture (5)

2. Initialization By Instruction (By our control through Microcotroller
This type of initialization  is simple.Given below is a flowchart that describes the step to follow, to initialize the LCD.

8-Bit Interface 












picture(6)
As you can see from the flow chart, the LCD is initialized in the following sequence...
1) Send command 0x30 - Using 8-bit interface
2) Delay 20ms
3) Send command 0x30 - 8-bit interface
4) Delay 20ms
5) Send command 0x30 - 8-bit interface
6) Delay 20ms
7) Send Function set - see Table 4 for more information
8) Display Clear command
9) Set entry mode command - explained below
The first 3 commands are usually not required but are recomended when you are using 4-bit interface. So you can program the LCD starting from step 7 when working with 8-bit interface. Function set command depends on what kind of LCD you are using and what kind of interface you are using 

.4-Bit Interface










picture(7)


See the circuits below to determine the difference 
4 Bit mode picture(8)


8 Bit Modepicture(9)


Algorithm to send data to LCD:

1.Make R/W low
2.Make RS=0 ;if data byte is command
RS=1 ;if data byte is data (ASCII value)
3.Place data byte on data register
4.Pulse E (HIGH to LOW)
5.Repeat the steps to send another data byte




.Decide in which port we will connect to LCD from Micro-controller(MC).
.Decide in which mode you are trying to (4-bit / 8-bit mode).
.Select or assign each pin of MC to LCD as RW,RS,E  7and Data port .

 Then we have to initialize our LCD .
 For initialization we have to do the following steps 
 Need ,to sent the data to LCD's instruction Register 
 ie , sent command to LCD port 
     example , sent 0x38 hex value to LCD for Function set: 2 Line, 8-bit, 5x7 dots
Then select LCD register in instruction register mode 
           ie ,  RS = 0 ;
also make RW = 0 ; for writing mode to LCD from MC.
finally we give a high to low pulse to the EN pin 
Give some delay according to the datasheet then next command because we dont use busy flag register.
........................................................................................................................................
                                 lcd pot = 0x38H (see the picture 4) 2 Line, 8-bit, 5x7 dots
                                RS = 0;
                                RW = 0;
                                EN = 1;
                                EN = 0;

........................................................................................................................................
 The above data write a 0x38H to the LCD .
 Next  
                               lcd pot = 0x0FH (see the picture 4)  Curson blinking command
                               RS = 0;
                               RW = 0;
                              EN = 1;
                              EN = 0;
........................................................................................................................................

The above data write a 0x0FH to the LCD .
 Next                     lcd pot = 0x01H (see the picture 4)  Clear LCD command
                            RS = 0;
                            RW = 0;
                            EN = 1;
                            EN = 0;

...................................................................................................................................................................






More Posts

gElectron. Powered by Blogger.