How to display text on 16×2 LCD using PIC18F4550 Microcontroller

Summary of How to display text on 16×2 LCD using PIC18F4550 Microcontroller


This article details how to display a string message on a 16x2 character LCD using the PIC18F4550 microcontroller. The process includes configuring the LCD, storing the message in an array, and sending each character to the LCD using a loop and the lcddata() function. The code initializes the LCD in 8-bit mode with a 2-line display and shows the string "EngineersGarage" by iterating through the character array with delays between each character. The article includes configuration tips, code snippets, and component list for implementation.

Parts used in the PIC18F4550 16x2 LCD Display Project:

  • 16x2 Character LCD
  • PIC18F4550 Microcontroller
  • Preset (Potentiometer for contrast adjustment)

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 16×2 character LCD.

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 ‘’ of the string.
·         Use lcddata() function to send individual character values of the string to be displayed on LCD. 

Code:

while(data[i]!=’’)
    {
        lcddata(data[i]);   
        i++;
        Delay_ms(300);
    }

Project Source Code

###


// Program to display text on 16×2 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]!=”)
{
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 5×7 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;
}

###

Circuit Diagrams

Circuit Diagrams 3

Project Components

Project Video

Source: How to display text on 16×2 LCD using PIC18F4550 Microcontroller


About The Author

Muhammad Bilal

I am a highly skilled and motivated individual with a Master's degree in Computer Science. I have extensive experience in technical writing and a deep understanding of SEO practices.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.