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.

18 Responses to “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. Elahe

    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?

  5. the complete circuit diagram of this project would be really helpful, thank u

  6. Tweterane Isaac

    I am in my final year computer engineering, thanks the project has helped me in my final year project

  7. shinde nilam

    I want the circuit & layout of the lcd interfacing with 89v51 microcontroller.

  8. helow can u pls send me the circuit diagram of lcd and pc keyboard interfacing with microcontroller 8951 and its programming also


Leave a Reply