Hallo,
ich möchte 4 7-Segmentanzeigen multiplexen. Das Programm läuft prinziepjell - aber da ist ein Problem:
wenn ich 123 auf der Anzeige haben möchte steht dort 1233 und nach einigen Sekunden warten steht dort plötzlich 3233
wenn ich 1234 auf der Anzeige haben möchte steht dort 2100 und nach einigen Sekunden warten steht dort plötzlich 0100
Kann mir da jemand helfen?
Code:'7Segmentanzeige mit 4 Anzeigen $regfile = "ATtiny2313.dat" 'ATTiny2313 $crystal = 20000000 '20MHz Quarz Ddrb = &B11111111 'PortB = Ausgang (PB0=A usw.) Ddrd = &B1111111 'PortD = Ausgang (PD3=Anzeige1, PD4=A2, PD5=A3, PD6=A4) Dim Y As String * 5 At &H70 Dim Z(5) As Byte At &H70 Overlay Dim Led As Word Dim X(5) As Byte Dim Test As Integer Dim Test2 As Integer Dim Zaehler As Byte 'für LED Anzeige wählen... Enable Interrupts Do 'LED:::EZHT Led = 123 'LED - Anzeigewert For Test2 = 0 To 6 'Wert sichern ..... X(test2) = Z(test2) Next Test2 For Zaehler = 3 To 6 'Zaehler = PortD 3-6 Anzeige wählen) Test = X(zaehler) Select Case Test 'Led-Segmente als Zahlen definieren: Case 48 : Portb = 63 'NULL Case 49 : Portb = 6 'EINS Case 50 : Portb = 91 'ZWEI Case 51 : Portb = 79 'DREI Case 52 : Portb = 102 'VIER Case 53 : Portb = 109 'FÜNF Case 54 : Portb = 125 'SECHS Case 55 : Portb = 7 'SIEBEN Case 56 : Portb = 127 'ACHT Case 57 : Portb = 111 'NEUN Case 58 : Portb = 128 'DP -> geht das als PORT zu setzen??? Case Else : Portb = 0 End Select 'Anzeige auswählen??? Portd.zaehler = 1 waitus 100 'Zeit für jede Anzeige 'zum testen Waitms 500 'waitus 100 'Zeit für jede Anzeige Portd.zaehler = 0 Next Zaehler Y = Str(led) If Z(4) = 0 Then 'Führende Nullen eliminieren Do Z(5) = Z(4) Z(4) = Z(3) Z(3) = Z(2) Z(2) = Z(1) Z(1) = 0 Loop Until Z(5) > 0 End If Loop







Zitieren

Lesezeichen