project1
Junior Member level 1
hello,
I am trying to interface a JHD162A LCD to pic18f4550. Its only showing a row of black boxes. Can someone pls help me out with this. I have given the code below. I'm using microchip C18 compiler with MPLAB.
I am trying to interface a JHD162A LCD to pic18f4550. Its only showing a row of black boxes. Can someone pls help me out with this. I have given the code below. I'm using microchip C18 compiler with MPLAB.
Code:
#include<p18f4550.h>
#include<delays.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config PWRT = OFF
#pragma config CP0 = OFF
#pragma config PBADEN = OFF
//LCD Control pins
#define rs LATAbits.LATA0
#define rw LATAbits.LATA1
#define en LATAbits.LATA2
//LCD Data pins
#define lcdport LATB
void dis_cmd(unsigned char);
void dis_data(unsigned char);
void lcdcmd(unsigned char);
void lcddata(unsigned char);
void lcd_ini(void);
void main(void)
{
unsigned char data0[]="Hello";
unsigned int i=0;
TRISB=0; // Configure Port B as output port
LATB=0;
TRISA = 0;
LATA = 0;
lcd_ini(); // LCD initialization
while(data0[i]!='\0')
{
dis_data(data0[i]);
Delay10KTCYx(400); //Delay_ms(800);
i++;
}
}
void lcd_ini()
{
dis_cmd(0x02); // To initialize LCD in 4-bit mode.
dis_cmd(0x28); // To initialize LCD in 2 lines, 5x7 dots and 4bit mode.
dis_cmd(0x0C);
dis_cmd(0x06);
dis_cmd(0x80);
}
void dis_cmd(unsigned char cmd_value)
{
unsigned char cmd_value1;
cmd_value1 = (cmd_value & 0xF0); // Mask lower nibble because RB4-RB7 pins are being used
lcdcmd(cmd_value1); // Send to LCD
cmd_value1 = ((cmd_value<<4) & 0xF0); // Shift 4-bit and mask
lcdcmd(cmd_value1); // Send to LCD
}
void dis_data(unsigned char data_value)
{
unsigned char data_value1;
data_value1=(data_value&0xF0);
lcddata(data_value1);
data_value1=((data_value<<4)&0xF0);
lcddata(data_value1);
}
void lcdcmd(unsigned char cmdout)
{
lcdport=cmdout; //Send command to lcdport=PORTB
rs=0;
rw=0;
en=1;
Delay10KTCYx(25); //Delay_ms(50);
en=0;
}
void lcddata(unsigned char dataout)
{
lcdport=dataout; //Send data to lcdport=PORTB
rs=1;
rw=0;
en=1;
Delay10KTCYx(25); //Delay_ms(50);
en=0;
}