smiles
Advanced Member level 4
Hi! I did this C code for initilazation LCD (16x2) and write some text on it, but nothing happen, pin 1 to GND, pin 2 to 5V, pin3 is 1V above GND
Used PIC16F877A, 4MHz crystal
Do you see any wrong place of my initilazation ?
Thanks !!!
Used PIC16F877A, 4MHz crystal
Code:
void WrCmd2Lcd(char cmd);
void WrDat2Lcd(char data);
void InitLcd();
void Speech(char words,int position);
void main()
{
char hello[]="HELLO WORLD!\n";
#define lcd_rs PIN_B0
#define lcd_rw PIN_B1
#define lcd_e PIN_B2
#define lcd_cmd_wri 0x00
#define lcd_data_wri 0x01
#define lcd_set_function 0x38
#define lcd_set_visible 0x0F
#define lcd_set_shift 0x16
#define lcd_set_mode 0x06
#define lcd_set_home_address 0x00
#define lcd_clear 0x01
#define lcd_init 0x30
set_tris_a(0x0f);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00); // to LCD D0-D7
output_high(PIN_C0); //affect relay and it works well
InitLcd();
Speech(hello,0x00); //
}
void WrCmd2Lcd(char cmd)
{
output_d(cmd);
output_b(lcd_cmd_wri);
output_high(lcd_e);
#asm
nop
#endasm
output_low(lcd_e);
}
void WrDat2Lcd(char data)
{
output_d(data);
output_b(lcd_data_wri);
output_high(lcd_e);
#asm
nop
#endasm
output_low(lcd_e);
delay_ms(1);
}
void InitLcd()
{
delay_ms(16);
WrCmd2Lcd(lcd_init);
delay_ms(5);
WrCmd2Lcd(lcd_init);
delay_cycles(200);
WrCmd2Lcd(lcd_init);
delay_cycles(100);
WrCmd2Lcd(lcd_set_function);
delay_cycles(100);
WrCmd2Lcd(lcd_set_visible);
delay_cycles(100);
}
void Speech(char words,int position)
{
char *textptr;
textptr = words;
WrCmd2Lcd(position);
delay_ms(64);
do
{
WrDat2Lcd(*textptr);
*textptr++;
}
while(*textptr != '\n');
}
Do you see any wrong place of my initilazation ?
Thanks !!!