kleiner, universeller LCD-Anzeigebaustein

Pirx

Mitglied
15. Aug. 2009
305
14
18
Möckern
Sprachen
  1. Assembler
Hallo zusammen !

Für Test- und Debuggingzwecke hatte ich immer wieder den Bedarf einer einfachen, universell nutzbaren Anzeige. Von der Größe her völlig ausreichend für mich und auch preislich im Rahmen war da eine LCD-Anzeige wie diese hier :

http://www.reichelt.de/Hintergrund-...8AAAIAACcaJpIaa09a03323f39f3e79d89f88043eac8e

Allerdings "verbraucht" die mindestens 6 Ports und die Routinen zu deren Ansteuerung sind auch relativ aufwendig (Initialisierung, Timing, ect.).

Ich bin recht häufig mit den kleinen ATTINYs (13er und 24er) unterwegs. Die Anzeige muss deshalb mit wenigen Ports auskommen und darf keinen großen Softwareaufwand und kein exaktes Timing erfordern.

Herausgekommen ist ein kleines Zusatzmodul für die oben erwähnte LCD-Anzeige (siehe Bilder links oberhalb des LCD). Dieses übernimmt die Ansteuerung der Anzeige, so dass sich der Datensender darum nicht kümmern muss. Die Daten werden synchron seriell an das Modul übertragen, womit senderseitg nur 2 Ports benötigt werden und ein exaktes Timing nicht erforderlich ist. Der Sender übermittelt einfach die anzuzeigenden Daten im ASCII-Format.

Nach dem Einschalten signalisiert das Modul im Display die Empfangsbereitschaft des Moduls (siehe Bild "Bereit-Anzeige). Ein einzelner Startimpuls (Clock) markiert den Beginn der Übertragung, dann folgen bis zu 32 Bytes an Daten bitweise mit jeweils einem Clockimpuls (Details siehe Schaltplan). Die Ausgabe der ASCII-Zeichen im Display erfolgt, nach Empfang des 32. Bytes oder nach dem Erreichen des Timeout. Danach ist das Modul sofort wieder empfangsbereit. Die empfangenen Daten bleiben im Display bis der Sender neue schickt oder die Anzeige löscht. Der Timeout ist mit dem Jumper einstellbar auf 16ms (geschlossen) oder 80ms (offen).

Welche Anzeigemöglichkeiten gibt es ?
1) beide Zeilen der Anzeige mit beliebigem Text füllen - 32 Bytes vor Timeout übertragen
2) nur einen Teil des Displays mit Text füllen - weniger als 32 Bytes übertragen und den Timeout abwarten
3) Display löschen - nur den Startimpuls senden und den Timeout abwarten

Ich verwende den Anzeigebaustein überwiegend bei Testaufbauten auf dem Steckbrett (siehe Bild "Beispieltext"). Mittlerweile nutze ich ihn auch als Anzeigebaustein im Zusammenhang mit kleinen Zusatzmodulen wie einem RC5(e)-Decoder (siehe Bild "Anzeige mit RC5-Decoder").


Der Schaltungsaufwand ist kaum der Rede wert. Der Quartz sorgt für ausreichend hohe Empfangsgeschwindigkeit des Moduls bei Sendertaktfrequenzen bis 10 MHz. Bei schnelleren Sendern muss ggf. die Senderoutine etwas gebremst werden (z.B. mit ein paar weiteren NOP's in der Clock-Subroutine). Der Timeout sollte bei Sendern mit Taktfrequenz < 1 MHz auf 80ms, anderenfalls auf 16ms eingestellt werden.


Quellcode und HEX-File gibt's anbei, wie auch Senderoutinen in ASM (in der Sektion "Anzeige" wird die Funktion demonstriert). Das Protokoll ist simpel, es in C oder BASCOM zu implementieren sollte kein Problem sein.

Gruß
Pirx
 

Anhänge

  • LCD-Baustein.zip
    24,4 KB · Aufrufe: 37
  • Bereit-Anzeige.jpg
    Bereit-Anzeige.jpg
    170,6 KB · Aufrufe: 68
  • Beispieltext.jpg
    Beispieltext.jpg
    170,3 KB · Aufrufe: 67
  • Anzeige mir RC5-Decoder.jpg
    Anzeige mir RC5-Decoder.jpg
    71,1 KB · Aufrufe: 75
Hi Pirx,

sehr schön ... :cool:

Ich hab hier grad was ähnliches am laufen. Cassio hat ja schonmal sein "Handhelt-Display" für den RFID-Leser vorgestellt. So ein "Service-Terminal" hab ich auch in einer absoluten Miniversion hier grad auf dem Schreibtisch.

Ich hab mir folgendes vorgestellt. Bei ner Atmel-Schaltung ist ja sowieso meißtens ein ISP-Port für die Programmierung dran. Man hat also einen Stecker an der Platine den man auch für ein kleines externes Service-Terminal verwenden könnte. Ursprünglich habe ich mit einer Übertragung durch die SPI-Schnittstelle und nem 74595/74597-Pärchen gerechnet. Dann könnte man die Daten recht schnell und einfach zum Display ausgeben und auch Daten von ein paar Tasten (ich nehme wegen Menüführung gerne 4 Stk) für Config-Zwecke entgegennehmen. Leider hab ich auf dem ISP-Port aber nicht genug Pins für die Steuerung der Latches wenn ich bereits 3 Pins für das SPI-Interface (MISO/MOSI/SCK) verbrate. Dann liegt noch Reset, GND und Vcc auf dem 6-pin-ISP und das wars dann. Nen 10poligen wollte ich wegen der Größe nicht nehmen. Also alles zurück auf Anfang.

Im Moment nehme ich einen PCF8574 (I2C-8port-IO) und packe da das LCD dran. So wie es Cassio bereits gemacht hat. Allerdings sind ja beim 4Bit-Betrieb des LCDs noch 2 Pins frei. Beim LCD wird nur DB4..7, E und RS angesteuert. Also verwende ich die beiden anderen Pins für 2 Taster und werde mit einem der fürs Display verwendeten Pins 2 weitere Taster dazuschalten. Also sozusagen 2 Gruppen mit jeweils 2 Taster (das sind dann 4 Stk).

Als Software werde ich wohl die Library von Kent Andersson als Basis verwenden und die entsprechend anpassen. Eine Hintergrundbeleuchtung werde ich aus Stromspargründen nicht verwenden. Von der Library wird wohl nachher nicht mehr viel erkennbar sein. Evtl werde ich die Pinbelegung auch stark ändern. Mal sehen ...
Die I2C-Adresse hätte ich noch gerne einstellbar gemacht aber die Dip-Switche dafür bekomme ich wohl nicht mehr unter. Aber ein Reset-Taster soll auf jeden Fall noch rein.

Hier mal zwei Bilder davon ...
P1060948.JPG P1060946.JPG
Mehr paßt auch nicht ins Gehäuse rein ;)

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)