A static message can be displayed on a 16x2 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 in LCD.
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.
Project Source Code
###
// Program to display dynamic text on LCD #include<reg51.h> #define msec 50 sbit rs=P3^0; //Register select (RS) sbit rw=P3^1; //Read write (RW) pin sbit en=P3^6; //Enable (EN) pin unsigned char commands[]={0x38,0x0E,0x01,0x06,'