[nextpage title=”SUMMARY” ]
How to create text animation on 16×2 LCD using 8051 microcontroller (AT89C51)
SUMMARY:
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:
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]
[/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]