Reicht dir das nicht was ich da jetzt alles hingeschrieben habe?
Dann bastle besser Papierflieger!
Reicht dir das nicht was ich da jetzt alles hingeschrieben habe?
Dann bastle besser Papierflieger!
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
ja aber für was brauch ich denn einen decoder des kann ich doch auch alles mit dem controller machen oder?
Ja schon, aber dann braucht Du ja zwei Ports...
Einen für die 7 Segmente und den anderen für die 4 Dekaden.
Der Treiber decodiert zum einen einen 4-Bit Binär-Wert in die richtige Segmentierung und zum anderen schützt er die Ports des AVR.
Wenn Du ohne Decoder auskommen willst dann muss Du die Segmente selbst decodieren:
Welches Segment soll bei wecler Zahl (wert) leuchten:
Code:Wert a b c d e f g 1 * * 2 * * * * * usw. Das ganze dann noch vereinfachen (in die Disjunktive Normalform bringen) um's kleiner und schneller zu Machen (fall gewünscht/nötig).
Also der Decoder ist meiner Meinung nach besser... und koste auch nur ein paar cent.
Ich schau mal ob ich auf die schnelle eine Softwarelösung zum decodieren der Segmente auf die Reihe bringe.
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
So ich hab Dir jetzt noch einen Segmentdecoder geschrieben,
den musst Du nur noch entsprechend in das andere Listing einbauen.
Erwarte blos nicht, das ich Dir das auch noch mache.
Erst mal wird eine Eingabe erwartet (0-9)
dann wird der Wert in der Funktion decodiert, (könnte noch erweitert werden a,b,c,d,e,f)
und schließlich in den Port geschrieben.
Segment a = auf Bit 0
Segment b = auf Bit 1
Segment c = auf Bit 2
Segment d = auf Bit 3
Segment e = auf Bit 4
Segment f = auf Bit 5
Segment g = auf Bit 6
Bit 7 (nicht genutzt) könnte der Dezimalpunkt (dp) werden.
PS: es könnte sein dass ich bei den segmenten einen Wurm Drin hab (keine hardwaremässige kontrolle) dann bruchst Du ja nur das Bitmuster in der Function korrigieren.Code:' **************************************** ' * * ' * 7-Segmentdecoder by darwin.nuernberg * ' * * ' **************************************** $regfile = "m32def.dat" ' specify the used micro $crystal = 8000000 ' used crystal frequency $baud = 9600 ' use baud rate $hwstack = 64 ' default use 32 for the hardware stack $swstack = 20 ' default use 10 for the SW stack $framesize = 80 ' default use 40 for the frame space Dim Segmente As Byte ' Variable für die Segmente Dim Zahl As Byte Dim Pause As Integer Segmente = 0 ' Muss dann nur noch an den Port gesendet werden Pause = 100 ' Die einzelnen Segmente werden an einem Port angeschlossen: Config Portc = Output ' Port definieren Portc = 0 Declare Function Decode_segmente(byval Wert As Byte) As Byte ' =============================================================== Beginn: Do Input "Wert (0-9) eingeben : " , Zahl ' Zahl abfragen Segmente = Decode_segmente(zahl) ' Segmente decodieren Portc = Segmente ' die decodierten Segmente ausgeben Waitms Pause ' Wartezeit Loop End 'end program ' =============================================================== Function Decode_segmente(byval Wert As Byte) As Byte ' Segmente-Decodieren Select Case Wert Case 0 : Decode_segmente = &B00111111 Case 1 : Decode_segmente = &B00000110 Case 2 : Decode_segmente = &B01011011 Case 3 : Decode_segmente = &B01001111 Case 4 : Decode_segmente = &B01100110 Case 5 : Decode_segmente = &B01101101 Case 6 : Decode_segmente = &B01111101 Case 7 : Decode_segmente = &B00000111 Case 8 : Decode_segmente = &B01111111 Case 9 : Decode_segmente = &B01101111 Case Else : Decode_segmente = 0 End Select End Function ' =============================================================== End
ENDE OVER und OUT
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
Ich hab nochmal rumgekramt, und einen Schaltplan gefunden,
welcher mit einem anderern 7-Segment-Decoder arbeitet und einzelne 7-Segmentanzeigen benutzt,
so könnte man auch größere Anzeigen (Wand-Uhr) realisieren.
Bild hier
der Schaltplan in voller größe: hier klicken
Ich hoffe man kann alles erkennen.
Ich habs allerdings NIE aufgebaut, obwohl das Layout auch schon fertig ist (Zeit/Prio zu gering).
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
Lesezeichen