Forum: Mikrocontroller und Digitale Elektronik Displayunterschiede 16x2 Electronic Assembly / Displaytech


von Alexander G. (skragan)


Lesenswert?

Hallo Leute,

ich sitze hier vor einer Schaltung, wie sie bereits zu mehreren hundert 
gebaut wurde. Bislang habe ich immer ein EA W162B-N3LW eingesetzt, 
welches ja einen HD44780 drauf hat. Nun habe ich eine neue Variante 
aufgebaut, auf dieser sitzt jetzt ein Displaytech 162B in grün, welches 
einen ST7066 verwendet. Die Schaltung wird mit BASCOM auf einem Mega128 
programmiert, das funktionierte bislang auch immer gut. Das Display wird 
über den 4-bit Modus angesteuert, die Library lcd4busy.lib habe ich für 
den Einsatz bei 16MHz entsprechend geändert. Wie gesagt, lief immer gut.

Auf der neuen Schaltung macht das Displaytech nun folgende Dinge:

- Mal startet es ganz normal mit hervorragendem Kontrast, zeigt aber 
leider die zweite Zeile nicht an
- Mal startet es mit ganz schwachem Kontrast, zeigt aber beide Zeilen 
korrekt an

- Führt man manuell per Tastendruck ein erneutes initlcd durch, steigt 
ab und an der komplette Controller aus und wird nicht einmal vom 
Watchdog wiederbelebt


Geprüft habe ich:

- Kalte Lötstellen (2 Schaltungen vorhanden, beide gleiches Verhalten)
- Anderes Display (2 Displaytech, gleiche Fehler, 1 EA, fehlerfreies 
Verhalten)
- Verlangsamung der lcdbusy Abfrage in der lcd4busy.lib (90us laut 
Angabe Datenblatt Displaytech)

Wenn dazu jemand eine Idee hat, würde ich mich riesig freuen...

Gruß,

Alex

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das wird ein Timing-Problem sein, die Enable-Leitung ist dahingehen 
recht empfindlich. Vergrößere mal die Zeitabschnitte von Anlegen der 
Daten -> Enable -> Umschalten der Daten. Führe eine lange Software-Init 
ohne Berücksichtigung des Power-Up-Reset durch. Nur diese funktioniert 
immer.

von Alexander G. (skragan)


Lesenswert?

Hi und danke für die Anregung. Leider bislang ohne Erfolg, ich habe 3 
verschiedene Datenblätter durchgearbeitet und die Zeiten entsprechend 
den Vorgaben in der Library geändert. Das Displaytech Modul läuft immer 
noch unzuverlässig, das EA ohne Probleme.

Weiterhin habe ich eine halbe Sekunde "Power on" warten eingefügt, damit 
die Betriebsspannung auch stabil über 4,5V ist, bevor das Modul 
angesprochen wird.

Hauptfehler sind immernoch, daß das LCD entweder richtig mit beiden 
Zeilen läuft, der Kontrast aber ganz schlecht ist ODER der Kontrast gut 
ist, dafür aber die zweite Zeile fehlt.

Ein Suchen in den Datenblättern des ST7066U hat mir ebenfalls keine 
Erkenntnis gebracht, wir sitzen auch mit zwei Leuten dran und finden das 
Problem (bzw. die Lösung) einfach nicht.

von Gast06 (Gast)


Lesenswert?

Wie steht es mit der Kontrast-Spannung/Einstellung?

Ich habe da schon einige Unterschiede zum HD44780 gefunden, hat man 
schon dort mal nachgemessen? Leider gibt es Kontroller (sogar bei 
EA-Modulen)
bei den sich die Kontrastspannung nicht einfach mit einem Poti zwischen 
Versorgung und Masse einstellen ließ.

von Max V. (maxv)


Lesenswert?

>Das alphanumerische LCD-Modul 162B von Displaytech verfügt über zwei Zeilen >mit 
jeweils 16 Zeichen und verwendet den Controller KS0070B, der kompatibel >zum 
Industriestandard HD44780 ist.

Das stimmt so nicht ganz, ich hab bis jetzt nur in C programmiert, aber 
da habe ich mich ca 4Wochen versucht mit einem Code für den HD44780 das 
Display anzusprechen, alle Versuche erfolglos.
Display in die Ecke geworfen, was anderes gemacht und nach nem halben 
jahr neu angefangen.
Diesmal mit Code der für den Ks0070B war.

Ergebnis: hat sofort funktioniert.

Also wirklich Kompatibel sind die nicht.

MfG

von Alexander G. (skragan)


Lesenswert?

Ja, wir haben jetzt auch die komplette Initialisierungsroutine dem 
Datenblatt des KS0070 entsprechend neu geschrieben, das Display läuft 
auch - aber eben ab und an mit einer Zeile und gutem Kontrast und ein 
andermal mit zwei Zeilen und schlechtem Kontrast...

Ich habe keine Ahnung....

von Alexander G. (skragan)


Lesenswert?

HA !

Problem gelöst: Tatsächlich ein init-Problem. Entgegen dem Datenblatt 
haben wir zusätzlich nochmal 3 weitere "SW-Resets" vor die Befehlskette 
gehängt (8-bit Mode Befehl), bevor wir das Display auf 4-Bit umschalten. 
Nun startet es immer im zweizeiligen Modus mit schlechtem Kontrast, aber 
das ist ja ein Gleichspannungsproblem ;)

Travel Rec. hat also Recht gehabt und wir offenbar einen 
Programmierfehler ;)

Danke allen !

von Toaster (Gast)


Lesenswert?

Hallo,

ich hab ähnliche Probleme, wenn ich mein 2x16 Display einzeilig 
initialisiere hat es einen super Kontrast, zweizeilig sieht man 
praktisch nichts.
Brauche ich eine negative Kontrastspannung? warum tut es dann einzeilig?

MfG
Thomas

von skragan (Gast)


Lesenswert?

Ja, das ist möglich, je nach Displaytyp kann die durchaus negativ sein.

von Thomas A. (toastertzr)


Lesenswert?

Wollte nochmal nachfragen ob dein dein Display inzwischen 2-zeilig mit 
gutem Kontrast arbeitet? Und falls ja was du geändert hast?

von skragan (Gast)


Lesenswert?

Ich habe die Kontrastspannung geändert (0V) und eine saubere 
Initialisierung (per Software) implementiert, nun klappts. Das war aber 
nur sportlicher Ehrgeiz, ich werde in Zukunft trotzdem nur noch das EA 
Modul einsetzen, weil es einfach deutlich schneller ist.

von H. G. (ledi)


Lesenswert?

Hallo!

Ich habe auch so ein ähnliches Problem!
Kannst Du deinen C-code bitte posten?

Danke!

von Skragan (Gast)


Lesenswert?

Hi,

das habe ich aber in BASCOM programmiert :o)

Gruß Skragan

von H. G. (ledi)


Lesenswert?

Das macht nichts!

Die Routinen werde ich einfach umschreiben.

von Skragan (Gast)


Angehängte Dateien:

Lesenswert?

$initmicro                                                  'LCD 
INITIALISIERUNG IN DER UNTERROUTINE: _init_micro


Dann:


'**** LCD 
**********************************************************************
_init_micro:
$lib "lcd4busy16new.lib"                                    'angepasste 
Displayroutine 16MHz f¸r EA und Displaytech Module
Const _lcdport = Portc
Const _lcdddr = Ddrc
Const _lcdin = Pinc
Const _lcd_e = 1
Const _lcd_rw = 2
Const _lcd_rs = 3
Waitms 50
Config Lcd = 16 * 2
Return


Die Displayroutine hängt als pdf an.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.