Hallo Tryan,
unabhängig von der Programmiersprache würde ich zunächst mal in Frage stellen, jeden Punkt einzeln anzusteuern. Dass würde erstens zu viele Befehle benötigen (wie du bei dir siehst) und zweitens bestimmt zu ziemlichem Flimmern führen.
Wenn dein Portd immer eine Spalte freigibt, dann kannst du die 7 Punkte in einem Befehl schalten. Dazu würde ich für jedes Zeichen die fünf Spalten nacheinander durchgehen und die 5 Werte z.B. aus dem EEProm holen, wo du sie vorher für jede Zahl abgespeichert hast.
In Bascom würde das dann etwa so aussehen:
Code:
Dim Offset As Word
Dim Zeichen As String * 1
Dim Spalte As Byte
Dim Werte As Byte
Declare Sub Out_zeichen(byval Z As String)
Do
Zeichen = "1"
Call Out_zeichen(zeichen)
Loop
Sub Out_zeichen(byval Z As String)
Offset = Asc(zeichen) - 49 'sucht Werte für Zeichen "1" ab EEProm Adresse 1
Offset = Offset * 5 'immer 5 Werte pro Zeichen
Spalte = 1
Portb = &B11111111
Do
Portd = 0 'zum Verhindern von Geisterbildern
Incr Offset 'geht die 5 Werte durch
Readeeprom Werte, Offset
Portb = Werte 'lädt die Werte
Portd = Spalte 'Gibt die Spalte frei
Print Bin(werte) 'zum Testen
Shift Spalte , Left 'erhöht auf die nächste Spalte
Loop Until Spalte = 32 'stoppt nach der 5. Spalte
End Sub
$eeprom
Data &B00000000 'Zelle 0 im EEProm nicht benutzen!!!
Data &B11111111 , &B10111101 , &B10000000 , &B10111111 , &B11111111 '1
Data &B10111101 , &B10011110 , &B10101110 , &B10110110 , &B10111001 '2
Gruß
Rolf
Lesezeichen