| Autor |
|
Siebensegmentanzeigen ansteuern |
|
|
|
|
BID = 443714
pg-zonk Gelegenheitsposter
 
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 66 Wohnort: CH
|
|
Hallo zusammen
Momentan setzte ich mich mit einer Schaltung auseinander die die Ergebnisse über 7 Siebensegmentanzeigen ausgeben sollte. Ich würde für das ganze gerne den ATmega8 verwenden. Einen Port brauche ich als Eingang. Somit bleibt mir nur noch höchstens zwei Ports als Ausgänge wenn ich den analog Port als Eingang benutze. Mit zwei Ports kann ich aber gerade mal 4 Siebensegmentanzeigen betreiben.
Gibt es nun auch andere Möglichkeiten bei denen mir 2 Ports oder vieleicht sogar ein Port reicht? zB wenn ich das ganze statt mit BCD Code seriell ausgebe?
Für eure Antworten danke ich schon mal im Voraus.
_________________
Gruss
pg-zonk
PS: Seid lieb zueinander! |
|
BID = 443720
Her Masters Voice Inventar
     
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5312 Wohnort: irgendwo südlich von Berlin
|
|
hm...
ein Port hat 8 bit.
7 Segmente hat eine Anzeige, ggf 8 wenn man den DP dazuzählt. Wäre ein Port.
Der andere Port könnte nun direkt über seine 8 Pins 8 solcher Anzeigen ansteuern. Mit 8 bit kann man binär 0 bis 255 darstellen. Wenn man den Port also über einen Decoder nutzt liessen sich somit auch 255 7-Segmenter ansteuern. Reicht das?
Nur das mit den 4 Stück konnte ich nicht nachvollziehen...
_________________
Tschüüüüüüüs
Her Masters Voice
aka
Frank
***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
*********************************** |
|
BID = 443724
Nukeman Schriftsteller
    
Beiträge: 754 Wohnort: bei Kleve
|
HMV war schneller
Sind per Dekoder sogar 25 6 Stück möglich.
Wenn man noch mehr braucht, geht das wohl am einfachsten
über Schieberegister. Dann bestimmen fast nur noch
finanzielle Mittel und elektischer Energievorhalt die Anzahl
Bei der Schieberegister-Lösung entfällt dann der Zeit-Multiplex
in der Software, aber man braucht halt weitere externe ICs.
Ich denke, mit 2 Port -> 4 Digits ist gemeint, so eine
"intelligente" Anzeige anzusteuern. Also 4 x 4 Bit für
die 4 Stellen.
Gruß,
Stefan
|
BID = 443737
pg-zonk Gelegenheitsposter
 
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 66 Wohnort: CH
|
Zuerst einmal Danke für eure Antworten
Ich hatte zuerst im Sinn einen normalen BCD Dekoder zu benutzen zB den 74LS247. Weil ich eure Möglichkeit einfach nicht kannte  (Bin noch ein neuling in Sachen µC)
Ganz verstanden habe ich die Sache noch nicht. Habt ihr zufällig irgend einen Link mit einem Beispiel?
_________________
Gruss
pg-zonk
PS: Seid lieb zueinander!
|
BID = 443768
PhyMaLehrer Schriftsteller
    
Beiträge: 911 Wohnort: Leipzig
|
|
BID = 443849
clembra Inventar
     
