Pfad:AVR-DE => Anwendungen => ATtiny24-Experimentierboard mit LCD
tn24_lcd_Experimentierboard klein Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega
Experimentierboard mit einem ATtiny24/44/84 und einer LCD
Logo

Experimentierboard mit einem ATtiny24/44/84 und einer LCD

Gezippte Version dieser Seite (504 kB) Diese Seite als PDF ( kB)


tn24_lcd Experimentierboard Wer für kleine Controlleranwendungen eine LCD und dafür bis zu vier Ein- und Ausgänge des Prozessors benötigt, ist mit dieser Lösung gut bedient:

0 Überblick

  1. Hardware
  2. Aufbau
  3. Software

1 Hardware

1.1 Schaltbild

tn24_lcd Schaltbild Bei der Schaltung können wahlweise ein ATtiny24, ein ATtiny44 oder ein ATtiny84, bzw. die entsprechenden A-Typen, verwendet werden. Die A-Typen unterscheiden sich nur im Strombedarf, die Zahlentypen im verfügbaren Flash- und EEPROM-Speicher.

Der Abblockkondensator von 10 oder 100 nF (Keramik) und der Reset-Pull-Up-Widerstand von 10 k sind Standard.

Der sechspolige Pfostenstecker dient der Verbindung mit den externen Bauteilen (z. B. auf einem Breadboard). Er enthält Pins für die Versorgungsspannung (VCC, GND) und für die frei verwendbaren I/O-Pins PA0 bis PA3.

Der ISP6-Pfostenstecker dient der Programmierung des ATtiny in der fertigen Schaltung. Die Programmierung kann mit angeschlossener LCD erfolgen.

Die LCD ist mit einer standardisierten 16-poligen Pfostenbuchse angeschlossen. Wenn die verwendete LCD über keine Hintergrundbeleuchtung verfügt, bleiben die Pins 15 und 16 unbeschaltet und der 220 Ω-Widerstand kann entfallen. Benötigt die Hintergrundbeleuchtung einen höheren Strom, kann der Widerstand nach der Formel
R (Ohm) = 1.000 * (UB - ULED) / I (mA)

berechnet und entsprechend verringert werden.

1.2 Stückliste

Die benötigten elektronischen Teile sind in der Stückliste zusammengestellt. Die LCD ist nicht enthalten, da diese vom vorgesehenen Verwendungszweck abhängt. Für einfache Anwendungen (z. B. ein Voltmeter oder einen Frequenzzähler) kann eine einzeilige LCD ausreichen, für vielseitige Verwendung ist eine weiß/blaue 4*20-LCD angemessen. Die LCD kann jederzeit gewechselt werden, es müssen nur die beiden Zeilen in der LCD-Include-Routinen mit der Größe (cLcdLines, cLcdColumns) sowie die gewünschten Ausgabepositionen geändert und neu assembliert werden. Die in der Stückliste angegebenen Preise entsprechen dem Stand von Januar 2018.

tn24_lcd Stückliste

1.3 Verwendungen

Mögliche Anwendungen sind in den Kapiteln 11 bis 14 des Mikroprozessorkurses dargestellt. Dort sind beschrieben:
  1. hier ein 8- und ein 16-Bit-Einschaltzähler,
  2. hier ein Infrarot-Fernsteuerempfänger mit diversen Analysetools, ein ATtiny13-Fernsteuersender und ein ATtiny24-IR-Datenempfangsauswerter,
  3. hier ein Frequenzzähler für Digital- und niedrig-amplitudige Analogspannungen sowie für ein Induktivitätsmessgerät,
  4. hier ein Messgerät für Spannungen bis 20 V für Ströme bis mehreren Ampere Gleichstrom, und für Temperaturen.
Die dort beschriebenen Anwendungen sind ohne weitere Änderungen auf dem Experimentierboard tn24_lcd lauffähig (siehe die dort jeweils angegebenen Assembler-Quelldateien mit der zugehörigen Include-Datei Lcd4Busy.inc).

Seitenanfang 1 Hardware 2 Aufbau 3 Software


2 Aufbau

2.1 Gedruckte Platine

tn24_lcd Platine tn24_lcd Bestückungsplan Die Bauteile finden auf einer 40*50 mm großen einseitigen Platine Platz. Drei Brücken sind mit Draht zu bestücken.

2.2 Mechanischer Aufbau

tn24_lcd LCD-Stiftleiste von unten tn24_lcd LCD-Stiftleiste von oben Die LCD-Anschlüsse werden wie in den Bildern zu sehen mit Stiftleisten bestückt und, falls sie durchkontaktiert sind, von oben her verlötet. Falls keine Durchkontaktierung vorhanden ist, wird die Stiftleiste mit der langen Stiftseite von unten in die Löcher geführt, die Stifte von der Unterseite her verlötet und dann das Plastikteil der Stiftleiste sukzessive in Richtung der Lötungen verschoben. Mutige können das Plastikteil auch ganz entfernen, allerdings mit der Gefahr, dass Stifte verbiegen können.



Die Stiftleiste passt dann perrfekt in die Buchsenleiste auf der Platine. Das hat den Vorteil, dass die LCD jederzeit durch einen anderen Typ ausgetauscht werden kann.

Seitenanfang 1 Hardware 2 Aufbau 3 Software



