LCD Interfacing to 8051 in 8 bit Mode
Written by Amol Shah, on Aug-2008
Views 6655    

Liquid Crystal Display also called as LCD is very helpful in providing user interface as well as for debugging purpose. The most common type of LCD controller is HITACHI 44780 which provides a simple interface between the controller & an LCD. These LCD's are very simple to interface with the controller as well as are cost effective.The LCD requires 3 control lines (RS, R/W & EN) & 8 (or 4) data lines.

The number on data lines depends on the mode of operation. If operated in 8-bit mode then 8 data lines plus 3 control lines i.e. total 11 port pins are required. In case of 4-bit mode only 4 data lines are required & the 8-bit data is sent by first sending the higher nibble followed by the lower nibble.

The three control lines are RS, RW & Enable.

·         RS: Register Select. When RS = 0 the command register is selected. When RS=1 the data register is selected.

·         RW: Read or Write. When RW=0 write to LCD. When RW=1 read from LCD.

·         Enable: Used to Latch data into the LCD. A HIGH TO LOW edge latches the data into the LCD.

Here is a Code in C for interfacing LCD in 8-bit mode.

  

#define rs                                           P2_5

#define rw                                          P2_6

#define enable                                                 P2_7

#define lcd_port                              P0

 

main()

{

                Lcd_Ini();

                lcd_command(0x86);

                lcd_display(‘D’);

                lcd_display(‘N’);

                lcd_display(‘A’);

                lcd_command(0x0C4);

                lcd_display(‘T’);

                lcd_display(‘E’);

                lcd_display(‘C’);

                lcd_display(‘H’);

                lcd_display(‘N’);

                lcd_display(‘O’);

                lcd_display(‘L’);

                lcd_display(‘O’);

                lcd_display(‘G’);

                lcd_display(‘Y’);               

                while(1)

                {

 

                }             

}

   

void Lcd_Ini()

{

                lcd_command(0x38);

                delay_ms(30);

                lcd_command(0x0c);

                delay_ms(10);

                lcd_command(0x06);

                delay_ms(10);

                lcd_command(0x01);                    

                delay_ms(10);

}

  

void lcd_command(unsigned char command)

{

                rw=LOW;

                rs=LOW;

                lcd_port=command;

                enable=HIGH;

                enable=LOW;

                delay_ms(5);

}

  

void lcd_display(unsigned char display)

{

                 rw=LOW;

                rs=HIGH;

                lcd_port=display;

 enable=HIGH;

                enable=LOW;

                delay_ms(1);

}

 

This program displays “DNA” on first line of LCD and “Technology” on second line.

For delay functions check this link.



Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
Quote this article in website Favoured Print Send to friend Related articles Save this to del.icio.us

Users' Comments (3) RSS feed comment
Posted by Atif, on Aug-2009,
1. Question
Is the lcd 8 bit c code working or not?
 
» Report this comment to administrator
» Reply to this comment...

Posted by omarsito12, on Sep-2009,
2. CCS Compiler
How do I make this code for CCS C compiler?Help me please
 
» Report this comment to administrator
» Reply to this comment...

Posted by abhi, on Mar-2010,
3. does it work on keil
i have checked this prom on keil and it has manny errors ...how it can be removed ...can i have any solution for it.
 
» Report this comment to administrator
» Reply to this comment...

Add your comment



mXcomment 1.0.5 © 2007-2010 - visualclinic.fr
License Creative Commons - Some rights reserved
 
Next >
Home