Tja ein bisschen Kreativität ist von Dir auch gefordert.
Dürfte aber nich all zu schwer sein, da ja auch Beispiele (Listungs) dabei sind.
(Abweichend zum vorher genannten Decoder Baustein habe ich hier einen 74LS48 verwendet (glaube den gibts aber nicht mehr) Du kannst auch den anderen verwenden dann halt ein bisschen das Schaltbild verändern Du musst halt im Ddatenblatt des entspr. Bauteils nachsehen)
Aber speziell für Dich nochmal das Prinzip.
Die einzelnen Dekaden werden eine nach der andere geschaltet (im Beispiel bei gem. Katode auf Masse (GND).
Somit können nur die Segmente dieser dekade leuchten, wenn sie angesprochen werden.
dann schaltet man um auf die nächste decade und steuert die segmente dementsprechend an.
Wenn das ganze schnell genug abläuft, bekommt das Auge (Hirn) das garnicht mehr mit und glaubt, dass alle segmente gleichzeitig leuchten.
Und hier noch mal ein Ersatzschaltbild:
https://www.roboternetz.de/phpBB2/al...hp?pic_id=1414
Bild hier
Code:' 4-Digit Multipexed Display an Port C ' PortC.4 = 1er ' PortC.5 = 10er ' PortC.6 = 100er ' PortC.7 = 1000er ' Portc.0 bis Portc.3 = BCD Code der Zahl &H00 bis &HFF ' Hierzu einen 7-Segmentdecoder (74LS48) zwischen PortC(0..3) und den Segmenten schalten ' Nicht vergessen die Treibersegmentausgänge mit 470R PullUp zu schalten. ' Der Baustein 74LS48 kann nur Zahlen (0-9) darstellen keine Hex Codes (ABCDEF) ' Falsche Werte (>9) (>&H09) (>&B00001001) führen zu Anzeigefehlern. $regfile = "m32def.dat" ' AT Mega 32 $crystal = 16000000 ' 16 MHz $baud = 19200 ' Serielle Schittstelle einrichten Anzeigeport Alias Portc ' Hier einstellen an welchem Port ' das Display angeshclossen wird Config Anzeigeport = Output ' Direction einstellen Declare Function Anzeige(byval B_speed As Byte) As Integer Dim X As Integer ' Variable für For Scheife Dim Y As Integer ' Variable für For Scheife Dim B_ar_zahl(4) As Byte Portc = 0 ' Port C initialisieren ' Die Anzeige soll "4321" darstellen B_ar_zahl(1) = 1 ' Hier die 1er Zahlen der Anzeige B_ar_zahl(2) = 2 ' Hier die 10er Zahlen der Anzeige B_ar_zahl(3) = 3 ' Hier die 100er Zahlen der Anzeige B_ar_zahl(4) = 4 ' Hier die 1000er Zahlen der Anzeige Do For Y = 0 To 9 X = Anzeige(5) Next Y Loop End 'end program ' ****************************************************************************** Function Anzeige(byval B_speed As Byte) As Integer Dim B_x As Byte ' Schleifen Variable Dim B_decade As Byte ' Aktivierung der Decade Dim B_select As Byte For B_x = 4 To 7 ' Schleife für Decaden ' Bit 4 bis 7 sind Decaden B_decade = 2 ^ B_x ' Bitmuster für Decade berechnen B_select = B_x - 3 ' Feld des Array's bestimmen Anzeigeport = B_decade ' Nur Decade aktivieren Anzeigeport = Anzeigeport Or B_ar_zahl(b_select) ' Decade + Anzeigewert aktivieren ' Hiermit wird auch das Anzeigetiming ' realisiert Waitms B_speed ' Anzeigedauer der einzelnen Decade Next B_x Anzeige = 0 ' Rükgabewert 0 = ok End Function ' ****************************************************************************** End 'end program
Lesezeichen