Interfacing an LCD to the 8951 Microcontroller

LCD pin descriptions:
The LCD discussed in this section has 14 pins. The function of each pin is given in table.

LCD pin desciptions
LCD pin descriptions
LCD pin desciptions
LCD pin desciptions

Vcc, Vss, and VEE:

While Vcc and Vss  provide  +5V and ground, respectively, VEE  is used for controlling LCD contrast.

RS – register select:

There are two very important registers inside the LCD. The RS pin is used for their selection as follows. If RS = 0, the instruction command code register is selected, allowing the user to send a command such as clear display, cursor at home, etc. If  RS = 1 the data register is selected, allowing the user to send data to be displayed on the LCD.

R/W – read/write:

R/W input allows the user to write information to the LCD or read information from it. R/W = 1 when reading; R/W =0 when writing.

E – enable:

The enable pin is used by the LCD to latch information presented to its data pins. When data is supplied to data pins, a high to low pulse must be applied to this pin in order for the LCD to latch in the data present at the data pins. This pulse must be a minimum of 450 ns wide.

D0 – D7:

The 8 bit data pins, D0 – D7, are used to send information to the LCD or read the contents of the LCD’s internal registers.

To display letters and numbers, we send ASCII codes for the letters A – Z, a – z, and numbers 0 – 9 to these pins while making RS = 1.

There are also instructions command codes that can be sent to the LCD to clear the display or force the cursor to the home position or blink the cursor. Table below lists the instruction command codes.

LCD Commands table
LCD Commands table

We also use RS = 0 to check the busy flag bit to see if the LCD is ready to receive information. The busy flag is D7 and can be read when R/W =1 and RS = 0, as follows: if R/W =1, RS =0. When D7 = 1(busy flag = 1), the LCD busy taking care of  internal operations and will not accept any new information. When D7 = 0, the LCD is ready to receive new information. Note: It is recommended to check the busy flag before writing any data to the LCD.

Example programs are given in the next page.

Editorial Team
Editorial Team

We are a group of young techies trying to provide the best study material for all Electronic and Computer science students. We are publishing Microcontroller projects, Basic Electronics, Digital Electronics, Computer projects and also c/c++, java programs.

18 thoughts on “Interfacing an LCD to the 8951 Microcontroller

  1. This is a tutorial on alphanumeric 16×2 lcd interfacing with AT89C51.The programming algorithm is compatible with HITACHI HD44780U lcd controller .Complete programming code is given with neat circuit diagram.

  2. Hi there, I just found this website whilst searching around the Internet as I am looking for some info on LCD TVs!. It’s an informative blog so I have bookmarked your site and I intend to return tomorrow to enjoy a proper read when I have more time.

  3. thx alot im elahe ,student of electronic engineering i use it for my project of 8051

  4. Dear sir,
    Thanks for posting the project.
    i am running through the last semester. Would you please provide us the complete circuit diagram of this project?

Leave a Reply

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

Get the latest updates on your inbox

Be the first to receive the latest updates from Codesdoc by signing up to our email subscription.