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.
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
Project Components
Project Video
Source: How to display text on 16×2 LCD using PIC18F4550 Microcontroller