3 Software

Hier wird eine universell einstellbare Software für die Ansteuerung der LCD zur Verfügung gestellt, die alle wichtigen Routinen zur Ausgabe von Texten und Zeichen auf der LCD sowie zur Erzeugung eigener Zeichen als Include-Datei zur Verfügung stellt. An zwei Beispielen wird demonstriert, wie die Software an die eigenen Bedürfnisse und Bedingungen angepasst und angewendet werden kann.

Alle hier vorgestellte Software verwendet umfangreich die ".if"-, ".ifdef"-, ".else"- und ".endif"-Direktiven in Assembler. Versuche also niemals die Software mit einem Assembler zu übersetzen der diese Direktiven nicht beherrscht. Für alle, die noch mit einem steinalten Assembler unterwegs sein sollten: gavrasm beherrscht das.

3.1 Include-Routinen

Die wichtigsten Unterprogramme zur Ansteuerung der LCD im Experimentierboard sind in der Include-Datei zusammengestellt (Link zur HTML-Version). Mit dem Aufruf folgender Unterprogramme werden folgende Aufgaben erledigt:
Vor jeder Verwendung der Routinen ist sicherzustellen, dass

3.2 Zahlenumwandlung und -ausgabe-Routinen

Optionale Zahlenausgabe auf der LCD Zusätzlich können Routinen zur Zahlenausgabe in den Formaten Dezimal, Hexadezimal und Binär mit 8 und 16 Bit Länge zur Entwurfszeit mit Hilfe von Schaltern (sLcdDecN, sLcdHexN, sLcdBinN mit N=8 oder N=16) aktiviert werden. Durch Aufruf der Routinen LcdDecN, LcdHexN bzw. LcdBinN werden die Werte im Register rmp (8 Bit) bzw. ZH:ZL (16 Bit) an der aktuellen Position im aufgerufenen Format ausgegeben (bei Dezimalausgabe werden dabei führende Nullen unterdrückt).

Alle Zahlenausgaberoutinen sind mit der Direktive ".ifdef" so programmiert, dass sie nur dann in den erzeugten Hex-Code aufgenommen werden, wenn die Schalter sLcdDecN, sLcdHexN und sLcdBinN (mit N=8 oder 16) gesetzt sind. Bitte beachten, dass einige dieser Schalter auch in der Include-Routine gesetzt werden (z.B. sLcdHex8, wenn sLcdHex16 gesetzt ist. Daher bitte zum Setzen der Schalter sLcdHex8 und sLcdBin8 immer ".set ..." und nicht ".equ ..." verwenden.

Nähere Angaben zu beeinflussten Registern sind in der Include-Datei enthalten. Dabei kennzeichnen "Used" temporär verwendete, aber nach Beendigung der Routine wieder hergestellte Register.

3.3 Standardcode ohne Interrupts

Die Quellcodedatei tn24_lcd_lin.asm (HTML-Format hier) demonstriert die Anwendung der optionalen Zahlenausgabe und den Aufruf der LCD-Include-Routinen. Die Datei kann als Formatvorlage für eigene Software verwendet werden. Die darin inkludierte Datei "tn24_lcd_busy_4x20.inc" ist mit den Konstanten cLcdLines=4 und cLcdColumns=20 auf eine vierzeilige LCD eingestellt, der Takt ist mit clock=1000000 auf 1 MHz voreingestellt. Der Code verwendet und demonstriert alle Zahlenausgabe-Routinen.

Spezialzeichen-Ausgabe auf der LCD Die Softwarevorlage demonstriert ferner auch die Ausgabe von speziellen Zeichen, die mit dem Open-Office-Tool bzw. mit dem M$-Office-Tool generiert, als Tabelle in den Quellcode und mit der Routine LcdChars in die LCD geschrieben wurden.

3.4 Standardcode mit Interrupts

Für interruptgesteuerte Programm kann die Vorlage tn24_lcd_int.asm (HTML-Format hier) verwendet werden. Sie enthält die Interruptvektoren des ATtiny24. Hierfür wurde tn24_lcd_busy.inc auf eine einzeilige LCD mit 8 Zeichen umgestellt und im Hauptprogramm mit einem Takt von 8 MHz eingestellt (Löschen der CLKDIV8-Fuse). Die Bilder demonstrieren die Initiierung und die Ausgabe von Hexadezimal- und Dezimalzahlen.

1x8-LCD Init 1x8-LCD Zahlenausgabe

3.5 Belegter Speicher

Die folgende Tabelle zeigt den Speicherbedarf ohne und mit den verschiedenen Optionen (für den ATtiny24, Flashspeicher 1.024 Worte).

Optionen Ohne Interrupts Mit Interrupts
Worte%Worte%
Keine29729,031530,8
Dezimal38037,139838,9
Dezimal+Hex41440,443242,3
Dezimal+Hex+Bin45244,147045,9
Dezimal+Hex+Bin+Spezialzeichen49047,950849,6


Es verbleibt in allen Fällen noch genügend Flashspeicher für andere Aufgaben.

Seitenanfang 1 Hardware 2 Aufbau 3 Software




Lob, Tadel, Fehlermeldungen, Genöle und Geschimpfe oder Spam bitte über das Kommentarformular an mich.

©2018 by http://www.avr-asm-tutorial.net