Code for LCD Interfacing with 16f877
Thanks for your reply... I have attached the code which i tested in MicroC compiler... But it shows the black boxes... Help me
Program 1:
#define ldata PORTD
#define rs PORTB.F0
#define rw PORTB.F1
#define en PORTB.F2
void lcdcmd(unsigned char );
void lcddata(unsigned char );
void msdelay(unsigned char);
void main(void)
{
TRISD=0;
TRISB=0;
en=0;
msdelay(25);
lcdcmd(0x38);
msdelay(25);
lcdcmd(0x0E);
msdelay(15);
lcdcmd(0x01);
msdelay(15);
lcdcmd(0x06);
msdelay(15);
lcdcmd(0x86);
msdelay(15);
lcddata('A');
msdelay(15);
lcddata('D');
msdelay(15);
lcddata('E');
}
void lcdcmd(unsigned char value)
{
ldata=value;
rs=0;
rw=0;
en=1;
msdelay(1);
en=0;
}
void lcddata(unsigned char value)
{
ldata=value;
rs=1;
rw=0;
en=1;
msdelay(1);
en=0;
}
void msdelay(unsigned char itime)
{
unsigned char i,j;
for(i=0;i<itime;i++)
for(j=0;j<135;j++);
}
Program 2:This program i downloaded it from net.. This program too gives the same output...
char *text= "EQBYTE for All";
signed char data[12];
int i=0;
void main (){
TRISB = 0; // PORTB is output
Lcd_Init(&PORTB); // Initialize LCD connected to PORTB
while (1) {
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
for (i=1;i<11;i++)
{
Delay_ms(200);
IntToStr(i,data); //Numeric to string transform (i to data)
Lcd_out(1,1,"Value="); // Print fixed text to LCD (e.g "Value")
Lcd_out(1,8,data); // Print variable text to LCD, 1st row, 8th column (e.g data)
Delay_ms(200);
}
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Out(2, 1, text); // Print text to LCD, 2nd row, 1st column
Delay_ms(1200);
}
}