How to create text animation on 16×2 LCD using 8051 microcontroller (AT89C51)

0
5497

[nextpage title=”SUMMARY” ]

How to create text animation on 16×2 LCD using 8051 microcontroller (AT89C51)

SUMMARY:

custom character lcd

A static message can be displayed on a 16×2 LCD by interfacing it to the microcontroller (AT89C51). The same message can also be displayed with certain animated effects like moving, blinking etc. This topic explains how to create dynamic effects with the text displayed inLCD.

[/nextpage]

[nextpage title=”DESCRIPION” ]

DESCRIPTION:

[sam id=”4″ codes=”true”]

A string or message can be displayed on LCD by sending its characters to data register after configuring the command register of LCD. To create dynamic effects, a specific command instruction is sent to LCD via microcontroller AT89C51.  The different command codes for LCD are tabulated below:

LCD (2) How to create text animation on 16x2 LCD using 8051 microcontroller (AT89C51)[sam id=”6″ codes=”true”]

Hex Code Command to LCD Instruction Register
1 Clear screen display
2 Return home
4 Decrement cursor
6 Increment cursor
5 Shift display right
7 Shift display left
8 Display OFF, cursor OFF
A Display OFF, cursor ON
C Display ON, cursor OFF
E Display ON, cursor blinking
10 Shift cursor position to left
14 Shift cursor position to right
18 Shift the entire display to the left
1C Shift the entire display to the right
80 Force the cursor to the beginning of the 1st line
C0 Force cursor to the beginning of the 2nd line
38 Use 2 lines and 5×7 matrix

To create a particular effect, any of these code(s) can be used in a pattern. For example, shifting the entire display right (5H) in a loop will keep moving the text to right. To create oscillating text, first keep shifting the string to right (for say, 8 positions) and then shift it to left. This left-right shifting can be done in an infinite loop.

 

Here P2 is used as output port of the 8051 microcontroller (AT89C51) which sends the data byte to data pins of the LCD. The control pins (pin 4, 5 & 6) are connected to pins 0, 1 & 6, respectively, of P3 port of the microcontroller. Pin 3 is connected to a preset of 10k to adjust the contrast on LCD screen.

[sam id=”5″ codes=”true”]

[/nextpage]

[nextpage title=”CIRCUIT DIAGRAM”]

[sam id=”5″ codes=”true”]

[visitor]

⇒ Subscribe to view Code (Free Registration )

[/visitor]

 

[member]

 

Untitled

[/member]

[sam id=”6″ codes=”true”]

[/nextpage]

[nextpage title=”CODE” ]

[sam id=”5″ codes=”true”]

[visitor][sam id=”5″ codes=”true”]

⇒ Subscribe to view Code (Free Registration )

[/visitor]

 

[member]

[message_box title=”MESSAGE TITLE” color=”YELLOW”]

// Program to display dynamic text on LCD

 

#include<reg51.h>

#define msec 50

sbit rs=P3^0;   // (RS) pin

sbit rw=P3^1;   // (RW) pin

sbit en=P3^2;   // (EN) pin

unsigned char commands[]={0x38,0x0E,0x01,0x06,”}; //Command to be sent to LCD

char name[]={“EngineersGallery”};   //String to be displayed on LCD

 

void delay(unsigned int time) //Time delay function

{

unsigned int i,j;

for(i=0;i<time;i++)

for(j=0;j<1275;j++);

}

 

void lcdcmd(unsigned char value) //Function for sending values to the command register of LCD

{

P2=value;

rs=0;

rw=0;

en=1;

delay(1);

en=0;

return;

}

 

void display(unsigned char value) //Function for sending values to the data register of LCD

{

P2=value;

rs=1;

rw=0;

en=1;

delay(1);

en=0;

return;

}

 

void main()

{

int i,j;

for(i=0;commands[i]!=”;i++) //Sending string to LCD

{

lcdcmd(commands[i]);

delay(msec);

}

for(j=0;name[j]!=”;j++)

{

display(name[j]);

delay(msec);

}

while(1)

{

lcdcmd(0x1C); //Shift the entire display to right

delay(75);

}

[/member]

}

[/message_box]

[sam id=”6″ codes=”true”]

[/nextpage]