ComputerClub 2
Sitemap Kontakt
  Wolfgang Back & Wolfgang Rudolph
Suche:   Wolfgang Back & Wolfgang Rudolph

ATM18::Projekt::2-Draht LCD

Aus ComputerClub2 WIKI

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Applikation im Rahmen des ATM18-Projektes: Ausgabe von Texten auf einem 4x20 LC-Display. Dieses wird, um Anschlüsse zu sparen, durch ein trickreiches 2-Draht-Interface angesteuert. Als zentraler Bestandteil des Projektes wird die LCD-Erweiterung in vielen Projekten verwendet werden.

Benötigte Hardware

Benötigte Software

  • CodeVisionAVR C Compiler (Gratis-ATM18-Version - siehe auf der CC2 Downloadseite) oder
  • BASCOM-AVR Basic Compiler (Gratis-Version auf der Bascom Homepage, s.u.) oder
  • Compiler eigener Wahl (GNU-C, Forth, Pascal, ...)
  • Source Code (CodeVision Version hier)

Verdrahtung / Schema

Schema des LCD-Moduls:

LCD-Modul.jpg

Verdrahtung:

ATM18 LCD schematic01 korr.jpg

Anleitung

  • vormontiertes LCD-Modul nach Anleitung fertigstellen
  • Verdrahtung nach Schema (s.o.)
  • Kompilieren des Programmkodes, in das Modul flashen
  • am Display erscheinen in vier Reihen Zählerstände, die dezimal und hexadezimal angegeben sind.
  • Prinzip der Schaltung: LC-Displays brauchen zur Ansteuerung ein Datenbyte an ihrem Port. Wahlweise können sie ihren Datenbus in 8-Bit- oder 4-Bit-Modus betreiben. Damit benötigen sie neben der Spannungsversorgung also mindestens 4 Datenleitungen und zusätzlich 2 Steuerleitungen. Um -wie erwähnt- Pins einsparen zu können, bietet sich eine serielle Steuerung an. Die seriellen Daten müssen aber LCD-tauglich in eine parallele Form umgesetzt werden. Das übernimmt die vorliegende Schaltung, die ein Schiebergister hierfür verwendet. Per Software wird in dieses Register ein Datenwort geschrieben. Das 'most significant bit' ist eine '1'. Wird dieses Bit an die 7. Position im Schiebregister geschoben und dann der DATA-Pin zum Register ebenfalls auf '1' gesetzt wird ein Impuls am Pin E des Displays erzeugt, der dieses dazu veranlasst die jetzt gültigen Daten an den vier Daten-Pins zu übernehmen und zu verarbeiten. Da bei 4-Bit-Bus-Betrieb das LCD zwei Halb-Bytes benötigt wird die Prozedur einfach zweimal durchgeführt.

Was natürlich nicht funktionieren kann ist das Auslesen des LCD, da hier die Datenports ja nicht bidirektional angelegt sind.

Tipps & Tricks

  • Wie bei allen Projekten gilt auch hier: wenn Unsicherheiten bestehen, was wo anzuschließen ist, was wie definiert ist hilft bei den CodeVision C-Sourcen meist ein Blick in die Datei application.h.
  • fertig bestückte LCD-Module sind bei Elektor zu beziehen. Selbstbau ist aber möglich ...
  • es gab zu Beginn große Probleme mit dem Elektor-Display, da teilweise die Steuerplatine irrtümlich mit einem falschen Chip bestückt wurde. Der korrekte Chip ist ein '4094' CMOS Chip, die falschen Platinen hatten einen '4049' an Bord. Das Problem sollte sich mittlererweile erledigt haben ...
  • Verwendet werden in den Projekten LC-Displays mit 4 Zeilen à 20 Zeichen. Selbstverständlich muß der Programmcode hierauf abgestimmt werden. Das gilt sowohl für das 'Layout' der Bildschirmausgabe, als auch für die korrekte Ansteuerung der Bildschirmstellen.

Die Displays haben einen Bildschirmspeicher, der natürlich nicht zeilenweise orientiert ist, sondern einfach hintereinander weg mit Daten beschrieben wird. Dabei haben die Entwickler des Chips die Möglichkeit im Blick gehabt, unterschiedlich große Displays mit ein- und dem selben Chip steuern zu können. Dazu sind zwar die Daten einer Zeile hintereinander zu finden, zwischen den Zeilen sind aber -je nach Display-Größe- unterschiedlich große Lücken. Diese Lücken sind beim Ansteuern des Displays zu berücksichtigen. Das Ergebnis ist sonst u.U. ein 'Zeichen-Salat'. Diese Anpassung findet im CodeVision Sourcecode in der Datei 'LCD_2WIRE.C' statt:

__flash U08 LCD_ROW_TABLE[4] = // Display row addresses
{
  0x80,
  0xC0,
  0x80 + LCD_COLS,
  0xC0 + LCD_COLS
};

Dargestellt sind hier die Offsets, die später für die jeweilige Zeile zum X-Wert dazu addiert werden.

Wie man erkennen kann, sind bei dem im Projekt eingesetzten Display die Zeilen vertauscht (1-3-2-4). All dies -Displayzeilen- und -spaltenzahl sowie Anordnung der Zeilen- muß berücksichtigt werden. Besonders dann, wenn man nicht das von Elektor vertriebene Modul verwenden möchte, das natürlich zum Sourcecode kompatibel ist. Zusätzlich gibt es Displays, die zwei Enable-('E'-)Eingänge aufweisen. Diese zu betreiben ist ohne Umbau der Schaltung nicht möglich.

  • Scheinbare Fehlfunktionen kann beim Display die Kontrasteinstellung verursachen: LCD haben einen Kontroll-Pin für das Einstellen des Kontrastes. Wenn dieser nicht richtig eingestellt ist bleibt das Display entweder ganz leer oder ist insgesamt dunkel.
  • ein weiterer Stolperstein ist die Display-Hintergrund-Beleuchtung, ohne die dieses schwer abzulesen sein kann. Der Anschluß für die Beleuchtung ist -anders als die Kontrastregelung- nicht auf dem LCD-Modul dabei. D.h. hier muß durch den Benutzer die Versorgungsspannung angeschlossen werden. Dabei muß unbedingt ein Vorwiderstand verwendet werden. Sonst wird das Display einmal ganz heiß (und dann nie wieder :) ). Als Vorwiderstand wird im CC2-Forum ein Widerstand von mindestens (!) 10 Ohm empfohlen. Da es aber unterschiedliche Displays gibt, muß unbedingt das Datenblatt herangezogen werden. Siehe auch LCD-Thread im CC2-Forum!

Lcd patch 01.jpg

So könnte eine Umrüstung des Displays mit Vorwiderstand aussehen: Lötpunkt J2 unterbrechen und Vorwiderstand wie oben einlöten.

Links


zurück zu den ATM18 Bastel-Projekten