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.
Ganz am Schluss musst du den "Kommentar" wegmachen und für die Anzeigen passende Werte einfügen.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
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





Zitieren

Lesezeichen