Hallo Martin,
hier mal ein Code von mir, hab ihn nur auf die schnelle zusammengebastelt, aber ich denke, er müsste funktionieren, wenn du ihn auf deine Hardware (mega8 , quarz) abstimmst.
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$framesize = 80
$hwstack = 80
$swstack = 80
Ddra.0 = 0
Porta.0 = 0
Ddrc = 255
Ddrd.0 = 1
Ddrd.1 = 1
Trans_left Alias Portd.0
Trans_right Alias Portd.1
Trans_left = 1
Trans_right = 0
Config Adc = Single , Prescaler = Auto
Start Adc
Config Timer2 = Timer , Prescale = 256
Timer2 = 131
On Timer2 Multiplex
Enable Timer2
Dim Poti_wert As Word
Dim Anzeige As Single
Dim String_1 As String * 3
Dim Anzeige_left_string As String * 2
Dim Anzeige_right_string As String * 2
Dim Anzeige_left As Byte
Dim Anzeige_right As Byte
Dim Anzeige_numb As Bit
Enable Interrupts
Do
Poti_wert = Getadc(0)
Anzeige = Poti_wert / 1024
Anzeige = Anzeige * 99
String_1 = Str(anzeige)
Anzeige_left_string = Left(string_1 , 1)
Anzeige_right_string = Right(string_1 , 1)
Anzeige_left = Val(anzeige_left_string)
Anzeige_right = Val(anzeige_right_string)
Anzeige_left = Lookup(anzeige_left , Seven_segment_tab)
Anzeige_right = Lookup(anzeige_right , Seven_segment_tab)
If Anzeige_numb = 1 Then
Portc = Anzeige_left
Elseif Anzeige_numb = 0 Then
Portc = Anzeige_right
End If
Loop
End
Multiplex:
Timer2 = 131
Toggle Trans_left
Toggle Trans_right
Toggle Anzeige_numb
Return
Seven_segment_tab:
'Data &B00000001 , &B00000110 , &B00011000 , &B00110000 , &B01100000 , &B01110111 , &B01111111 , &B10000011 , &B10111111 , &B11111111
Ganz am Schluss musst du den "Kommentar" wegmachen und für die Anzeigen passende Werte einfügen.
Einen Schaltplan kann / will ich dir jetzt nicht geben, aber im Prinzip ist es ganz einfach:
Du schließt zwei 7 Segmentanzeigen parrallel an, nur die gemeinsame Anode / Kathode nicht. Diese hängst du jeweils an einen Transistor (also trans_left (Portd.0) und trans_right (Portd.1)). Die restlichten parallelen Anschlüsse kommen alle an Portc. Das kannst du natürlich auf jeden beliebigen Port umbauen.
Der Vorteil bei dem Parralel schalten ist, dass du dir ein Paar pins sparst, indem die beiden Anzeigen gemultiplext werden.
Mit diesen Timerwerten läuft die Anzeige auf 500Hz. Ich denke das reicht, falls es aber doch flimmern sollte, musst du die Frequenz erhöhen.
Wenn du noch Fragen hast, melde dich einfach.
Gruß
Chris
Lesezeichen