Ich hoffe das Dir das so passt.
Ein bisschen darfst Du auch noch machen
Code:' Bascom ' 7-Segment Multiplexer ' by darwin.nuernberg (roboternetz.de) ' Nicht vergessen entweder die Compiler Direktiven oder den Chip und Oszillatorfequenz einstellen. Const Dekaden = 4 ' Anzahl der Anzeigen (dekaden) Const Pulsdauer = 10000 ' Dauer eines Impulses Declare Function Segmentdecoder(byval C As String) As Byte Declare Sub Selector(byval Wert As Integer) Dim Segment(dekaden) As Byte ' Array für die Fertig berecheten Segmente Dim Demo As Byte ' Hauptprogramm ' ----------------------------------------------------------------------------- Call Selector(1234) ' Berechnet die Segmente der einzelnen Dekaden ' und legt diese im Array Segment() ab. ' Die folgenden Zeilen Zeigen Dir was rauskommt und können gelöscht werden. For Demo = 1 To Dekaden Print Bin(segment(demo)) Next Demo ' Ein bisschen darfst Du auch naoch was tun... ' Jetzt muß noch die Ausgabe erfolgen. ' Frage das Array ab, weise dem Port den Wert Zu ' z.B. Portb = segment(1) ' pulseout portd, 1 pulsdauer ' Portb = segment(2) ' pulseout portd, 2 pulsdauer ' usw. End 'end program ' ----------------------------------------------------------------------------- ' ----------------------------------------------------------------------------- Sub Selector(byval Wert As Integer) Dim S As String * Dekaden ' Stringvariable Länge = Anzeige Dim L As Byte ' Variable für Länge des Strings Dim X As Byte ' Zählervariable Dim Pos As Byte ' Variable für MID Funktion Dim Z As String * 1 Dim Segcode As Byte S = Str(wert) ' Wandle Wert in String L = Len(s) ' ermittle Länge des Strings If L > Dekaden Then L = Dekaden ' Verhindern dass mehr Anzeigen berechent werden ' als definiert und vorhanden sind. For X = 1 To L Pos = L - X Pos = Pos + 1 ' Beginne mit den Einer Stellen (rechts) Z = Mid(s , Pos , 1) ' Picke eine einzelnes Zeichen heraus Segcode = Segmentdecoder(z) ' Ermittle den Portcode für die Segmente Segment(x) = Segmentdecoder(z) Next X End Sub ' ----------------------------------------------------------------------------- Function Segmentdecoder(byval C As String) As Byte Select Case C Case "0" : Segmentdecoder = &B00111111 ' Bit 0 = Segment A Case "1" : Segmentdecoder = &B00000110 ' Bit 1 = Segment B Case "2" : Segmentdecoder = &B01011011 ' Bit 2 = Segment C Case "3" : Segmentdecoder = &B01001111 ' Bit 3 = Segment D Case "4" : Segmentdecoder = &B01100110 ' Bit 4 = Segment E Case "5" : Segmentdecoder = &B01101101 ' Bit 5 = Segment F Case "6" : Segmentdecoder = &B01111101 ' Bit 6 = Segment G Case "7" : Segmentdecoder = &B00000111 ' Bit 7 = Segment dp Case "8" : Segmentdecoder = &B01111111 Case "9" : Segmentdecoder = &B01101111 Case "." : Segmentdecoder = &B10000000 Case Else : Segmentdecoder = &B000000000 ' unerwartes Zeichen keine Ausgabe End Select 'Bit Segmente ' || G | F | E | D | C | B | A | ' --||---+---+---+---+---+---+---| ' 0 || 0 | 1 | 1 | 1 | 1 | 1 | 1 | ' 1 || 0 | 0 | 0 | 0 | 1 | 1 | 0 | ' 2 || 1 | 0 | 1 | 1 | 0 | 1 | 1 | ' 3 || 1 | 0 | 0 | 1 | 1 | 1 | 1 | ' 4 || 1 | 1 | 0 | 0 | 1 | 1 | 0 | ' 5 || 1 | 1 | 0 | 1 | 1 | 0 | 1 | ' 6 || 1 | 1 | 1 | 1 | 1 | 0 | 1 | ' 7 || 0 | 0 | 0 | 0 | 1 | 1 | 1 | ' 8 || 0 | 1 | 1 | 1 | 1 | 1 | 1 | ' 9 || 1 | 1 | 0 | 1 | 1 | 1 | 1 | End Function ' ----------------------------------------------------------------------------- End







Zitieren

Lesezeichen