Beiträge: 5402 Wohnort: Weeze / Niederrhein
|
Ich würde ehr von Nukeman vorgeschlagene Methode mit Schieberegistern wählen. Dann braucht man sich wenigstens nicht mit genauen Zeiten auseinandersetzen. Bei Multiplexbetrieb, wie im von PhyMaLehrer geposteten Link, müssen die Segmente so beschaltet werden, dass sie im Falle eines Softwarefehlers und voller Einschaltdauer nicht lange halten würden.
Wenn es normale 7Segmentanzeigen sind sollte man sich ein Schieberegister-IC suchen, welches die gesamte Anzeige (alle 7 Segmente + Dezimalpunkt) gleichzeitig dauerhaft treiben kann, so erspart man sich auch weitere Transistoren oder Treiberbausteine.
BCD-Dekodierer für 7Seg. bringen IMHO nur wenig bei mehrstelligen Anzeigen, da man aufgrund des Zehnersystems eh umrechnen muss; da kann man es auch gleich "richtig" machen.
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 443895
pg-zonk Gelegenheitsposter
 
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 66 Wohnort: CH
|
Zuerst Mal danke für den Link und eure Tipps.
Es tut mir leid dass ich vergessen habe zu schreiben dass diese Siebensegmentanzeigen unabhängig von einander betrieben werden.  ich will also keine siebenstellige Zahl ausgeben, sondern sieben verschiedene Zahlen welche nichts miteinander zu tun haben. Deshalb auch das mit den BCD Dekodern. Aber Mittlerweile gefällt mir die Methode mit den Schieberegistern immer besser. Ich werde mich mal reingoogeln. Schieberegister kenne ich zwar aber ich habe noch nie etwas damit gemacht. Wir werden sehen...
_________________
Gruss
pg-zonk
PS: Seid lieb zueinander!
|
BID = 443932
Nukeman Schriftsteller
    
Beiträge: 754 Wohnort: bei Kleve
|
Hallo pg-zonk,
die Lösung mit Schieberegistern braucht auch nur wenige Portpins
des Micro-Controllers. Man braucht nur 3 Pins für Daten, Clock
und nen Strobe. Als IC kann man den 4094 verwenden. Der bietet
allerdings nur wenig Treiberleistung. ( Hab damit aber trotzdem
schonmal direkt 7-Seg angetrieben ). Vielleicht ULN2001
an die Ausgänge hängen.
Verdrahtung wäre dann in etwa so:
erstes IC:
µC-Data an Data(2) ( ach nee..  )
µC-Clock an Clock(3)
µC-Strobe an Strobe(1)
Q1..Q7 -> Ausgänge für 7Seg
weitere ICs:
Data(2) an Qs(9) des vorherigen ICs
Clock wie 1.IC direkt vom Microcontroller
Strobe wie 1.IC direkt vom Microcontroller
Q1..Q7 wieder an die Segmente.
Du brauchst dann also für 7 Digits auch 7 von diesen
Bausteinen.
Ob die einzelnen Ziffern was miteinander zu tun haben
oder nicht, ist für die HW-Beschaltung ja eigentlich egal. Das
muss die Software im Micro-Controller auseinanderklamüsern.
Hauptsache, man kann jede Ziffer gezielt ansteuern.
Allerdings müssen bei jedem Update alle Ziffern kurz neu
geschrieben werden.
Der Prozessor clockt dann 7x8 Bit in die kaskadierten Schieberegister
und gibt danach einen kurzen Strobe, damit die neuen Daten in die
Ausgänge übernommen werden.
Gruß,
Stefan
|
BID = 443944
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Das schöne ist, dass der CD4094 eben ein Ausgangsspeicher besitzt, dass bedeutet konkret, dass von außen nicht sichtbar ist, dass grade neue Bits eingetaktet werden. Ergo gibt es kein Flimmern oder "transparentes Durschrauschen" der einzelnen Bits.
Daher benutze ich mittlerweile den CD4094 nur noch als Ausgangserweiterung.
Sollte man allerdings mit 16MHz arbeiten und demnach sehr schnell (einige MHz) die Daten eintakten, dann sollte unbedingt das HC(T)MOS-Pendant gewählt werden!
Treiben der LEDn geht schon, ich habe das schon öfter gemacht, aber dann die LEDn mit entsprechend größerem Vorwiderstand dimensioniert, damit die Belastung nicht allzuhoch wird. (Ansteuerung zweier 7-Segmentanzeigen)
Sie funktioniert seit ca. einem Monat perfekt.
Sauberer ist es dennoch, Treiber zu verwenden. Nur ist da, selbst in SMD, die Platine sehr schnell voll oder man benutzt integrierte Treiber (ULN28xx). (Habe grade ne Platine mit Mega16 (TQFP), 16 Treibern (SMD-Transistoren), 4 Wiederstandsnetzwerke in 0402-Größe (aus nem alten MP3-Player) und 2 Widerstandsnetzwerken á 8 Wirderstände (330Ω) und nem Qaurz auf ne 40x50mm große Platine gefummelt. Platz wird da schon knapp.)
Was mich ungemein nervt, ist, dass es den CD/HC/HCT-4094 bei Reich Elt nicht im SMD-Gehäuse gibt.
_________________
|
BID = 444027
BjörnB Stammposter
    Beiträge: 242 Wohnort: Dortmund
