-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Grundsatzfragen zum LCD

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253

    Grundsatzfragen zum LCD

    Anzeige

    Moin..

    Mir ist gerade ein Datenblatt von einem 16x2 Character-LCD in die Hände gefallen. So ein Standartteil halt. Und da hab ich mir ein paar Fragen übers Pinning gestellt: Es ist ja so dass die Zeichen einen 8-Bit-Code haben. Aber man kann das Display ja auch im 4-Bit-Modus ansteuern. Wie werden dann die zweiten 4 Bit übertragen? Hat Register Select damit was zu tun? Oder bestimmt der nur, wohin das Zeichen geschrieben wird? Dann gibts ja noch Enable, aber ich glaub das ist nur dazu da dass das Display nicht immer die Lauscher aufsperrt sondern nur wenns Daten gibt. R/W ist klar. Es ist jetzt halt nicht so dass ich Probleme mit meinem LCD hab, funktioniert bestens. Nur ich würds eben gerne genauer wissen.

    Ach und kann es sein dass die Schwarz auf Grün-Displays schneller sind als die Weiss auf Blau (vom "Bildaufbau" her?)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    13.10.2005
    Beiträge
    25
    Moin!

    Ob das Display auch im 4 Bit Modus funktioniert hängt vom Kontroller ab.
    Im 4 Bit Modus werden zweimal 4 Bit gesendet, statt einmal 8 Bit.
    Also erst die Bits 7-4 an die LCD-Datenleitungen 7-4 anlegen, mit Enable einlesen. Enable zurücksetzen, Bits 3-0 an die LCD-Datenleitungen 7-4, Enable setzen, Enable zurücksetzen. Usw.
    Das RS Bit ist bei den Standardcontrollern dazu da, um festzulegen ob der Inhalt des Datenspeichers (die Zeichen, die auf dem Display dargestellt werden) angesprochen werden soll, oder eine Controllerfunktion (Cursor an/aus, Cursor an Position setzen, Display an/aus usw.).

    Argentan

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von steveLB
    Registriert seit
    24.10.2005
    Beiträge
    481
    die schnelligkeit häng soweit ich weiß nur von der taktung, also wie schnell oder oft du dein befehl zum lcd schickst.
    vom aufabu sind beide LCD´s gleich , ist nur ne andere folie dahinter bzw andere farbe für die hintergrundbeleuchtung.
    außerdem dürfte auch kein unterschied da sein, da du bei beiden displays auch die selben warteschleifen und initialisierungen hast

    edit : noch was zu R/W, den pin brauchst eigentlich auch nicht, wenn du etwas auf die zeiten achtest.

    somit reichen 4 (daten) + 1 (Enable) + 1 (RS) = 6 Pins

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Bei HD44780-kompatiblen ö.ä. wird nach dem Reset ein Kommando geschickt, das die Breite der Schnittstelle festlegt (4 oder 8 Bit). Die Reaktionszeiten der LCDs sind teilweise recht hoch (also nicht die des LCD-Controllers) und deutlich höhrer als z.B. bei VFDs.
    Disclaimer: none. Sue me.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Man braucht sich deswegen eigentlich nicht groß den Kopf zerberechen.
    Wenn das LCD den 4-Bit Modus erlaubt und Deine Programmiersprache (z.B. Bascom) entsprechend initialisiert, ist alles andere nur noch ein "Kinderspiel".
    Wenn es nicht klappt, hat man entweder was falsch angeschlossen, oder das LCD unterstützt den 4-Bit Mode nicht.

    Übrigens die nicht benutzen Dateineingänge sollte auf HI (über 10k gelegt werden) offen lassen ist nicht sehr elegant.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von H.A.R.R.Y.
    Registriert seit
    15.09.2005
    Beiträge
    306
    Bitte such im Netz mal nach dem Datenblatt vom HD44780 o.ä. da sind die Timings und Transfermodi genau beschrieben.

    Nr.1: Das Tempo des Bildaufbaus hängt vom eigentlichen LCD ab, aber auch vom Takt des Contollerchips.

    Nr.2: Der 4-Bitmodus ist im Datenblatt erwähnt und funktioniert normalerweise auch, aber der eigentliche Transfer dauert nun doppelt so lange und das kann manchmal sichtbar werden.

    Nr.3: Der Vorteil vom 4-bit-Modus ist, das er nur 7 Signale braucht, sonst sind 11 fällig.

    Nr. 4: Der Nachteil vom 4-bit-Modus ist, das er nach einem Display-Reset erst aktiviert werden muß. Das Display hat keinen Reset-Anschluß, der steuernde µC üblicherweise keine Ahnung ob das Display vorher schonmal initialisiert war (Reset-Taste oder kurzer Vcc-Einbruch, von dem das Display nix mitbekommen hat). Da hängt sich die Sache dann meist auf, weil der µC den einen Befehl schickt (guck im Datenblatt, wieso), der auf 4-bit umschalten soll, das Display aber noch auf 4-bit eingestellt ist und die zweite Hälfte des Transfers erwartet. Den nächsten Befehl schickt der µC also in zwei Hälften, von denen das Display nun aber die erste Hälfte als Abschluß des vorherigen Transfers ansieht...
    Das läßt sich mit einer komplexeren Init-Sequenz aber beheben (das Display ist dabei für den 4-Bit-Modus angeschlossen und der Ablauf recht trickreich, aber es funktioniert in der Praxis 100% zuverlässig!):
    a) Display für 8-bit konfigurieren (einmal 4bit senden -> siehe Datenblatt!)
    b) Maximalzeit plus 10% Zuschlag abwarten (NICHT das busy-flag lesen!)
    c) Display für 8-bit konfigurieren (einmal 4bit senden -> siehe Datenblatt!)
    d) Maximalzeit plus 10% Zuschlag abwarten (NICHT das busy-flag lesen!)
    e) Display für 8-bit konfigurieren (einmal 4bit senden -> siehe Datenblatt!)
    f) Maximalzeit plus 10% Zuschlag abwarten (NICHT das busy-flag lesen!)
    g) Display für 4-bit konfigurieren (einmal 4bit senden -> siehe Datenblatt!)
    h) Maximalzeit plus 10% Zuschlag abwarten (NICHT das busy-flag lesen!)
    i) jetzt ist das Display garantiert im 4bit-Modus und wartet auf die erste Hälfte eines Transfers!

    Eventuell kann Schritt h) entfallen, aber ohne habe ich es noch nie probiert. Wichtig ist , das bei jedem dieser Transfers (a, c, e, g) nur 4 bit transferiert werden und danach NICHT das Busy-flag des LCD gelesen wird. Die vier unbenutzten Anschlüsse (D3 bis D0) sind für dieses spezielle Kommando nicht relevant und damit sieht das Display tatsächlich erstmal anständige 8-bit-Transfers. Die beschriebene Init-Sequenz "holt" das Display auch bei einem RESET des steuernden µC zwischen zwei halben Transfers garantiert zurück auf Anfang!!

    Wer meint, ich spinne, kann es ja mal selbst ausprobieren. Zumindest spart diese SW-Lösung den extra Transistor samt Portpin um das LCD gewollt "vom Netz" zu nehmen.
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Salut Darwin,

    d0 - d3 auf 1 kommt nicht unbedingt hin.
    ich verwende n hd44780 "kompatibles" das
    die auf 0 haben will
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    @H.A.R.R.Y.
    Deine Signatur enthält:
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

    Seit wann sind Input und Output Zustände?

    High, Low evtl. auch Tristate und meinetwegen auch KaPut
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von H.A.R.R.Y.
    Registriert seit
    15.09.2005
    Beiträge
    306
    Nachtrag:
    nach Schritt i) den Transfer für 4-bit-Modus nochmal ausführen, jetzt aber auch die vorher "festgeklemmten" Bits D3 bis D0 sauber hinterherschicken. Damit kannst Du das LCD komplett per Software initialisieren und entweder D3 bis D0 offen lassen oder auf Vcc oder auf Gnd legen:
    also:
    j) Display für 4-bit konfigurieren (bits 7 bis 4)
    k) Display für 4-bit konfigureiren (bits 3 bis 0)
    l) auf BUSY-Flags warten (oder die Timeout-Methode)
    alles weitere (Init und Datentransfer) läuft im 4-bit-Modus ab.

    Hoffe das hilft Dir und all den anderen 4-Bit-Modus-Probleme-habende!
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von H.A.R.R.Y.
    Registriert seit
    15.09.2005
    Beiträge
    306
    Seit wann sind Input und Output Zustände?
    Na da frag mal den nächsten µC: Für den sind die Datenrichtungen auch Zustände (Input = tristate, Output=low impedance), oder?
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •