Moin.
Nachdem ich ja vor einiger Zeit mal ein Problem mit einem LCD hatte, hab ich gestern mal da wieder weitergemacht.
Nochmal kurz was war:
Ein altes Display (HD44780, 40x2) soll an einem AVR betrieben werden. Angesteckt, LCD-Befehle von Bascom verwendet: Display bleibt "Aus" (also eigene LCD-Initialisierung, nur die erste Zeile ist aktiv). Ein anderes, max. 2 Jahre altes Display angesteckt: Funktioniert fehlerfrei.
Beide Displays an der USB-Ansteuerung ULA200 (ELV) angeschlossen: Beide funktionieren fehlerfrei.
Nun hab ich mir gestern mal mit einem Logik-Analyzer die Init-Sequenz der USB-Ansteuerung angeschaut und 1:1 auf den AVR übertragen, d.h. die Datenpins & Enable werden genau so und auf 5 µs genau ein/ausgeschaltet... Trotzdem bleibt das Display im 1-Zeilen-Modus.
Also wenn der AVR das gleiche Signal liefert, sollte das Display doch dann mal initialisieren oder nicht?
Der folgende Code bildet das Signal der USB-Ansteuerung nach. Nach dieser Signalfolge ist das Display an der Ansteuerung korrekt im 2-Zeilen-Modus. Am AVR jedoch nicht.
Code:'******************************************************************************* 'Header '******************************************************************************* $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 'default 32 $swstack = 10 'default 10 $framesize = 40 'default 40 $baud = 19200 '******************************************************************************* 'Ports '******************************************************************************* Config Pinb.0 = Output : DB0 Alias Portb.0 Config Pinb.1 = Output : DB1 Alias Portb.1 Config Pinb.2 = Output : DB2 Alias Portb.2 Config Pinb.3 = Output : DB3 Alias Portb.3 Config Pinb.4 = Output : DB4 Alias Portb.4 Config Pinb.5 = Output : DB5 Alias Portb.5 Config Pinb.6 = Output : DB6 Alias Portb.6 Config Pinb.7 = Output : DB7 Alias Portb.7 Config Pind.2 = Output : EN Alias Portd.2 Config Pind.3 = Output : RegS Alias Portd.3 DB0 = 0 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitms 10 EN = 1 : Waitus 630 : EN = 0 : Waitus 770 DB0 = 0 : DB1 = 1 : DB2 = 1 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitus 260 EN = 1 : Waitus 630 : EN = 0 : Waitus 770 DB0 = 0 : DB1 = 0 : DB2 = 1 : DB3 = 1 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitus 260 EN = 1 : Waitus 630 : EN = 0 : Waitus 770 DB0 = 0 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 1 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitus 260 EN = 1 : Waitus 630 : EN = 0 : Waitus 770 DB0 = 0 : DB1 = 0 : DB2 = 0 : DB3 = 1 : DB4 = 1 : DB5 = 1 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitus 260 EN = 1 : Waitus 630 : EN = 0 : Waitus 770 DB0 = 1 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitus 260 EN = 1 : Waitus 630 : EN = 0 : Waitus 770 DB0 = 1 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0 Waitus 260 Do:Loop End Powerdown







Zitieren

Lesezeichen