Guten Abend,
habe hier LCD´s zum Ansteuern von Winstar vpm Typ 1602B bei der die
Initialisierungsroutine nicht funktioniert. Verbaut ist ein Controller
vom Typ ST7066, ein passendes Datenblatt habe ich nach etwas Suchen
gefunden, siehe Anhang 2723615.pdf fuer das LCD.
Im Anhang, WH1602B_INIT.jpg, ist der Flow abgebildet fuer die Routine,
doch bekomme ich staendig das selbe Ergebnis habe bereits viele
Bitmoeglichkeiten sowie Delays ausprobiert, es sind immer "32" schwarze
Balken abgebildet.
Was laeuft da falsch in diesem Programm mit dem LCD? Bitmuster sowie
Enableimpuls liegen korrekt an, validiert mit Oszi. Zwischen den
Kommandos (RS auf GND laut Datenblatt) wird 5ms gewartet in dem
Programm.
D0 - D3 µC == DB4 - DB7 LCD
Pin 3(Kontrast) und 5(R/W) liegen auf GND
1
;Um Platz zu sparen µC Initialisierung weg gelassen...
2
3
ldi r16, 0b00000011
4
out PORTD, r16
5
rcall E_AnAus
6
rcall mS_5_Pause
7
8
rcall E_AnAus
9
rcall mS_5_Pause
10
rcall E_AnAus ; Nach Erfahrungen drei mal senden...
Teo D. schrieb:> Sind den die 15ms Wartezeit, nach anlegen der Betriebsspannung,> gewährleistet?!> Ansonsten sehe ich hier, nämlich erstmal nichts auffälliges.
ja sind sie..
habe ein Projekt in C gefunden mit dem Display auf einem ST µC, der
Initialisiert das entgegen dem Datenblatt...
1
GPIO_WriteHigh(LCDLightPort,LCDLightPin);
2
3
_lcd_delay(400);// Wait after power on
4
5
GPIO_WriteHigh(LCDDataPort,LCDDB4|LCDDB5);
6
7
_lcd_strob();
8
_lcd_delay(5);
9
_lcd_strob();
10
_lcd_delay(1);
11
_lcd_strob();
12
_lcd_delay(1);
13
/*** 4 bit Init ***/
14
GPIO_WriteLow(LCDDataPort,LCDDB4);
15
_lcd_strob();
16
_lcd_delay(5);
17
18
/*** LCD config ***/
19
_lcd_write(0x28,CMD);// 2 line 5x7 dots
20
_lcd_write(0x0C,CMD);// Display on/Cursor off/Blinking off
21
_lcd_write(0x06,CMD);// Set cursor move direction Increase
Seltsame Sache, er sendet weniger Bytes fuer die Routine.
Hi
>Pin 3(Kontrast) und 5(R/W) liegen auf GND
Zwischen VCC und PIN3 des Displays sollen ca. 3,7V anliegen. Bei dir
liegen etwa 5V an. Meinst du die Schaltung, unten auf S.6, ist zum Spaß
da?
MfG Spess
Spess53 schrieb:> Hi>>>Pin 3(Kontrast) und 5(R/W) liegen auf GND>> Zwischen VCC und PIN3 des Displays sollen ca. 3,7V anliegen. Bei dir> liegen etwa 5V an. Meinst du die Schaltung, unten auf S.6, ist zum Spaß> da?>> MfG Spess
Danke fuer den Ansatz, so kann man sich auch seine Stunden vertreiben...
Schlechter Plan es auf GND zu legen. Erkenne nun das etwas passiert das
LCD springt von 1-Zeilen Funktion auf 2-Zeilen Funktion nach Reset, der
blinke Cursor fehlt noch bedeutet die Initialisierungsroutine ist nicht
abgeschlossen.
Hi
>Weiss Jemand wie man diese zwei Zeilen interpretieren soll? Wieso steht>in der ersten Zeile bit DB5 auf High?
Weil 0 0 1 DL N F der Befehl fur Funktion Set ist.
MfG Spess
Spess53 schrieb:> Hi>>>Weiss Jemand wie man diese zwei Zeilen interpretieren soll? Wieso steht>>in der ersten Zeile bit DB5 auf High?>> Weil 0 0 1 DL N F der Befehl fur Funktion Set ist.>> MfG Spess
Hallo Herr Spess,
danke fuer den Ansatz, doch bringt dieser mehr Schatten als Licht.
Lassen wir die zwei "0" ohne "" weg -> 1 DL N F (4-bit..)
Das Bit DL (was soll das sein?) habe ich bisher in keinem LCD Datenblatt
gefunden, woher kommt dieser "Shift", es wird im 4-bit Modus
initialisiert dann wuerde in dem Kontext entgegengesetzt dem Datenblatt
bedeuten, dass Bit DB5 (Bit 1 in 4-Bit) nicht als N (1 oder 2 Zeilig)
fungiert?
BaeumeKommunizierenElektromagnetisch schrieb:> Das Bit DL (was soll das sein?) habe ich bisher in keinem LCD Datenblatt> gefunden, woher kommt dieser "Shift", es wird im 4-bit Modus> initialisiert
Na, ausgeschlafen? :)))
DL == Data length, 4/8 Bit.....
Und laß dich nicht von der komischen "0" irritieren. Da wurde im
Beispie einfach DL bereits auf "0" gesetzt.
PS: Das "DL" haste aber doch mittlerweile in JEDEM Dabla gefunden?!