LED-Anzeige mit BCD-Eingang

mit PIC16F914

zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage

Einleitung

Dieses Projekt zeigt wieder mal die preisliche Attraktivität eines Microcontrollers, die ihn auch für einfachste Anwendungen interessant machen.

Für eine spezielle Anwendung wurde eine 4-stellige LED-Anzeige benötigt, die eine 4-stellige Zahl anzeigen sollte, welche im BCD-Code vorliegt. Das erfordert normalerweise 4 Treiber-ICs für 7-Segment-Anzeigen mit BCD-Eingang. Die hier normalerweise verwendeten Typen sind heutzutage aber Mangelware, da ihre Produktion eingestellt ist. Restposten wechseln für Apothekenpreise den Besitzer.

Ein PIC bietet sich da als Lösung an. Auf den ersten Blick ist es geradezu unsinnig, einen modernen Prozessor mit seinen vielfältigen Möglichkeiten für so eine einfache Aufgabe einzusetzen. Auf den zweiten Blick kostet ein PIC16F914-I/PT bei Reichelt geradeeinmal 2,80 Euro und kann 4 der knappen Treiber-ICs ersetzen.

Anstelle eines Mikrocontrollers könnte man hier natürlich auch einen programmierbaren Logikbaustein (PLD, GAL) einsetzen. Billiger wäre das aber auch nicht, und der Geschwindigkeitsvorteil eines GAL spielt hier keine Rolle.

Eine Helligkeitseinstellung für das Display gibt es noch dazu.
Stromlaufplan



Schaltung
Um eine 4-stellige Zahl per LED-7-Segment-Anzeige anzuzeigen benötigt man erst mal einen PIC mit einer ausreichenden Zahl von I/O-Pins. Die 4-stellige BCD-Zahl hat schon 16 Bit und benötigt am PIC 16 Eingangspins.Um vier 7-Segment-Anzeigen anzuschließen sind mindestens 11 Ausgangspins nötig. Da auch Vss und Vdd irgendwo angeschlossen werden müssen, kommt ein 28-Pin-Typ nicht mehr in Frage. Die nächstgrößere PIC-Klasse hat im SMD-Gehäuse 44 Pins - das reicht aus.

Da weder umfangreiche Berechnungen noch zeitkritische Abläufe zu erwarten sind, sollte auch der einfachste 44-Pin PIC geeignet sein, der Einfachheit halber sollte er aber einen internen Oszillator besitzen. Durch einen Preisvergleich entschied ich mich dann für den PIC16F914 im TQFP-44-Gehäuse (bei Reichelt: PIC16F914-I/PT für 2,80 Euro).

Der Anwender wollte die Schaltung möglichst einfach halten, weshalb auf Treibertransistoren verzichtet werden sollte. Ein PIC-Pin darf aber nur bis zu 20mA abgeben, was in der Welt der LEDs nicht gerade viel ist. Aus diesem Grunde müssen hocheffiziente LEDs verwendet werden, die auch bei kleinen Strömen ausreichend hell leuchten. Verwendet werden rotleuchtende 10 mm hohe SC39-11SRWA mit gemeinsamer Kathode (bei Reichelt: als SC39-11RT für 0,48 Euro/Stück). Da ein PIC-Ausgang im Low-Zustand einen kleinere Innenwiderstand (33 Ohm) besitzt als im High-Zustand (85 Ohm), lässt sich ein Display mit gemeinsamer Kathode besser ansteuern als eines mit gemeinsamer Anode. Trotzdem muss das Pin, das eine Kathode ansteuert, den 7-fachen Segmentstrom liefern können. Deshalb kombiniere ich immer zwei Pins zum Ansteuern einer Kathode, es sind ja ausreichend Pins am PIC vorhanden. Damit stehen 40 mA bei weniger als 20 Ohm Innenwiderstand zur Verfügung, das sind pro Segment immerhin 5 mA. Die stellen sich bei Segmentwiderständen von 620 Ohm ein. Die verwendete Anzeige erlaubt aber auch höhere Widerstandswerte.
Der Widerstand zum Segment H (Dezimalpunkt) ist für diese Anwendung nicht erforderlich, aber vielleicht will man ja später mit der Schaltung auch andere Dinge tun, deshalb schadet es bestimmt nicht ihn vorzusehen.

Die Anzeige erfolgt multiplex in 5 Schritten. In den ersten vier Schritten leuchtet jeweils eine Displaystelle, der fünfte Schritt dient internen Berechnungen (BCD-Wandlung der Eingangsdaten und Messung der Spannung vom Potentiometer). Damit ergibt sich für die LEDs ein Tastverhältnis von 20%. Der Durchschnittsstrom für ein LED-Segment beträgt also 1 mA.
Mit dem ADC wird die Stellung eines Helligkeitspotentiometers ausgelesen. In Abhängigkeit von der gemessenen Spannung wird das Tastverhältnis der Segmente von 20% auf bis zu 0% abgesenkt.

Die 16 Eingänge sind offen, und nur durch ihre internen Klemmdioden geschützt. Falls die Eingangssignale über lange Zuleitungen kommen, oder Spannungspegel unter -0,3V oder über 5V haben können, sollte man in jede Leitung einen 10-kOhm-Schutzwiderstand in Reihe einfügen.
Die Eingänge sind sehr hochohmig. Offene Eingangspins liegen nicht auf einem definierten Pegel. Es müssen also immer alle Eingangspins angeschlossen werden. Soll eine BCD-Stelle nicht benutzt werden, dann sollten ihre Pins alle mit Masse verbunden werden, um eine stabile "0" anzuzeigen.

Codes jenseits des BCD-Codes ("1010" bis "1111") werden entsprechend ihrem Hexadezimalwert angezeigt (A b C d E F).



Programmcode



zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage
Autor: sprut
erstellt: 05.03.2010
letzte Änderung: 25.03.2010