salut
j'ai un lcd 4x20 44780h . Mon problème est : je ne suis pas cabaple de initialiser correctement mon LCD en 4 bit . en 8bit il fonction très bien
mais en 4 il ne veux rien savoir . pouvez vous m'aider : voila mon code
void Init_Lcd_4bit()
{
VarSend = 0x30;
Lcd_Send(VarSend);
VarSend = 0x30;
Lcd_Send(VarSend);
VarSend = 0x30;
Lcd_Send(VarSend);
VarSend = 0x30;
Lcd_Send(VarSend);
VarSend = 0x20;
Lcd_Send(VarSend);
VarSend = 0x20;
Lcd_Send(VarSend);
VarSend = 0x80;
Lcd_Send(VarSend);
VarSend = 0x00;
Lcd_Send(VarSend);
VarSend = 0xb0;
Lcd_Send(VarSend);
VarSend = 0x00;
Lcd_Send(VarSend);
VarSend = 0x10;
Lcd_Send(VarSend);
VArSend = 0x00;
Lcd_Send(VarSend); // poids faible
VarSend = 0x60;
Lcd_Send(VarSend);
}
void SendCommand(char VarSend)
{
LCD_DATA_PORT= VarSend; /* masquage des poids faible*/
bit_set(LCD_DATA_PORT,10); /* mise à 1 de E (validation)*/
delay_ms(5);
/* delai de 450 ns a respecter ... */
bit_clear(LCD_DATA_PORT,10); /* mise à 0 de E*/
delay_ms(5);
}
void Lcd_Char(char CharSend)
{ // envoi d un charactere à l écran
char VarToSend; // variable interne à la fonction
VarToSend= CharSend & 0xF0; // masquage des poids faible
VarToSend= VarToSend +0x01; // RS =1
LCD_DATA_PORT= VarToSend; // masquage des poids faible
bit_set(LCD_DATA_PORT,1); // mise à 1 de E (validation)
delay_ms(10);
bit_clear(LCD_DATA_PORT,2); // mise à 0 de E
delay_ms(10);
VarToSend = CharSend <<4; // decalage poids faible
VarToSend = VarToSend & 0xF0; // masquage poids faible
VarToSend = VarToSend +1; // position de RS=1
LCD_DATA_PORT= VarToSend; // masquage des poids faible
bit_set(LCD_DATA_PORT,1); // mise à 1 de E (validation)
delay_ms(10);
bit_clear(LCD_DATA_PORT,1); // mise à 0 de E
delay_ms(10);
}
-----