Witajcie!
Kupiłem ostatnio nowego LCD 4x20 opartego na sterowniku ks0066 samsunga i niestety, ale nie moge go zmusić do współpracy.
Czy ktoś z was ma doświadczenie z tego typu sterownikami??
W załączniku nota LCD i KS0066, a poniżej fragment kodu inicjalizacji.
Jeżeli ktoś widzi tu jakiś błąd to proszę dajcie znać lub jeśli dysponujecie gotowymi procedurami do obsługi tego sterownika to będe wdzięczny jeśli się podzielicie.
Datasheet LCD
KS0066U
Pozdrawiam
Piotrek
Kupiłem ostatnio nowego LCD 4x20 opartego na sterowniku ks0066 samsunga i niestety, ale nie moge go zmusić do współpracy.
Czy ktoś z was ma doświadczenie z tego typu sterownikami??
W załączniku nota LCD i KS0066, a poniżej fragment kodu inicjalizacji.
Jeżeli ktoś widzi tu jakiś błąd to proszę dajcie znać lub jeśli dysponujecie gotowymi procedurami do obsługi tego sterownika to będe wdzięczny jeśli się podzielicie.
Datasheet LCD
KS0066U
Pozdrawiam
Piotrek
/*Inicjalizacja LCD*/
void lcd_init(void)
{
DDR_DB4 |= _BV(DB4);
DDR_DB5 |= _BV(DB5);
DDR_DB6 |= _BV(DB6);
DDR_DB7 |= _BV(DB7);
DDR_E |= _BV(E);
DDR_RS |= _BV(RS);
waitms(50); // czekaj 50ms na ustabilizowanie się napięcia zasilającego
CLR_E; // E = 0
CLR_RS; // RS = 0
//FUNCTION SET 4BIT MODE
SET_E;
CLR_DB7;
CLR_DB6;
SET_DB5;
CLR_DB4;
waitms(1);
CLR_E;
waitms(1);
//FUNCTION SET DISPLAY MODE
SET_E;
CLR_DB7;
CLR_DB6;
SET_DB5;
CLR_DB4;
waitms(1);
CLR_E;
waitms(1);
SET_E;
SET_DB7;//2linie
SET_DB6;//disp on
CLR_DB5;//-
CLR_DB4;//-
waitms(1);
CLR_E;
waitms(1);
//DISPLAY ON/OFF
SET_E;
CLR_DB7;//
CLR_DB6;//
CLR_DB5;//
CLR_DB4;//
waitms(1);
CLR_E;
waitms(1);
SET_E;
SET_DB7;//
SET_DB6;//disp on
SET_DB5;//CURSOR ON
SET_DB4;//BLINK ON
waitms(1);
CLR_E;
waitms(1);
//DISPLAY CLEAR
SET_E;
CLR_DB7;//
CLR_DB6;//
CLR_DB5;//
CLR_DB4;//
waitms(1);
CLR_E;
waitms(1);
SET_E;
CLR_DB7;//
CLR_DB6;//
CLR_DB5;//
SET_DB4;//
waitms(1);
CLR_E;
waitms(2);
//ENTRY MODE SET
SET_E;
CLR_DB7;//
CLR_DB6;//
CLR_DB5;//
CLR_DB4;//
waitms(1);
CLR_E;
waitms(1);
SET_E;
CLR_DB7;//
SET_DB6;//
SET_DB5;//INCREMENT MODE
SET_DB4;//SHIFT ON
waitms(1);
CLR_E;
waitms(1);
}