-
Frage wegen 7 Segment
Hallo,
ich habe eine 7 segment anzeige mit 4 segmenten aus einem receiver ausgebaut und würde die gerne mal ansteuern bloß wie mache ich dass die hat so viele kennzeichnungen dass ichs gar net verstehe wo ich was am controller anschließen soll. vielleicht weiß ja einer von euch weiter hier die kennzeichnungen beziehungsweiße die anschlüsse welche auf der platine stehen.
D1, D2, D3, D4
A, B, C, D, E, F, G
gnd
5V
-
D1-D4 Dürfte die Ansteuerung für den interen Multiplexer sein
zb. 1000 erste Anzeige wird angesteuert 0100 zweite usw.
A-G sind sie einzelnen Segment.
Bild hier
5V an 5V
GND an GND
MfG Matthias
-
...an die Vorwiderstände denken !
-
muss ich ja dann an d1-d4 einen transistor davor hängen und an die basis einen widerstand von 10k is das so richtig?
-
Da dein Display sowohl GND als auch +5V hat könnte es auch sein das die Treiber schon intern verbaut sind.(am besten testen)
MfG Matthias
-
Probiers doch mal mit einem 7-Segment decoder, welcher gleich die einzelnen Segmente treiben kann.
z.B. den 4055 (MOS-IC)
Vielleicht hilft Dir auch der Source-Code aus dem Beitrag 148650 (Multiplex-Display)
Hier noch eine Beispiel - Schaltbild: Bild 5359
-
und wie teste ich dass? was muss ich anschließen?
-
Ist doch alles beschrieben...
7-Segment-Anzeige mit gemeinsamere Katode (4 Dekaden)
K sind die Katoden der 4-Katoden (-)
A sind die Anonden der 7-Segmente (+)
von + geht es über einen Vorwiderstand zum einzelnen Segment und zum Segment-Decoder (open Collector) über die LED (des einzelnen Segmentes) und dann über den Transistor der entspr. Dekade (1er, 10er, 100er oder 1000er) nach Masse.
-
ja toll aber ich weiß ja quasi nix was ich im bascom jetzt schreiben soll. ich bin wieder voll bei 0 sprich blutiger anfänger.
-
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