how to display text on 16x2 lcd using pic18f4550 microcontroller
DESCRIPTION
How to Display Text on 16x2 LCD Using PIC18F4550 MicrocontrollerTRANSCRIPT
![Page 1: How to Display Text on 16x2 LCD Using PIC18F4550 Microcontroller](https://reader031.vdocuments.us/reader031/viewer/2022020123/55cf9a09550346d033a036aa/html5/thumbnails/1.jpg)
How to display text on 16x2 LCD using
PIC18F4550 Microcontroller
Several automated and semi-automated devices require a message to be displayed in order to indicate their working status. In continuation to LCD interfacing with PIC18F4550, this article explains how to display a message or string on a 16x2 character LCD.
In the previous article, a single character was displayed on LCD by properly configuring its data and command registers. A string is nothing but a sequential arrangement of several characters that can be displayed on LCD by using the programming steps mentioned here. The circuit connections and user-defined functions are same as earlier. The LCD data pins are connected to PortB of PIC18F4550 while the control pins are connected to first three pins of PortA.
Programming steps: · Configure the LCD. · Store a string in a character array.
unsigned char data[20]=“EngineersGarage”; · Run a loop till the loop counter encounters the null character ‘\0’ of the string. · Use lcddata() function to send individual character values of the string to be displayed on LCD.
![Page 2: How to Display Text on 16x2 LCD Using PIC18F4550 Microcontroller](https://reader031.vdocuments.us/reader031/viewer/2022020123/55cf9a09550346d033a036aa/html5/thumbnails/2.jpg)
Code:
// Program to display text on 16x2 LCD using PIC18F4550
Microcontroller
// Configuration bits
/* _CPUDIV_OSC1_PLL2_1L, // Divide clock by 2
_FOSC_HS_1H, // Select High Speed (HS)
oscillator
_WDT_OFF_2H, // Watchdog Timer off
MCLRE_ON_3H // Master Clear on
*/
//LCD Control pins
#define rs LATA.F0
#define rw LATA.F1
#define en LATA.F2
//LCD Data pins
#define lcdport LATB
void lcd_ini();
void lcdcmd(unsigned char);
void lcddata(unsigned char);
unsigned char data[20]="EngineersGarage";
unsigned int i=0;
void main(void)
{
TRISA=0; // Configure Port A as output
port
LATA=0;
TRISB=0; // Configure Port B as output
port
LATB=0;
lcd_ini(); // LCD initialization
while(data[i]!='\0')
{
lcddata(data[i]); // Call lcddata function
to send characters
// one by one from
"data" array
i++;
Delay_ms(300);
}
}
void lcd_ini()
{
lcdcmd(0x38); // Configure the LCD in
8-bit mode, 2 line and
![Page 3: How to Display Text on 16x2 LCD Using PIC18F4550 Microcontroller](https://reader031.vdocuments.us/reader031/viewer/2022020123/55cf9a09550346d033a036aa/html5/thumbnails/3.jpg)
5x7 font
lcdcmd(0x0C); // Display On and
Cursor Off
lcdcmd(0x01); // Clear display screen
lcdcmd(0x06); // Increment cursor
lcdcmd(0x80); // Set cursor position
to 1st line, 1st column
}
void lcdcmd(unsigned char cmdout)
{
lcdport=cmdout; //Send command to
lcdport=PORTB
rs=0;
rw=0;
en=1;
Delay_ms(10);
en=0;
}
void lcddata(unsigned char dataout)
{
lcdport=dataout; //Send data to lcdport=PORTB
rs=1;
rw=0;
en=1;
Delay_ms(10);
en=0;
}
![Page 4: How to Display Text on 16x2 LCD Using PIC18F4550 Microcontroller](https://reader031.vdocuments.us/reader031/viewer/2022020123/55cf9a09550346d033a036aa/html5/thumbnails/4.jpg)