erstellt 20.06.2012
Erweiterung der Grundplatine um ein Display mit 4 X 16 Zeichen
Um Ein und Ausgaben am Mikrocontroller  registrieren zu können benötigen wir einen Kontakt des Mikrocontrollers zur Außenwelt, das kann in vielfältiger Form passieren, zu unterscheiden  ist  ob der Mikrocontroller Informationen ausgeben  oder aufnehmen soll.
Zur Aufnahme  von Extenen Informationen gibt es eine ganze Anzahl Sensoren , z.B. für Temperatur, Feuchtigkeit, Helligkeit , dann noch Schalter, Taster und dergleichen.
Zur Ausgabe von Informationen dienen Relais, Lampen, Leuchtdioden , LCD Anzeigen, LED Anzeigen, Monitore , Drucker und dergleichen.
Wir wollen hier zur Ausgabe von Informationen eine LCD Anzeige verwenden, die ein Format von 2 mal 16 Zeichen ausgeben kann.
Es handelt sich um ein Display vom Typ " TC1602. Es gibt einige ähnliche Displays auch mit anderen Farben.

Alle zusätzlich benötigten Leitungen zum Anschluss  des Display sind im Schaltplan  in Blau gekennzeichnet. Die Anschlüsse am Display sind von 1 beginnend (auf der linken Seite oben) durchnummeriert bis 16 (oben rechts), der Anschluss 1 ist meistens mit einer kleinen Zahl auf der Platine gekennzeichnet, sollte keine Kennzeichnung vorhanden sein kommt man nicht umhin sich das Datenblatt näher anzusehen.Es gibt viele alternative Displays die man anschließen kann, ich benutze das hier vorgestellt weil es für mich die beste Alternative für die Menge der anzeigbaren Zeichen im Verhältnis zum Preis darstellte.
Die Displays befinden sich meist auf einer kleinen Platine , auf deren Rückseite  auch ein Controller, also eine Steuerelektronik für das Anzeigen von Text schon vorhanden ist, das erleichtet uns das ansprechen der Anzeigen und wir kommen mit nur wenigen Befehlen aus, um alle Funktionen des Displays auszuschöpfen.Diese Controller sehen aus wie  ein Rest schwarzer Kaugummi den man einfach drauf gepatscht hat, aber darin befindet sich umfangreiche Elektronik.Für diese Displays gibt es Standard  Controller die alle auch von unseren Compiler verstanden und weiterverarbeitet werden können.
Man sollte also beim Kauf darauf achten einen sogenannten Standard Industrie Contoller auf seine Anzeigplatine zu haben auch oder auch die  Bezeichnun HD44780, oder Kompatibel KS0073.
Die Ansteuerung eines Displays mit HD44780 Controller gestaltet sich sowohl was den Hardware- als auch den Softwareaufwand angeht relativ einfach und eignet sich somit sehr gut als Übungsprojekt für Anfänger.
Der HD44780-Controller benutzt  8 Datenleitungen (D0 bis D7) sowie den 3 Steuerleitungen RS (Register Select), R/W(Read/Write) und E(Enable). Das Displays wird mit 5V Betriebsspannung versorgt, die Kontrastspannung  VO bekommt man, indem man ein 10k-Poti zwischen VDD  und VSS anschließt und den mittleren Anschluss als Kontrastspannung  für VO verwendet. Bei ca. 4,5 Volt je nach verwendeten Display werden dann die Pixel sichtbar. Optional haben viele Displays noch eine LED-Beleuchtung eingebaut,wie auch hier die von mir verwendete.
Möchte man nur einen 8-Bit-Port zur Ansteuerung verwenden, so ist dies möglich, indem man lediglich die Pins D4-D7 sowie die 3 Steuerleitungen an den Controller anschließt, das Display wird dann im sogenannten 4-Bit-Modus betrieben .Es können auch Displays verwendet werden die einen Kompatiblen Controller verwenden, z.B. KS0073.
Diese Tabelle gibt Aufschluss über die Anschlüsse der LCD Anzeige Typ TC1602, ist aber auch für die meisten anderen Anzeigen z.B für Anzeigen mit 2 X 16 Zeichen gültig , meist unterscheiden sich die Menge der Anschlüsse , weil Anschlusspin 15 und 16 für die Hintergrundbeleuchtung zuständig , bei manche Anzeigen aber keine Hintergrundbeleuchtung vorgesehen ist fehlen diese Anschlüsse schon mal oder sind nicht belegt.
Display Pin
Bezeichnung
Funktion
1
VSS
Masse (GND)
2
VDD
+ 5 Volt
3
VO
Kontrasteinstellung
4
RS
Über RS wird ausgewählt, ob man einen Befehl oder ein Datenbyte an das LCD schicken möchte. Ist RS Low, dann wird das ankommende Byte als Befehl interpretiert, ist RS High, dann wird das Byte auf dem LCD angezeigt.
5
R/W
RW legt fest, ob geschrieben oder gelesen werden soll. High bedeutet lesen, Low bedeutet schreiben. Wenn man RW auf lesen einstellt und RS auf Befehl, dann kann man das Busy-Flag lesen, das anzeigt ob das LCD den vorhergehenden Befehl fertig verarbeitetet hat. Ist RS auf Daten eingestellt, dann kann man z.B. den Inhalt des Displays lesen - was jedoch nur in den wenigsten Fällen Sinn macht. Deshalb kann man RW dauerhaft auf Low lassen (= an GND anschließen), so dass man noch ein IO-Pin am Controller einspart. Der Nachteil ist, dass man dann das Busy-Flag nicht lesen kann, weswegen man nach jedem Befehl vorsichtshalber ein paar Mikrosekunden warten sollte um dem LCD Zeit zum Ausführen des Befehls zu geben. Dummerweise schwankt die Ausführungszeit von Display zu Display und ist auch von der Betriebsspannung abhängig. Für professionellere Sachen also lieber den IO-Pin opfern und Busy abfragen.
6
E
Der E Anschluss schließlich signalisiert dem LCD, dass die übrigen Datenleitungen jetzt korrekte Pegel angenommen haben und es die gewünschten Daten von den Datenleitungen bzw. Kommandos von den Datenleitungen übernehmen kann.
7
DB0
Nicht benutzt mit Masse verbinden
8
DB1
Nicht benutzt mit Masse verbinden
9
DB2
Nicht benutzt mit Masse verbinden
10
DB3
Nicht benutzt mit Masse verbinden
11
DB4
PB.5 am Atmega
12
DB5
PB.4 am Atmega
13
DB6
PB.3 am Atmega
14
DB7
PB.2 am Atmega
15
LED+
Plus 5 Volt für Hintergrundbeleuchtung wenn verfügbar , nur über Vorwiderstand
16
LED-
Masse

