Materialien zum Unterricht

...und kommt bis 100

Um bis 100 zählen zu können, braucht man zwei Ziffern. Die Anzeige schafft das problemlos, sie besteht ja aus zwei Teilen. Nun könnte man die Einer-Ziffer an einem Port anschliesen und die Zehner-Ziffer an einem weiteren Port. Damit kommt man aber nicht weit, denn unsere Controller hat nur 4 Ports.

Multiplex

Die Lösung des Problems heißt Multiplex. Dazu nutzt man eine kleine Schwächen unseres Auges aus.
Wenn zwei Lampen ganz kurz hintereinander eingeschaltet werden, erscheint es uns, als ob beide gleichzeitig angehen. Unsere Auge kann Ereignisse, die in einem Abstand von weniger als etwa 1/60 bis 1/70 Sekunde hintereinander geschehen, keinen zeitlichen Unterschied mehr wahrnehmen. Dazu ist es zu träge.

Für die Anzeige bedeutet dass, das man erst die eine Ziffer kurz einschaltet und wieder ausschaltet. Dann muss sofort die zweite Ziffer für einen kurzen Moment eingeschaltet werden und wieder aus. Dann wieder die erste Ziffer usw. Geht das alles sehr schnell, was für einen Mikrocontroller kein Problem ist, erscheint es uns so, als ob beide Anzeigen immer an sind.

Hat man mehr Stellen, muss das Verfahren entsprechend erweitert werden.

Die praktische Umsetzung

Dieses Verfahren lässt sich leicht in die Tat umsetzen.

Die bisherige Verdrahtung der einen Ziffer bleibt erhalten. Zusätzlich werden jetzt die Segmente der zweiten Ziffer mit denen der ersten Ziffer verbunden. Also A1 mit A2, B1 mit B2 usw.

Würde man jetzt zählen, zeigen beide Stellen die selbe Zahl an. Das ist aber nicht Sinn der Sache.

Deshalb schalten wir jetzt die Ziffern über die Anoden an und aus. Bisher war die Anode der einen Ziffer an den Pluspol verbunden, also immer aktiv. Jetzt legen wir die beiden Anoden an die Pins 1 und 2 des Schalterports A.

Im unserer Anzeige-Funktion müssen wir noch darauf achten, dass am Port B (LED_PORT) die erste Ziffer anliegt (Einer-Stelle) und die entsprechende Anode über den Port B mit einer 1 versorgt wird. Dann wird etwa 1 ms gewartet und die Anzeige über den Port B ausgeschaltet (Anode auf 0). Sofort danach muss am Port B die zweite Ziffer erscheinen und die Anode dieser Anzeige auf 1 geschaltet werden. Dann wieder warten und ausschalten.

In der main-Funktion müssen wir nur noch dafür sorgen, dass die Anzeige-Funktion regelmäßig aufgerufen wird. Aber das wird sie ja, da sie an Anfang der while-Schleife steht und bei jedem Durchlauf als erstes abläuft.

 

Aufgaben:

  1. Schalte die beiden Anoden der Anzeige am Port A an Pin 1 und Pin 2.
  2. Schreibe die Funktion anzeige() so um, dass sie die Multiplex-Anzeige durchführt. Verwende als Variablen für die Zähler z.B. zaehler_einer und zaehler_zehner.
  3. Teste die Funktion anzeige(), in dem du sie von der main()-Funktion aus mit zwei Ziffern aufrufst. Das könnte so aussehen:
    anzeige(2,5)
    Wenn die Anzeige richtig funktioniert, müssten jetzt die beiden Ziffern dort erscheinen.
  4. Ändere die Hauptfunktion main(). Es müssen die beiden Variablen zaehler_einer und zaehler_zehner bei jedem Tastendruck verändert werden. Dazu muss geprüft werden, welchen Wert zaehler_einer hat. Ist er gleich 10, muss zaehler_zehner um eins erhöht werden. Ist dieser Wert auch 10, müssen beide Variablen auf 0 gesetzt werden. Damit ist eine Anzeige von 00 bis 99 möglich.

 

 

zurück