Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

SPIN2 und Propeller P2

Über die 7-Segment-Anzeige (LED) habe ich hier an anderer Stelle bereits genug gesagt. Über Aufbau, Wirkungsweise und Beschaltung findet man weitere Informationen hier:

In diesem Kapitel wird mit Hilfe der Methode des Charlieplexing eine 7-Segment-Anzeige angesteuert.

Übung 1 - 7-Segment-Anzeige und Charlieplexing

In dieser Übung wird zunächst eine Anzeige angesprochen und das Verfahren der Ansteuerung beschrieben und erlernt.

Übrung 1 - 7-Segment-LED-Anzeige und Charlieplexing
Material
  • 1x  P2-Edge Modulboard
  • 1x  P2-Edge Breadboard
  • 2x  7-Segment-LED-Anzeige TDSL 5160
  • 2x  Widerstand 470 Ohm
  • diverser Steckdraht
Aufgaben
  • Baue die Schaltung auf dem Steckbrett nach Schaltskizze auf. Überprüfe wiederholt deine Schaltung auf korrekte Verbindungen.
  • Übertrage das SPIN2 Programm in den Propeller Tool Editor und speichere es ab.
  • Überlege dir anschließend, was das Programm macht. Gehe dazu zeilenweise durch das Progamm.
  • Starte das Programm und überprüfe deine eigene Aussage mit der tatsächlichen Anzeige.

Die Pinbelegung der benutzten 7-Segment-Anzeige

 

 

 

 

 

 

 

Abb. 1

Eingesetzt wird eine 7-Segment-Anzeige vom Typ TDSL 5160 mit gemeinsamer Kathode (K). Die Pinzahlen sind in der Abbildung den einzelnen Segmenten zugeordnet. Nutzt man auch den Dezimalpunkt, benötigt man 9 Ansteuerungs-Pins.

Schaltskizze zur Übung 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 2

Schaltskizze für eine 7-Segment-Anzeige im Charlieplexing-Verfahren. Die Besonderheit des P2-Edge Breadboards sieht zwei Widerstände für die Beschaltung vor. Sonst kommt man mit einem Widerstand aus.

 

Der Aufbau auf einem P2-Edge Breadboard

 

 

 

 

 

 

Abb. 3

Aufbau der zwei LED-Anzeigen auf einem P2-Edge Breadboard der Fa. Parallax.

Das Bild zeigt die Bedrahtung einer Anzeigeehinheit.

Die Beschriftung der Stecklöcher entspricht der Pinbelegung des P2 Mikrocontrollers. Jeweils acht Anschlusspins verfügen über eine separate Stromversorgung. Die Anschlusspins P32-P39 lassen sich über die GND- und V32-Buchsen mit der separaten Energiequelle verbunden.

P24 - P31 entsprechend über die Buchsen GND und V24.

Das Programm Charlieplexing_uebung1.sp2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb,. 4

Anhand der Schaltskizze (Abb. 2) versuche jede Programmzeile zu verstehen und erkläre, was sie bewirkt.

Wie arbeitet das Programm Charlieplexing_uebung1.sp2 ?

Programmzeilen 15 und 17

P35 wird auf 1, P37 auf 0 gezogen. Damit ist die LED im Segment b der 7-Segment-Anzeige eingeschaltet (s. Abb. 2) und leuchtet 100 ms.

 

Programmzeilen 18 bis 22

P35 und P37 werden hochohmig, das Segment b erlischt; P27 wird auf 1 und P26 auf LOW gesetzt. Segment c wird 100 ms eingeschaltet.

 

Im weiteren Programmablauf werden die Segmente d, e, f und a in gleicher Weise behandelt.

Es entsteht - nach Programmstart - der Eindruck eines im Uhrzeigersinn umlaufenden Segments -> hier kannst du ein Kurzvideo (10 s) anschauen.

Übung 2 - Gegenläufig rotierende Segmente mit 2x LED-7-Segment-Anzeigen

In dieser Übung werden zwei LED 7-Segment-Anzeigen so miteinander verdrahtet, dass sie charlieplexed von einem Propeller P2 angesteuert werden können.

Übrung 2 - Gegenläufige Segmentbewegungen auf 2 LED 7-Segment-Anzeigen
Material
  • 1x  P2-Edge Modulboard
  • 1x  P2-Edge Breadboard
  • 2x  7-Segment-LED-Anzeige TDSL 5160
  • 4x  Widerstand 470 Ohm
  • diverser Steckdraht
Aufgaben
  • Baue die Schaltung auf dem Steckbrett nach Schaltskizze auf. Überprüfe wiederholt deine Schaltung auf korrekte Verbindungen.
  • Übertrage das SPIN2 Programm Segmentmuster.sp2 in den Propeller Tool Editor und speichere es ab.
  • Starte das Programm und überprüfe, ob die angezeigten Segmente gegenläufig bewegt werden. Ändere dazu die Zeit auf 500 ms.
  • Wenn alles korrekt läuft, versuche selbst das Programm so zu ergänzen, dass die linke Anzeige vollständig im Uhrzeigersinn, die rechte Anzeige entgegen des Uhrzeigersinns rotiert.
  • Eine Lösung findet sich am Ende dieses Kapitels.

Schaltskizze zur Übung 2

 

 

 

 

 

 

 

 

 

 

Abb. 4

