Hallo Xeus,

Ich denke der Code hilft dir. Ist allerdings auf die max. Anzahl von 8 Segmenten zugeschnitten, die allerdings gruppenweise zu je 4 gesteuert werden. Der wichtigste Teil ist die sub Send_bytes...Daraus kannst Du erkennen, wie der angesteuert wird. Ansonsten müsste es einfach sein - ganz gut kommentiert, hoffe ich - sich das rauszusuchen, was man braucht.

Man benötigt das Datenblatt, um die vielen Befehle zu erfahren. Man kann damit sogar quasi dimmen: Gleitend von Dunkel nach Hell die Helligkeit hochfahren. Find ich ganz lustig. Daran ist irgendein Widerstand beteiligt. Welchen, weiß ich momentan nicht mehr. Man kann aber erst einmal den vorgeschlagenen Wert nehmen. Ansonsten liebe ich dieses Teil. Einfacher kann man hardwaremäßig eine 8-stellige Anzeige kaum aufbauen, außer vielleicht mit dem saa 1064, aber der kann nur 4.

Code:
$regfile = "m32def.dat"   

$baud = 19200                 
$crystal = 16000000

Const Displays = 4
Const Dezpunkt = 3

Declare Sub Send_bytes(byval Bytes As Word)
Declare Sub Alle_aus
Declare Sub Display_zeichen_bilden
Declare Sub Ausgabe

Dim I As Byte , Z As Byte , Wert As Word
Dim Temp As Byte
Dim Display_zeichen(displays)as Byte
Dim Grad As Single
Dim Temp_anzeige As String * Displays1
Dim Zähler As Byte

'***** für MAX-Init-Befehle
Dim A(5) As Word

Config Portc = Output

Clock_max Alias Portc.5       ' clock
Data_out_max Alias Portc.7    ' din
Load_max Alias Portc.6        ' load


'***** es werden immer 2 Bytes auf einmal abgeschickt
'***** deshalb Dimensionierung mit word

'*** erst alle aus
Alle_aus

'**** wichtig, falls vorher im Shutdown-Modus!!!
'**** geht beim Ausschalten da manchmal rein
'**** Befehle werden ausgeführt, aber man sieht nichts!!!!
'*** also zuerst in den Normalmodus

A(1) = &H0C01                 '**** Normalmodus
A(2) = &H0B04                 '**** Anzahl 4 Digits
A(3) = &H090F                 '**** Dekodiermodus für die ersten 4
A(4) = &H0A0F                 '**** Helligkeit, volle Kanne bei ISEG=10K
A(5) = &H0F00                 '***** in den Displaymode

'**** Init Bargraf
For I = 1 To 5
    Send_bytes A(i)
Next


'**** Versuch mit Grad-Anzeige
Grad = -5.4756
Temp_anzeige = Fusing(grad , "##.#" )       '**** um aufzurunden!

'**** Decodieren nicht nötig
Display_zeichen_bilden

Do
    Wait 2
    Alle_aus

    '***** Testweise alle Zeichen zeigen
    For Z = 1 To Displays
          For I = 0 To 14
                'Wert = Z * 256
                'Wert = Wert + I
                Wert = Makeint(i , Z)
                Send_bytes Wert
                Waitms 500
          Next
    Next

    Alle_aus
    '**** Gradzahl ausgeben
    Ausgabe
Loop

End

Sub Send_bytes(byval Bytes As Word)
   Reset Load_max
   '**** masb first, clock goes high
   Shiftout Data_out_max , Clock_max , Bytes , 1 , 16 , 5
   Set Load_max
   'Waitms 200
End Sub

Sub Alle_aus
    For Z = 1 To 8
        '**** 2. Byte immer 0
        'Wert = Z * 256
        'Wert = Wert + 15
        Wert = Makeint(15 , Z)       '**** geht schneller!!!
        Send_bytes Wert
        'Waitms 500
    Next
End Sub

Sub Display_zeichen_bilden
Local Temp_zeichen As String * 1
      '**** erst Array löschen
      For Z = 1 To Displays
            Display_zeichen(z) = ""
      Next

       '***** rückwärts den TempWert durchgehen
       Zähler = Displays
       For Z = Len(temp_anzeige) To 1 Step -1
            Temp_zeichen = Mid(temp_anzeige , Z , 1)
            '*** nur wenn kein Dez.Punkt, übernehmen
            If Temp_zeichen <> "." Then
                  Display_zeichen(zähler) = Temp_zeichen
                  Decr Zähler
            End If
       Next
       '**** fehlende Zeichen sind nun leere Strings!!!
End Sub

Sub Ausgabe
Local Zeichen As Byte
For Z = 1 To Displays

      Zeichen = Display_zeichen(z)
      If Zeichen = "" Then
            '**** Blank
            Temp = 15
      Elseif Zeichen = "-" Then
            Temp = 10
      Else
            Temp = Val(zeichen)
      End If

      '**** Dez.Punkt
      If Z = Dezpunkt Then
            Temp = Temp Or 128
      End If

      'Wert = Z * 256
      'Wert = Wert + Temp
      Wert = Makeint(temp , Z)       '**** geht wesentlich schneller!!!
      Send_bytes Wert
      Waitms 200
Next
End Sub
Wolfgang