Ansteuerung eines 7x5 - LED - Displays

7x5 = 35. Es gilt also 35 LEDs getrennt anzusteuern. Das geschieht i.a. über eine Reihen-Spalten-Matrix. Dazu benötigt für ein solches Display 7+5 = 12 Steueranschlüsse ( R1...R7 und C1...C5).  Damit wären fast alle (bis auf eins) IO-Beine eines PIC 16F84 belegt. Um  verschiedene Modi  der Datenausgabe ansteuern zu können, hätte man dann nur noch einen Eingang zur Verfügung.

Ein wenig mehr Spielraum gewinnt man, wenn man die Ausgabe mit Hilfe eines Schieberegisters multiplext. Dazu wird zu Beginn eines Zyklus der Dateneingang des Schieberegisters mit einer 1 belegt. Für die folgenden vier Takte wird eine 0 angelegt, so dass das High-Signal nacheinander an den Ausgängen des Schieberegisters erscheint. Dieses High-Signal wird dafür benutzt, einen Transistor durchzuschalten, der dann die entsprechende Spalte des Displays einschaltet. Wird dabei gleichzeitig ein entsprechendes Ausgabe-Byte an die 7 LEDs einer Spalte gelegt, so erhält man ein stehendes Bild des gewünschten Zeichens. Für dies Art der Ansteuerung benötigt man 7 Ausgang-Pins für das Datenwort, ein Pin für den Takt und ein Pin für das Data-Bit, insgesamt also 9 Bit. Man hat dann noch vier Pins als Eingabe-Möglichkeiten zur Verfügung.

Als Alphabetisierungshilfe sollte das ganz folgende Modi haben:

  • Das Alphabet nacheinander anzeigen
  • Zufällig Buchstaben ausgeben
  • Wörter buchstabieren (z.B. MAMA oder auch DIDI)
  • Lustige Muster blinken
 

Die Bitmuster für die einzelnen Zeichen können mit Hilfe des Progrämmchens 7x5.exe erstellt werden. Das Programm erstellt eine ASCII-Datei, in der jeweils 5 Spalten-Bytes der Zeichen abgespeichert werden. Diese Tabelle wird mit  #include buchst.tab in den Quellcode eingebunden. Die 32 Zeichen benötigen 160 Byte Speicherplatz. Da sie über das Verbiegen des Programm-counters aufgerufen werden (s. Daten im PIC,  muss man dafür Sorge tragen, dass bei keinem Aufruf der PC über 255 erhöht wird. Die Tabelle muss also ziemlich früh im Programmcode eingebunden werden.

Buchstaben (bzw. Zeichen) entsprechen  Zahlenwerten (A:0 ...Smily:1f. Die Ausgabe-Routine sorgt dann dafür, dass das entsprechende Zeichen ausgegeben wird.  Um Wörter abzulegen, benutzt  man das Daten-EEPROM . In dem entsprechenden Modus werden die Wörter als Zahlen ablegt und nacheinander ausgelesen.

Für den Wechsel von Zeichen zu Zeichen sorgt ein Interrupt, der in einstellbaren Zeiten einen Zähler verändert. Dieser veränderte Zähler wird mit dem vorherigen verglichen. Bei einer Veränderung wird das nächste Zeichen ausgegeben.

Im Beispiel werden drei Eingänge von Port A benutzt, um verschiedene Modi einzustellen.

Port A4 Port A3 Port A2  Modus  Prozedur  Initialisierungwerte
0 0 0 00  alphabet  buchst = 0
0 0 1 04  random  buchst = 0
0 1 0 08  blink  buchst = 1a
0 1 1 0c  stern  zz =7, start = 24
1 0 0 10  wort  start = 0; zz =0c
1 0 1 14  wort  start = 0b; zz = 0c
1 1 0 18  wort  start = 19, zz = 0c
1 1 1 1c  nicht implementiert