Schaltskizze zu Übung 4 mit zwei LED 7-Segment-Anzeigen vom Typ TDSL 5160.

Es werden auf Grund der Bedingungen auf dem P2-Edge Breadboard vier Widerstände benötigt.

Der Aufbau auf einem P2-Edge Breadboard

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 5

Aufbau der Schaltung auf einem P2-Edge Breadboard der Fa. Parallax Inc,.

Das Programm Segmentmuster.sp2  (Teilausschnitt)

Abb. 6 - Programmausschnitt - den fehlenden Programmcode gibt es am Ende dieses Kapitels

Legt man die Daten für jedes Segment in den beiden 7-Segment-Anzeigen in einer Look Up Tabelle ab, lassen sich sehr schnell beliebig viele unterschiedliche Muster auf den Anzeigen generieren. Wie das funktioniert, wird exemplarisch an zwei Beispielsegmenten beschrieben.

Übung 3 - Eine Look Up Tabelle für die Anzeigensegmente erstellen (schwer)

Muster lassen sich sehr gut in sogenannten Loop Up Tabellen ablegen und dann geschlossen über ein Unterprogramm aufrufen. Dies wird an dem vorliegenden Beispiel gezeigt.

Mit der Befehlsfolge

  • PINH($35)
  • PINL($37)

aus den Programmzeilen 15 und 16 (s. Abb. 6) wird das Segment „b“ in der 7-Segment-Anzeige eingeschaltet oder auf 1 gezogen. Vergleiche hierzu Abb. 4, in der die Anode der Diode des Segmentes b im linken Anzeigemodul mit Pin 35 und die Kathode mit Pin 37 des P2-Controllers verbunden ist. Die Anschlusspins größer 30 sind mit dem GND-Pin 37 und die mit den Anschlusspins kleiner 30 mit Pin 26 verbunden. Das Zeichen „$“ in der Befehlsanweisung weist auf eine hexadezimale Schreibweise hin.

Die Anschlussbelegung von Anode und Kathode wird in einem nächsten Schritt codiert. Da wir im 16-er Code arbeiten (hexadezimal), wird zunächst geschaut, dass Wievielfache von 16 in den beiden Zahlen steckt (sog. Additionsfaktor). Aus

  • $35 wird 32 + 3
  • $37 wird 32 + 5

Die Zahl

  • $35

gibt dann in ihrer 16-er Stelle den Anodenpin und in der 1-er Stelle den Kathodenpin an. Ich muss dazu nur zu jeder Ziffer die Zahl 32 addieren. Beide Pinbelegungen sind in einer Zahl hinterlegt.

Die Befehlsfolgen

  • PINH($35)
  • PINL($32)

der Programmzeilen 23 und 24 werden so codiert zu

  • $30

Dies entspricht der Beschaltung des LED-Segmentes „b“ aus der rechten Anzeige (bitte selbst überprüfen!). Beachtet werden muss, dass der Kathodenanschluss der rechten Anzeigeeinheit für alle Pins größer als 29 Pin 32 und für alle kleiner als 30 Pin 29 ist.

Die Befehlszeilen

  • PINF(35) und PINF(37)

(Programmzeilen 18 und 19) setzen beide Anschlusspins auf „hochohmig“.  Die vorher leuchtende LED erlischt.

 

Im nachfolgend gezeigten Programm ist ein leicht erweitertes Muster umgesetzt worden. Die beiden Bewegungen auf den Anzeigen bewegen sich gegenläufig im Kreis und beschreiben noch einen kleinen Schlenker.

Das folgende kurze Video (10 s) zeigt den erweiterten Verlauf.

 

Das zugehörige - deutlich übersichtlichere - Programm sieht dann wie folgt aus:

Das Programm Segmentmuster_mit_LUT.sp2

Abb. 7 - Erster Teil des Programms, mit dem zwei 7-Segment-LED Anzeigen angesteuert werden. Das gezeigte Muster wird über eine Look Up Tabelle LUT abgerufen.

Im DAT-Block befinden sich die codierten Angaben zum gezeigten Muster. In den Kommentarzeilen wird mit dem großen Buchstaben angegeben, ob das rechte (R) oder linke (L) Anzeigemodul angesprochen wird. Der nachfolgende kleine Buchstabe verweist auf das Segment der Anzeige und die nachfolgende Ziffer 3 oder 1, ob es sich um den Additionsfaktor 32 (3) oder 16 (1) handelt.

 

Die im Hauptprogramm main() aufgerufenen Unterprogramme M1, M2 und M3 zeigt nachfolgende Abbildung.

Abb. 8 - Zweiter Teil des Programms aus Abb. 7. Hier werden die Unterprogrammroutinen gezeigt.

Der in Befehlszeile 34 unde 51 auftauchende Sequenz

  • zaehler // 2 == 0

ist ein modulo Befehl und besagt soviel:

tritt bei Division der Zahl zaehler durch 2 kein Rest auf (dies ist nur bei geraden Zahlen der Fall), so führe die nachfolgenden Blockbefehle aus.

Das auf den beiden 7-Segment-Anzeigen laufende Muster kann hier als Film angesehen werden (10s).

Auf das Programm wird nicht weiter eingegangen. Wer daran interessiert ist, sollte sich mit den hier gegebenen Hinweisen selbst "durchbeissen".

Fehlender Teil des Programms aus Übung 2

Druckversion | Sitemap
© Reinhard Rahner - Gettorf