Charlieplexing - Übersicht

Eine 7-Segment-LED-Anzeige hat neun Anschlüsse (die Segmente a..g, den Dezimalpunkt und den gemeinsamen Anschluß). Kommen mehrere dieser Anzeigen zum Einsatz, so steigt die Anzahl der nötigen Anschlüsse um ein vielfaches (für jede Anzeige sind das 9 Anschlüsse).
Meistens kommt dann das Multiplexverfahren zum Einsatz. Dort werden die LED-Segmente parallel geschaltet, nur der gemeinsame Anschluß wird für jede Anzeige einzeln beschaltet. Somit werden für 9 Anzeigen nur 17 Anschlüsse benötigt.
Charlieplexing wurde von der Firma MAXIM entwickelt. Dort werden die Anschlüsse der LED-Anzeigen nach einem bestimmten Muster zusammengeschaltet. Die Bedeutung eines Anschlusses ändert sich je nachdem welche Anzeige aktiv ist. Dazu muß der LED-Treiber aber auch den Zustand „Z“ (Tristate hochohmig) kennen. Der PIC18 kennt diesen Zustand nicht, deshalb wird in diesem Fall der entsprechende PIC-Port zu einem Eingang umprogrammiert.

Beschaltung der LED-Anzeigen im Vergleich
Charlieplexing Anschluß Multiplexing
neun acht sieben sechs fü vier drei zwei eins   neun acht sieben sechs fü vier drei zwei eins
dp * dp dp dp dp dp dp dp 1 a a a a a a a a a
g dp * g g g g g g 2 b b b b b b b b b
f g g * f f f f f 3 c c c c c c c c c
e f f f * e e e e 4 d d d d d d d d d
d e e e e * d d d 5 e e e e e e e e e
c d d d d d * c c 6 f f f f f f f f f
b c c c c c c * b 7 g g g g g g g g g
a b b b b b b b * 8 dp dp dp dp dp dp dp dp dp
* a a a a a a a a 9                 *
                  10               *  
                  11             *    
                  12           *      
                  13         *        
                  14       *          
                  15     *            
                  16   *              
                  17 *                
* je nach LED-Typ, gemeinsame Anode oder gemeinsame Kathode

Ansteuerung, LED2 mit gemeinsamer Kathode zeigt die Ziffer 3
drei Pegel Anschluß Portrichtung
dpZ1Eingang
gH2Ausgang
fZ3Eingang
eZ4Eingang
dH5Ausgang
cH6Ausgang
*L7Ausgang
bH8Ausgang
aH9Ausgang

Schaltplan LED-Modul

Schaltplan LED-Modul
Stückliste
(180 KByte) Download vom Schaltplan und Programm (asm + hex)
LED1..LED9 7-Segment-LED-Anzeige, wenn möglich vom Typ „Low Current”
wahlweise mit gemeinsamer Anode oder Kathode
z.B. SC52-11LSRWA (gemeinsame Kathode) oder SA52-11LSRWA (gemeinsame Anode)
R1..R9 Widerstand 680 Ω
K1 Anschluß zum Controllermodul

PICmicro und Charlieplexing

Für den PICmicro von Microchip habe ich eine kleine Sammlung von nützlichen Routinen erstellt. Diese können sehr einfach an die verschiedenen PIC18F-Typen angepasst werden.
Diese Sammlung beinhaltet 2 Dateien:
Charlieplexing_18F.inc = Definition der verschiedenen Konstanten
Charlieplexing_18F.asm = Verschiedene Routinen zum Ansteuern der LEDs
Zusätzlich ist ein Anwendungsbeispiel vorhanden.
Diese Programmsammlung wurde mit der Entwicklungsumgebung MPLAB von Microchip erstellt.

Anpassung in der Datei Charlieplexing_18F.inc

Je nach PIC-Typ bzw. PIC-Beschaltung müssen einige Änderungen durchgeführt werden.

;
; Konstante
;
LED_Count                equ  9    ; Anzahl der LED-Anzeigen
LED_Type                 equ  1    ; Art der LED
                                   ; (0 = gem. Anode, 1 = gem. Kathode)
;
; Portbelegung
;
#define LED_Pin1_TRIS    TRISB, 0  ; Leitung 1 zum LED-Modul
#define LED_Pin1         LATB, 0
#define LED_Pin2_TRIS    TRISB, 1  ; Leitung 2 zum LED-Modul
#define LED_Pin2         LATB, 1
#define LED_Pin3_TRIS    TRISB, 2  ; Leitung 3 zum LED-Modul
#define LED_Pin3         LATB, 2
#define LED_Pin4_TRIS    TRISB, 3  ; Leitung 4 zum LED-Modul
#define LED_Pin4         LATB, 3
#define LED_Pin5_TRIS    TRISB, 4  ; Leitung 5 zum LED-Modul
#define LED_Pin5         LATB, 4
#define LED_Pin6_TRIS    TRISB, 5  ; Leitung 6 zum LED-Modul
#define LED_Pin6         LATB, 5
#define LED_Pin7_TRIS    TRISB, 6  ; Leitung 7 zum LED-Modul
#define LED_Pin7         LATB, 6
#define LED_Pin8_TRIS    TRISB, 7  ; Leitung 8 zum LED-Modul
#define LED_Pin8         LATB, 7
#define LED_Pin9_TRIS    TRISA, 7  ; Leitung 9 zum LED-Modul
#define LED_Pin9         LATA, 7
;
; Variablen
;
cblock
  LED_Flags, LED_Aktuell, LED_Buffer:LED_Count
endc
      

Beschreibung der Routinen in der Charliepexing_18F.asm

Routine Beschreibung
LED_Init Initialisierung der PIC-Ports
LED_Clear Der LED-Buffer wird mit 0x00 gefüllt.
LED_GetHexLEDCode Der L-Teil vom W-Register wird in den LED-Code übersetzt.
LED_Refresh Die LED-Anzeige wird aktualisiert. Diese Routine muß mind. alle 2ms aufgerufen werden. Sonst flackern die LEDs.

Demo

Demoschaltung LED9..LED3: Zeigen eine Animation.
LED2..LED1: 2-stelliger Zähler.
Der Zählerstand wird in Hex angezeigt.
J1: offen = LED mit gemeinsamer Kathode; zu = LED mit gemeinsamer Anode

animation

Stückliste
(180 KByte) Download vom Schaltplan und Programm (asm + hex)
IC1 Einen der folgenden PIC-Typen: 18F1220, 18F1320
R1 Widerstand 10 KΩ
C1 Kondensator 100 nF
J1 Jumper 2-polig; Einstellung der LED-Typen
offen = gemeinsame Kathode; zu = gemeinsame Anode
K1 Anschluß für die Stromversorgung
K2 Anschluß für das LED-Modul

© 2010 by Norbert Hagemann Letzte Aktualisierung: 31.Mai 2010