Guten Tag, ich bin blutiger Anfänger was den Bereich Mikrocontroller betrifft und möchte mich nun in das Thema einarbeiten... Als "Ziel" habe ich mir die Ansteuerung von vier 7-Segment-Anzeigen gesteckt, die ich zum Beispiel als Vorwärtszähler von 0 bis 9999 verwenden möchte. Ist dies mit einem einfachen Mikrocontroller, wie etwa dem AT90S2323 überhaupt möglich? Ich kann es mir fast schon nicht vorstellen... Wo kann ich im Netz vielleicht sogar schon eine realisierte Segment-Anzeigen-Ansteuerung finden? Danke schon mal...
Hi.. Gib mal in der Suche Multiplexen ein... Das ist das Zauberwort Gruß Avus
Sven, dann such mal - wie Avus schon geschrieben hat - nach "Multiplexen". Meistenst gibt es genau dazu auch schon App-Notes beim Hersteller des Controllers (ist bei den von mir verwendeten so). Als weitere Möglichkeit kannst du auch einen Treiberbaustein nehmen (z.B. ICM7211AM). Der hat eine relativ einfache Schnittstelle zum µC. Andreas
Matthias: das ist die übliche Variante. Mit dem SAA1064 spart man sich halt den ULN2803, die Widerstände und zwei Transistoren, die Ansteuerung ist statisch, die Helligkeit ist elektronisch einstellbar ... einziger Nachteil: Reichelt hat nur die DIL-Version.
Hi ist mit 2,50 auch nicht gerade günstig spart aber Pins am µC. Aber ein DIP24 ist für mich eigentlich nie eine Alternative. Besagtes Gehäuse ist nämlich fast größer als der ganze Drehzahlmesser ;-) Matthias
Ich hab schon eine Anzeige mit 8 Siebensegmentanzeigen und dem AT90S2313 gebaut. Das funktioniert alles prächtig. PB habe ich über einen Treiberbaustein (74HC541 oder so ähnlich - 8bit Leitungstreiber) und 50 Ohm-Widerstände direkt an die Segmenteingänge aller Anzeigen geschaltet (parallel). PD0-2 gehen an A,B und C des CMOS-IC 4028 (Hex zu Dezimal-Decoder). Dabei sind ungenutzte Eingänge UNBEDINGT auf Masse zu schalten (Betrifft Eingang D). Jeder Ausgang dieses Decoders geht über einen Transistorverstärker an die Gemeinsame Elektrode der Anzeige (Je nach dem, ob gemeinsame Kathode oder gemeinsame Anode- bei mir : Anode, aber Kathode ist IMHO besser, weil man dort bessere Ausleuchtung mit gleichen Transistoren erreicht). Gleichzeitig kannst du auch noch 8 Taster dranhängen, indem du jeweils eine Diode von einem der 4028-er Ausgänge an einen Taster schließt, und das "andere Ende des Tasters" zusammen mit den "anderen Enden der anderen Tastern" an PD3 verbindest. Diesen Pin kannst du dann als Eingang nehmen, aber du solltest ihn mit einem Widerstand (10KOhm) gegen Masse verbinden, sonst fängt er an zu schwingen und kann dir den Letzten Nerv bei der Fehlersuche rauben (Ich weiß wovon ich Rede ;). Softwaretechnisch lässt du den Timer0 mit 1000Hz durchlaufen. In einem Interrupt schaltest du einen anderen 4028-er Ausgang durch (nächste Anzeigestelle) und fütterst PB mit dem Anzeigeinhalt für diese Stelle. Im nächsten Interrupt fragst du PB3 ab, und holst den Tastenstatus für den parallel selektierten Taster ab. Sozusagen wechselst du zwischen Anzeigeupdate und Tasterabfrage. Damit ist gewährleistet, dass ein Stabiles Signal am Tastereingang anliegt, wenn es abgefragt wird. Damit läuft innerhalb von 16 Interrupts die Anzeige einmal komplett durch, und die Taster werden auch einmal komplett abgefragt. Das alles kannst du so realisieren, dass du zwei Tastenregister hast, die aktualisiert werden. Im das Eine schreibst setzt du immer das aktuelle Bit (für jeden Taster eins), und in das andere schreibst du das Bit, das du eben überschreibst (vorher retten). Damit kann man veränderung (steigende, fallende Flanke = Taster drücken und loslassen) ermitteln. Den Anzeigeinhalt kannst du bequem in den RAM schreiben, von wo er im Interrupt dann entsprechend ausgelesen wird. Das ganze braucht macimal 100 Instruktionen, womit du noch 900 übrig hast. (viiiel Platz) Durch die Hohe (relativ) Timerfrequenz passiert das ca. 64 mal pro Sekunde, und du nimmst das Multiplexen der Anzeige als eine durchgehend leuchtende Anzeige wahr. Allerdings leuchtet die Anzeige nur ein Achtel so hell, als wenn sie im Dauerbetrieb wäre. Daher sind die Widerstände mit 50 Ohm so dimensioniert, dass sie in den kurzen Pulsen 100mA (bei 5V) durch die LEDs schicken. Du musst unbedingt die Transistoren groß genug wählen, dass sie einen Strom von 800mA (alle Segmente) vertragen, sonst kann es sin, dass die Anzeige je nach Inhalt unterschiedlich hell leuchtet (und das wollen wir doch nicht ;-) ). Im Endeffekt hast du dann noch PD4-6 für eigene Zwecke frei. Als Quarz hab ich einen 8MHz mit 18p Kondensatoren gegen Masse genommen. Für Uhrenanwendungen kannst du ebenfalls den Timer0 verwenden (exakter 1ms Takt). Zusammenfassend : An den (fast) kleinsten Chip der AT90S-Serie mit 15 I/Os ist angeschlossen : Eine 8-stellige LED-Anzeige, 8 Taster und 3 Ausgänge. Wenn man das nicht Multiplexen würde bräuchte man einen µC mit 64+8+3 = 75! IOs. Die wären nicht nur Teuer, sondern wesentlich schlechter zu löten. Als Spannungsversorgung kannst du mit einem 7805 (Schaltplan gibts wie Sand am Meer) aus 6-35V Eingangsspannung exakte 5V Produzieren. Achtung: Das Ding wird Sau-warm (ich betrieb die unkekühlt mit 13,5V Eingang - Da wird das Teil schon locker 80°C heiß ! Ich hätte dir auch gern einen Schaltplan gepostet, doch leider ist der nur auf Papier aufgekritzelt, da Target nicht alle Bauteile zur gleichen Zeile zulässt (100-Pin-Grenze).
Danke, für die zahlreichen Anregungen! Christoph Wagner, einen Scanner hast du nicht zufällig, damit ich das mal Schwarz auf Weiß sehen kann? Mein Vorstellungsvermögen ist nämlich ziemlich begrenzt...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.