Achtung : Es gibt Displays bei denen der Plus und der GND Anschluss vertauscht sind, beim Display mit der Bezeichnung "TC1602E-01" ist beispielsweise Pin 1 Plus und Pin 2 Minus


Das Display ist so angebracht das es nach dem Einbau den kompletten Mikrocontoller überdeckt , aus diesen Grund sollte man das Display unbedingt Sockeln, damit es bei Bedarf entnommen werden kann.





Schaltplan als Splan Datei laden hier
Betrachter für Splan Pläne hier
Was wenn kein Text auf dem Display erscheint?
  • Da die Verbindungen vom Atmega zum Display am Atmega meist nebeneinander liegen , kann es sein das evtl. eine Verbindung zwischen den Verschiedenen Datenleitungen besteht hervorgerufen durch schlecht verlaufendes Lot. Das würde dann gar keine Anzeige auf dem Display hervorbringen
  • Die meisten Display haben die Versorgungsspannung an Pin 1 Minus und an Pin 2 Plus liegen. Es gibt aber Display bei denen es genau umgekehrt ist, also Datenblatt zu Rate ziehen und prüfen.
  • Möglicherweise sind einige Datenpins am Atmega als Eingänge definiert, wenn Beispielsweise der folgende Befehl einige Pins als Ausgänge setzt DDRD= &B11000001 werden die mit Null gekennzeichneten natürlich als Eingänge gesetzt was im Fall beim Displayanschluß nicht gewünscht ist, also sollte man den Befehl folgendermaßen fassen: Ddrd.0 = 1 und Ddrd.6 = 1 und Ddrd.7 = 1. Anschluss Pins für das Display müssen als Ausgänge definiert werden.
  • Beim Atmega 16 und Atmega 32 sind bei einem neuen Baustein Standardmäßig die Pins C5-C4-C3-C2 als JTAG Schnittstelle definiert, wenn man also dort ein Display anschließt wird es zu Konflikte kommen, meist äußert es sich so das überhaupt keine Anzeige auf dem Display erscheint. Diese JTAG Schnittstelle kann man unter den Fusebits deaktivieren so das die Pins dann wieder für Allgemeine I/O Pin's zur Verfügung stehen.

aktualisiert 17.12.2017