sastraster
Newbie level 3
I am using 16*2 LCD. I am using Hitech C compiler . I am trying to display some word. Sometimes it will display correctly sometimes it will not ..Sometimes some characters will be missing or it will display something else. I have tried to increase the delay.after each initialisation i am giving 5 sec as the delay just to cross check it. but even after tat i am facing the same problem. So kindly help me. I have attached the code also .
#include<htc.h>
#include<pic.h>
#define EN RC5 // 24
#define RS RC6 // 25
#define RW RC7 // 26
#define DB0 RB0
#define DB1 RB1
#define DB2 RB2
#define DB3 RB3
#define DB4 RB4
#define DB5 RB5
#define DB6 RB6
#define DB7 RB7
#define Data PORTB
char x;
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 20000000
#endif
char count=0;
void init_LCD()
{
TRISB=0x00;
TRISC=0x00;
RS=0;
RW=0;
Data=0x38;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
RS=0;
RW=0;
Data=0x0f;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
RS=0;
RW=0;
Data=0x06;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
RS=0;
RW=0;
Data=0x01;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
}
void display(char x)
{ RW=0;
RS=1;
Data=x;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
}
void LCD_sendstring(unsigned char *var)
{
while(*var) //till string ends
display(*var++); //send characters one by one
}
void main()
{
unsigned char msg1[] ="Traffic Density";
for(int i=1;i<50;i++)
{
__delay_ms(1);
}
init_LCD();
RC0=~RC0;
LCD_sendstring(msg1);
while(1)
{
}
}
#include<htc.h>
#include<pic.h>
#define EN RC5 // 24
#define RS RC6 // 25
#define RW RC7 // 26
#define DB0 RB0
#define DB1 RB1
#define DB2 RB2
#define DB3 RB3
#define DB4 RB4
#define DB5 RB5
#define DB6 RB6
#define DB7 RB7
#define Data PORTB
char x;
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 20000000
#endif
char count=0;
void init_LCD()
{
TRISB=0x00;
TRISC=0x00;
RS=0;
RW=0;
Data=0x38;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
RS=0;
RW=0;
Data=0x0f;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
RS=0;
RW=0;
Data=0x06;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
RS=0;
RW=0;
Data=0x01;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
}
void display(char x)
{ RW=0;
RS=1;
Data=x;
EN=1;
asm("nop");
EN=0;
for(i=1;i<1000;i++)
{ __delay_ms(5);
}
}
void LCD_sendstring(unsigned char *var)
{
while(*var) //till string ends
display(*var++); //send characters one by one
}
void main()
{
unsigned char msg1[] ="Traffic Density";
for(int i=1;i<50;i++)
{
__delay_ms(1);
}
init_LCD();
RC0=~RC0;
LCD_sendstring(msg1);
while(1)
{
}
}