Hi,

Ich hab auch mal ne 4stellige led-anzeige gebaut, auch mit multiplex-betrieb.
Hat funktioniert, war aber nich sonderlich hell; kein flimmern

Ich hab das so gelöst:
Die Jede Stelle der Led-Anzeige braucht einen gemeinsamen Minus.
Mit einem CMOS4017 (Dezimal-Zähler) und ein paar Transistoren (open-collector) werden die Stellen angesteuert: (2 Leitungen zum PIC: Count und Reset, Reset kann man aber auch weglassen, wenn der Controller mitzählt, bei welcher Stelle er grad ist).
Damit spart man sich schon mal einige Pins...
Um die Zahlen anzuzeigen, hab ich einen 74LS249 verwendet (BCD zu 7segment - Decoder). Dann musst du nur die "Code-Pins" vom Controller mit dem Decoder verbinden (Programm: Binärcodes in Ausgangsport kopieren).
Vorteil: man spart 3 Pins (7-4=3) und man kann die 7segment-codes im programm weglassen.
(*kleiner* "Nachteil": beim Reset wird in der Anzeige Null dargestellt
Der gemeinsame Punkt kann auch noch an einen Ausgang des PICs gehängt werden.
Das ganze ist sehr sparsam im umgang mit pins:
CMOS-Zähler: 1oder2 Pins
BCD-Code : 4 Pins
(Punkt : 1 Pin)
... also nicht mal einen ganzen Port (die Schwaben sind halt sparsam...)

Was ich noch zusätzlich gemacht habe:
Wenn man schon so einen Zehner-Zähler (4017) hat, kann man doch gleich vier bzw. 10 Tasten auswerten: Ein Anschluss von allen Tasten an einem gemeinsamen Eingang des PICs anschließen, die restlichen an die Zählerausgänge des 4017 (also Taster0 an Ausgang 0, Taster1 an Ausgang1 usw.). Damit kann man also 10 Tasten mit nur 1 zusätzlichem Pin auswerten (Pull-Down-Wiederstand nicht vergessen).

Volià!

Ich hoffe, dass dir das weiterhilft ;-D

BMS