LCD use in many device to display message, like in printer, coffee machine, remote etc.There are a lot of type LCD present in market, these are may be alphanumeric, graphical or any other type. Here I will discuss about the alphanumeric LCD.
Alphanumeric LCD comes in different size 8*1, 8*2, 16*1, 16*2 or 20*4 etc. These LCD only able to display characters, who have the ASCII value. Some alphanumeric LCD provide the facility to generate own custom characters.
In this article I will describe the steps to display moving message on 16*2 alphanumeric LCD, but before it I want to discuss about its pin configuration and connection.
Pin configuration of 16*2 alphanumeric LCD

| Pin | Description of Pin |
| 1. | VSS (Ground Pin). |
| 2. | VCC (+3.3 to +5V). |
| 3. | VEE (Use to adjust the contrast). |
| 4. | RS (Resistor select pin).
RS = 0; select command resistor. RS = 1; select data resistor. |
| 5. | R/W (Read and Write Pin)
R/W = 0; write operation. R/W = 1; Read operation. |
| 6. | E (clock enable pin). |
| 7. | D0 (I/O) |
| 8. | D1 (I/O) |
| 9. | D2 (I/O) |
| 10. | D3 (I/O) |
| 11. | D4 (I/O) |
| 12. | D5 (I/O) |
| 13. | D6 (I/O) |
| 14. | D7 (I/O) |
| 15. | Led (+ve). |
| 16. | Led (-ve). |
Note: Interface of HD44780 supports two modes operation, 8 bit mode and 4 bit mode.In this article I will only discuss about the 8 bit mode.
Some useful commands for LCD
| Command | Description |
| 0x01 | To clear LCD. |
| 0x0e | Display on and cursor blink. |
| 0x0c | Display on and cursor off. |
| 0x38 | 8 bit mode and 2 line 5*8 matrix. |
| 0x06 | Increment cursor (shift toward right) |
| 0x04 | Decrement cursor (shift toward left) |
| 0x80 | Cursor in beginning of first line. |
| 0xc0 | Cursor in beginning of second line. |
Steps to write display message on LCD
- Initialize the LCD using the LCD initialization commands.
- Set the address of DDRAM ,where you want to display the character.
- Write the character on the data bus of LCD.
When we pass command or data on LCD then follow following steps.
- If passing the command then make RS pin low (RS = 0) either for data make RS pin high (RS = 1).
- Set Enable pin high (EN = 1).
- Write the command or data on the data bus.
- Set Enable pin low (EN = 0).
If you want to learn more about the c language, here 10 Free days (up to 200 minutes) C video course for you.
Source code to display moving message on 16×2 alphanumeric LCD.
#include<reg51.h>
#include<string.h>
#define LCD P2 /*Attached Lcd on Port*/
sbit rs =P3^0; /*Configure RS Pin*/
sbit rw=P3^1; /*Configure R/W pin*/
sbit e =P3^2; /*Configure Enable pin*/
/*Function to write command on Lcd*/
void LcdCommand(const char cCommand);
/*Function to display message on Lcd*/
void DisplayMessage(const char *pszMessage);
/*Function To Initialize Lcd*/
void LcdInit(void);
/*Function to Provide delay*/
void Delay(unsigned int);
int main()
{
short siLoop = 0;
short siLen = 0;
const char *pszDisplayMsg = "Welcome to aticleworld.";
siLen = strlen(pszDisplayMsg); /*Calculate length of Message*/
LcdInit(); /*Lcd Initialize*/
while(1)
{
LcdCommand(0x8f); /*Address of DDRAM*/
DisplayMessage(pszDisplayMsg);
for(siLoop=0; siLoop < siLen; siLoop++)
{
LcdCommand(0x1c);
Delay(25);
}
}
}
/*Function to write command on Lcd*/
void LcdCommand(const char cCommand)
{
rs = 0;
rw = 0;
e = 1;
LCD = cCommand;
Delay(1);
e=0;
}
/*Function to Display message on Lcd*/
void DisplayMessage(const char *pszMessage)
{
rs = 1;
rw = 0;
while(*pszMessage!='\0')
{
e = 1;
LCD = *pszMessage;
Delay(1);
e=0;
pszMessage++;
}
}
/*Function to Provide Delay*/
void Delay(unsigned int i)
{
int j,k;
for(j=0; j<i; j++)
{
for(k=0; k<1275; k++);
}
}
/*Initialise the LCD*/
void LcdInit(void)
{
LcdCommand(0x01);
LcdCommand(0x38);
LcdCommand(0x06);
LcdCommand(0x0c);
}

Recommended Post:
- Led blinking program in c for 8051.
- Interfacing of switch and led using the 8051
- Interfacing of Relay with 8051 microcontroller
- Moving message display on LCD using 8051
- LCD 4-bit mode c code for 8051.
- Create LCD custom characters for 16×2 alphanumeric LCD
- Interfacing of keypad with 8051
- Electronic digital lock using the 8051
- Interfacing of EEPROM with 8051 microcontrollers using I2C
- Embedded c interview questions.
- 8051 Microcontroller Pin Diagram and Pin Description.
- Can protocol interview questions.
- 8051 Architecture.
