Hallo Malte0815,
ich hatte nicht gesehen, dass du mich schon einmal direkt gefragt hattest.
If A = 3 Then A = 1
Portd = X(stelle(a))
A ist die Stelle, die aktuell eingeschaltet ist, in Stelle(A) steht der aktuelle Wert, der ausgegeben werden soll.
In X(Stelle(A)) steht der entsprechende Segment-Wert für diese Ziffer.
Wenn du jetzt 3 Stellen hast, dann musst du A bis 4 laufen lassen, bevor es wieder auf ein gesetzt wird. Also
If A = 4 Then A = 1
Das Gradzeichen würde ich am Anfang einmal fest in Stelle(3) schreiben, dann brauchst du sonst nichts mehr zu ändern. Also hinter
For I = 1 To 10
Read X(i)
Next I
einfach noch
Read Stelle(3) oder direkt
Stelle(3) = &H63
Hier mal alles zusammen (mit noch etwas Kosmetik):
Code:$regfile = "M8def.dat" $crystal = 4000000 '--------Segmente--------------- Config Portd = Output Portd = 0 'anfangs alles aus '----------Anode Display--------- Config Portb = Output Digit1 Alias Portb.1 Digit2 Alias Portb.2 Digit3 Alias Portb.3 Portb = 0 'auch hier alles aus '---------AD-Wandler Config------------- Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc '--------Timer Config---------------- Dim Stelle As Byte 'Umschaltung zehner/einer/grad_zeichen Stelle = 1 'start mit Zehner Config Timer0 = Timer , Prescale = 64 On Timer0 Timer_routine 'wird 4.000.000/64/256 ~ 244 mal pro Sekunde aufgerufen Enable Timer0 Enable Interrupts Dim Messung As Word Dim Wert_stelle(3) As Byte Dim I As Byte Dim Temp As Word Dim Segmente(11) As Byte Restore Segment_daten For I = 1 To 10 Read Segmente(i) Next I Wert_stelle(3) = &H63 '°fest auf Stelle 3 Do Messung = Getadc(0) * 64 Messung = Messung / 101 Messung = Messung - 151 Messung = Messung Temp = Messung / 10 'ganzahlige Division, also 47 / 10 = 4 Wert_stelle(1) = Temp + 1 Temp = Messung Mod 10 'Mod ergibt den Rest der Division, also bei 47 / 10 ist Mod = 7 Wert_stelle(2) = Temp + 1 Waitms 100 'hier vielleicht noch eine kleine Pause Loop End Timer_routine: Portb.stelle = 0 'Vorherige Stelle ausschalten Portd = 0 'zusätzlich alle Segmente aus Incr Stelle 'auf nächste Stelle umschalten If Stelle = 4 Then Stelle = 1 'am Ende wieder zurück zur ersten Stelle Portd = Segmente(wert_stelle(stelle)) 'Neue Segmente ausgeben Portb.stelle = 1 'neue Stelle einschalten Return Segment_daten: 'gemeinsame Anode: ' 0 1 2 3 4 5 6 7 8 9 'Data &H3F , &H6 , &H05B , &H04F , &H066 , &H06D , &H07D , &H7 , &H7F , &H6F 'gemeinsame kathode: ' 0 1 2 3 4 5 6 7 8 9 Grad Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00 , &H10 ', &H63







Zitieren

Lesezeichen