mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD mit zwei I/O-Pins ansteuern


Autor: Ulf Rolf (roolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine kleine Überlegung zur Ansteuerung eines HP44780-LCDs mit nur zwei 
I/O-Pins.

Wir kaskadieren zwei Schieberegister 74HC164. Die Q-Ausgänge werden mit 
den Eingängen des Displays wie folgt verbunden (Tabelle Spalte 1 und 2):
Ausgang       Eingang         Übertragung nach
Schiebereg.   Display         11   12   13   14 bits
----------------------------------------------------------
Q0            D4               Y    Z    Z    0
Q1 n.c.                        Y    Y    Z    Z
Q2            D5               X    Y    Y    Z
Q3 n.c.                        X    X    Y    Y
Q4            D6               W    X    X    Y
Q5 n.c.                        W    W    X    X
Q6            D7               R    W    W    X
Q7 n.c.                        R    R    W    W
Q8            RS               0    R    R    W
Q9 n.c.                        0    0    R    R
Q10 n.c.                       1    0    0    R
Q11           E                0    1    0    0
Q12 n.c.                       0    0    1    0
Q13                            0    0    0    1

Um die Daten RWXYZ auf die Pins RS, D7, ... D4 zu bringen, übertragen 
wir das Wort 100R RWWX XYYZ Z0.  Was passiert?

Bis zum 11. Bit ist E low und das Display taub.  Beim 12. Bit wird E 
high und die Daten liegen an RS, D7..4 korrekt an.  Beim Bit 13 bleiben 
die Daten an RS und D7..4, aber E wird low - die Daten werden an der 
fallenden Flanke übernommen.

Beim Bit 14 bleibt zunächst E low, sodass weiter nichts übernommen wird. 
Außerdem wird Q13 zum ersten Mal high.  Wir bauen aus einem Transistor 
und einem Pullup einen Inverter und legen das invertierte Signal von Q13 
auf  die Reseteingänge beider Schieberegister: die Register werden 
wieder gelöscht.

Kann so etwas in der Praxis funktionieren?  Es steht und fällt mit der 
Annahme, dass beim Shift von 12 nach 13 die Daten ohne Wackeln anliegen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm einen HC164 und zwischen Clock und Datenpin ein RC-Glied.

Wenn der Clock nur einen kurzen low-Puls macht, bleibt der C geladen und 
Du schiebst ne 1 rein.
Macht der Clock einen langen low-Puls, entlädt sich der C und Du 
schiebst ne 0 rein.
Für RS = 0, muß am Ende der Clock noch auf low gehen.
D.h. ein Pin für Clock+Daten+RS und der andere als E.


Peter

Autor: MagIO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ulf Rolf (roolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessanter Ansatz. Dein Clock-Signal hat stets scharfe Flanken, und 
weil Data ein bisschen verschleift, kann man durch die Länge beide 
Data-Zustände erzeugen. Außerdem erzeugst Du RS außerhalb des 
Schieberegisters und kannst somit im 8bit-Modus bleiben.

Wenn man nun beide Ansätze kombiniert, käme man mit einem Portpin und 
zwei HC164 aus?

Man könnte ja jetzt auch mutig zwei RC-Glieder verschiedener Länge 
basteln, das schnelle für das Data des Schieberegisters und das langsame 
(über einen Transistor als Inverter) für Enable des Displays.  Dann 
hätten wir: ein Schieberegister für 4 Datenbits und RS, und ein 
abschließender besonders langer Low-Impuls auf derselben Leitung 
übernimmt die Daten ins Display.

Autor: Ulf Rolf (roolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MagIO schrieb:
> http://www.romanblack.com/shift1.htm

Sehr schöne Beschreibung. Es hätte mich auch gewundert, wenn die Idee, 
zwei RC-Glieder zu verwenden, neu gewesen wäre :-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.