|
Hallo,
ich verwende für solche Zwecke gerne die 74HC595, sind von der räumlichen Anordnung der Ausgangspins angenehmer in der Anwendung. Leider gibt es die bei Reichelt auch nicht als SMD.
Viele Grüße,
Björn
|
BID = 444048
Nukeman Schriftsteller
    
Beiträge: 754 Wohnort: bei Kleve
|
Hallo BjönB,
der 74HC595 sieht auch von der Treiberleistung besser aus,
damit kann man die Anzeigen wohl wirklich bedenkenlos
direkt treiben, wenn man etwas grössere Vorwiderstände
wählt.
Guter Tipp! Intern ist das Teil logisch fast gleich wie
der 4094 mit dem Output-Latch und die Q's kommen schön
auf einer Seite raus.
Wollte nur noch eben den Gedanken nicht ganz in den
Hintergrund rücken lassen, dass man bis zu 8 Stellen
( oder 9 ohne Punkt ) mit 2 Ports auch ganz ohne
externe ICs schaffen kann.
Da ist halt eben mehr die SW-Seite gefragt.
Muss man selbst abwägen. So eine serielle Schaltung ist
zum Testen auch schnell an einen PC-Paralell-Port gehängt.
Je nachdem, wie man die SW entwickelt, kann das sinnvoll sein.
Das geht mit dem Multiplex-Betrieb nun wieder eher schlechter
am PC zu simulieren.
Gruß,
Stefan
|
BID = 444094
hajos118 Schreibmaschine
    
Beiträge: 2453 Wohnort: Untermaiselstein
|
Zitat :
Nukeman hat am 18 Jul 2007 14:35 geschrieben :
|
...
die Lösung mit Schieberegistern braucht auch nur wenige Portpins
des Micro-Controllers. Man braucht nur 3 Pins für Daten, Clock
und nen Strobe. ...
Allerdings müssen bei jedem Update alle Ziffern kurz neu
geschrieben werden.
|
... oder man verwendet für jedes Display einen eigenen Strobe, ggf. aus einem BCD->BIN decoder.
Das ergibt für die Ansteuerung von 10(16) Stellen genau 5 Port-Leitungen. (4BCD,1Strobe-Clock) mit der Daten und Clockleitung sowie einem Enable - Signal (optional) benötigst Du also nur einenPort am uC.
Softwareseitig kannst Du dann jede Ziffer unabhängig von den anderen neu beschreiben und musst Dir nicht merken, was in den unveränderten Ziffern steht.
|
BID = 444428
pg-zonk Gelegenheitsposter
 
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 66 Wohnort: CH
|
Vielen Dank für eure ausführlichen Antworten. Ich kann mich bis jetzt noch nicht entscheiden wie ichs mache. Weil diese Bastelei eh nicht Dringend ist werde ich mal beides ausprobieren.
Besonders die Lösung von hajos gefällt mir weil ich da nur einen Port brauche.
Ich hätte nie gedacht dass es so viele Möglichkeiten gibt...
_________________
Gruss
pg-zonk
PS: Seid lieb zueinander!
|
BID = 445630
stepp64 Gesprächig
  
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 162
|
Hallo,
für solche Sachen eignet sich der MAX7219 hervorragend. Das ist ein Displaytreiber für 7-Segmentanzeigen welcher seine Daten seriell bekommt. Du schließt deinen µC über 3 Leitungen am MAX-Eingang an und die bis zu 8x 7-Segmentanzeigen am Ausgang des MAX7219. Multiplexing, Decodierung, Helligkeit, Vorwiderstände etc. ist schon alles integriert. Der MAX7219 ist zwar nicht ganz billig (ca. 7,-€ bei Rei****t) dafür gibt es ihn aber auch in SMD und du sparst dir jede Menge Verdrahtungs- und Programmieraufwand. Schau ihn dir mal an, bei >4 Diggits lohnt es sich sicher darüber mal nachzudenken.
Gruß
Sven
|