So hier mal der Code Quick und Dirty. (BASCOM)

Soll nur als Demo gelten,
Verbesserungen sind unabdingbar, soll nur die Funktion des multiplexens verdeutlichen.

Natürlich wäre es viel eleganter wenn zunächst eine Segment decodierung erfolgen würden, welcher man einen Zahlenwert in den erforderlichen Binärcode fertig umsetzt.

Dies wäre ein Paradebeispiel für eine Funktion (man übergibt was und bekommt dafür was abderes zurück.



Code:
' Multiplex Anzeige
'
' 4 Stellige 7-Segment Multiplexanzeige ansteuern
' Simple Version
'
' Segmente werden übder die Aliase gesetzt (bitte anpassen)
' Pulsdauer über die Konstante Pulsdauer veränderbar


Segment_a Alias Portb.0
Segment_b Alias Portb.1
Segment_c Alias Portb.2
Segment_d Alias Portb.3
Segment_e Alias Portb.4
Segment_f Alias Portb.5
Segment_g Alias Portb.6
Segment_dp Alias Portb.7

Const Pulsdauer = 100000

Dim X As Byte



Do
   'Darstellung 0
   Set Segment_a
   Set Segment_b
   Set Segment_c
   Set Segment_d
   Set Segment_e
   Set Segment_f
   Reset Segment_g

   Pulseout Portb , 0 , Pulsdauer

   'Darstellung 1
   Reset Segment_a
   Set Segment_b
   Set Segment_c
   Reset Segment_d
   Reset Segment_e
   Reset Segment_f
   Reset Segment_g

   Pulseout Portb , 0 , Pulsdauer


   'Darstellung 2
   Set Segment_a
   Set Segment_b
   Reset Segment_c
   Set Segment_d
   Set Segment_e
   Reset Segment_f
   Set Segment_g

   Pulseout Portb , 0 , Pulsdauer



   'Darstellung 3
   Set Segment_a
   Set Segment_b
   Set Segment_c
   Set Segment_d
   Reset Segment_e
   Reset Segment_f
   Set Segment_g

   Pulseout Portb , 0 , Pulsdauer

Loop
End
Du hast nur ein Problem nicht bedacht.
Verwende nicht die RXD und TXD Leitungen für die Dekaden,
oder wie willst du was darstellen?
Irgendwie müssen doch noch Werte übergeben werden (RS232).

Oder soll das ein Zähler werden?