ebps.de.vu > Schaltungen > AVR > einfacher Taschenrechner

Einfacher Taschenrechner

Beschreibung

Dieser Taschenrechner ist aus dem Versuch entstanden, die Funktionalität eines einfachen "Billig-Taschenrechners" für die vier Grundrechenarten mit einem AVR so vollständig wie möglich nachzubilden. Herausgekommen ist ein vollständiger Rechner, der neben den Grundrechenarten auch noch Prozentrechnung, Kehrwerte berechnen und Wurzeln ziehen kann. Außerdem gibt es einen Speicher, auf den Ergebnisse oder Eingaben addiert oder von ihm subtrahiert werden können. Lediglich die "Wiederholfunktion" für die Rechnung mit einer Konstanten (bei mehrfachem Drücken der Gleichheitstaste wird die vorherige Operation immer wieder ausgeführt) ist in dieser Version nicht enthalten, wird die Gleichheitstaste mehrfach betätigt, ändert sich das Ergebnis nicht mehr. Dafür kann die Länge des Displays bis zu 15 Stellen frei gewählt werden (bei weniger als 7 Stellen können allerdings nicht alle Funktionen genutzt werden, da die letzte(n) Zeile(n) der Tastatur dann nicht mehr abgefragt werden). Zusätzlich gibt es eine weitere Anzeigestelle, die das Minuszeichen und andere Informationen (z.B. "Überlauf" oder "Speicher ≠ 0") anzeigt.

Intern arbeitet der Rechner mit einer Festkommadarstellung, bei der sowohl vor als auch nach dem Komma genau so viele Stellen gespeichert werden, wie das Display anzeigen kann. Dadurch ist der Rechner etwas genauer als die käufliche Version, da die letzte Nachkommastelle nie angezeigt wird (mindestens eine Stelle wird für den Teil vor dem Komma gebraucht, auch wenn dieser 0 ist). Die Zahlen werden als Packed BCD gespeichert, alle Rechenoperationen erfolgen also dezimal. Trotz der dadurch etwas umständlichen Rechnungen ist das Wurzelziehen selbst bei 15-stelliger Anzeige nach weniger als einer Sekunde fertig, alle anderen Operationen erfolgen ohne merkliche Verzögerung.

Aufbau

Die Schaltung besteht neben AVR, Anzeige und Tastatur (als Matrix verschaltet) je nach Version nur noch aus einem Dekoder für die Anzeigestellen und gleichzeitig die Tastatur-Zeilen sowie ggf. Anzeigetreibern.

LED-Version

Die LED-Version ist besonders einfach aufzubauen. Ich habe mich für einen Rechner mit 8 Anzeigestellen entschlossen, die sich aus 3 Doppelanzeigen "VQE14" sowie zwei 1,5-stelligen Anzeigen "VQE12", davon eine überkopf, zusammensetzt. Die ±-Stellen der beiden VQE12 habe ich verwendet, um alle anderen Informationen anzuzeigen: links nur das Minuszeichen (wenn das Ergebnis negativ ist), rechts die gewählte Operation (+, , ×, ÷) und die Speicherbelegung (Punkt leuchtet, wenn Speicher ≠ 0). Versorgt wird die Schaltung mit 4 AA-Zellen, entweder Akkus (ca. 4,8 V) oder nicht mehr ganz volle Batterien (ca. 4,5-5,5 V).

VFD-Version

In dieser Version wird eine Vakuum-Fluoreszenz-Röhre aus einem defekten Tischrechner verwendet. Sie hat 12 Anzeigestellen und links davon eine Zusatz-Stelle, auf der ein "M" (Speicher ≠ 0), ein Pfeil (Überlauf) und ein Minuszeichen dargestellt werden können. Die gewählte Operation wird bei dieser Version nicht auf der Anzeige gezeigt.

Wegen der langen Anzeige waren hier zwei Dekoder-ICs nötig, deren Ausgänge zudem nicht-invertiert sein müssen, um die VFD-Treiber-ICs ansteuern zu können. Da die Ausgänge jedoch auch für die Tastatur verwendet werden, wurden auch hier ein paar Änderungen gegenüber der LED-Version nötig: zum Einen musste natürlich die Software geändert werden, zum Anderern können allerdings auch die internen Pullups an den Eingängen nicht mehr verwendet werden - an deren Stelle wurden externe Pulldowns notwendig. Anstelle der angegebenen Anzeigetreiber können Sie auch die heute noch erhältlichen UDN2981 mit Pulldowns von ca. 150 kΩ an den Ausgängen verwenden.

Die Anodenspannung für die Fluoreszenzanzeige wird von einem Step-Up-Wandler auf Basis des MC34063 erzeugt und ist mit einem Poti in weitem Bereich einstellbar. Die Spule habe ich in der Bastelkiste gefunden, deshalb ist der Wert im Schaltplan leider nur geschätzt. Die Heizung meiner VFD funktioniert wunderbar mit 5V, deshalb habe ich nur einen einfachen "Wechselrichter" gebaut, damit die Anzeige nicht auf einer Seite heller leuchtet. Für Anzeigen mit geringerer Heizspannung genügt es, wenn Sie einfach einen passenden Widerstand zwischen +5 V und den Emittern der beiden PNP-Transistoren einbauen.

Software

Die Software ist modular aufgebaut und in drei Teile unterteilt:

In der io_*.asm wird die Anzahl der Anzeigestellen (DISPSIZE) sowie die Belegung der Tastatur (keytable:) festgelegt. Für die beiden Versionen (LED und VFD) gibt es 2 unterschiedliche I/O-Module (io_led_keypad.asm und io_vfd_keypad.asm), im Hauptprogramm wird per .include festgelegt, welches verwendet werden soll. Die io_rs232.asm gibt zu Debuging-Zwecken den Anzeigeinhalt auf dem UART des AVR aus und empfängt alle Tastenbefehle von dort, so dass der Rechner ohne aufwändige Display- und Tastatur-Hardware mit einem Terminal-Programm vom PC aus getestet werden kann.

Die Belegung der Tastatur kann im I/O-Modul nach Belieben festgelegt werden, beachten Sie allerdings, dass nur so viele Zeilen zur Verfügung stehen, wie Anzeigen verwendet werden. Trotzdem müssen in der Tabelle immer alle 7 Zeilen angegeben werden, ungenutzte Zeilen sind mit vier mal 0xFF zu füllen.

Fotos

LED-Version

[Foto]
800 | 822
Die fertige Hardware, noch ohne Taster für Kehrwert und Wurzel. Der Batteriehalter ist ebenfalls noch nicht angeschlossen.
[Foto]
800 | 1280
Eingebaut in ein Holzgehäuse (Ansicht von innen/unten). Die LED-Anzeigen sind direkt auf der Unterseite der Lochrasterplatine mit blanken Draehten verschaltet.
[Foto]
800 | 1280
Der fertige LED-Rechner, die Tastatur (ausgebaut aus einem alten "Eingabegerät") ist allerdings noch nicht korrekt beschriftet.

VFD-Version

[Foto]
800 | 1280
Ein Testaufbau auf dem Steckbrett, um den Spannungswandler für die Anodenspannung ausgiebig testen zu können.
[Foto]
800 | 1280
Fertig aufgebaut auf Lochrasterplatine. Ein passendes Gehäuse existiert noch nicht, eine passende Tastatur fehlt mir auch noch.