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):
1 | Ausgang Eingang Übertragung nach
|
2 | Schiebereg. Display 11 12 13 14 bits
|
3 | ----------------------------------------------------------
|
4 | Q0 D4 Y Z Z 0
|
5 | Q1 n.c. Y Y Z Z
|
6 | Q2 D5 X Y Y Z
|
7 | Q3 n.c. X X Y Y
|
8 | Q4 D6 W X X Y
|
9 | Q5 n.c. W W X X
|
10 | Q6 D7 R W W X
|
11 | Q7 n.c. R R W W
|
12 | Q8 RS 0 R R W
|
13 | Q9 n.c. 0 0 R R
|
14 | Q10 n.c. 1 0 0 R
|
15 | Q11 E 0 1 0 0
|
16 | Q12 n.c. 0 0 1 0
|
17 | 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.