LCD-Displays
LCD-Displays und BASCOM


LCD-Displays am AVR mit BASCOM angesteuert:

Direktsprung zu Kapiteln Allgemeines zu LCD-Displays unter BASCOM
Achtung Topinformationen - Wichtige Hinweise und Tipps
EA DOG-M Displays von Electronic Assembly - 4-Bit PIN-Mode Ansteuerung
HD44780 1602 LCD 2x16 - 4-Bit PIN-Mode Ansteuerung ohne Busy (I/O Mode)
HD44780 1602 LCD 2x16 - 8-Bit PIN-Mode Ansteuerung ohne Busy (I/O Mode)
HD44780 1602 LCD 2x16 - 8-Bit BUS-Mode Ansteuerung
EA DOGM128x-6 - SPI Mode Ansteuerung - Betriebsspannung 3V3
EA DOGM128x-6 - SPI Mode Ansteuerung - Betriebsspannung 5V
TG12864B Grafik-Display 128x64 (kompatibel zu KS108) - 8-Bit Bus Ansteuerung
Direktsprung zu Kapiteln
Direktsprung zu Kapiteln


Link an das Ende


Allgemeines zu LCD-Displays unter BASCOM

LCD Text-Display
LCD Text-Display
Unter BASCOM kann ein LCD-Display mit wenig Aufwand an einen AVR angeschlossen werden.

Man unterscheidet zwei Gruppen von Displays. Die erste Gruppe ist die Gruppe der Text-Displays und die zweite Gruppe der der Grafik-Displays.
Bei Text-LCD-Displays kommen meistens der HD44780 Controller von Hitachi oder ein kompatibler Typ zum Einsatz. Dieser Controller unterstützt Displays mit bis zu 80 Zeichen. Gängige Displaygrößen sind: 8 × 1, 8 × 2, 16 × 1, 16 × 2, 20 × 2, 20 × 4, 40 × 2 Zeichen Displays (Spalten × Zeilen). Hat das Display mehr als 80 Zeichen, dann benötigt das Display 2 Controller und verhält sich nach außen zur Ansteuerung, wie 2 Displays (zusätzliche Enable Leitung)


BASCOM bietet grundsätzliche zwei Möglichkeiten an, ein LCD-Display ansteuert. Entweder es wird über einen Datenbus (BUS-Modus) oder über einzelne auswählbare bzw. konfigurierbare Pins eines Ports (PORT-Modus) angeschlossen. Der BUS-Modus ist nur dann möglich, wenn man z.B. auch einen externen Speicher an den AVR anschließen kann (Bus Interface). Dann teilen sich der externe Speicherbaustein und das LCD-Display die Leitungen. Nicht viele ATmega-Derivate besitzen solch einen BUS-Mode. Der ATmega8 z.B. hat keinen solchen Bus. Der ATmega128 besitzt dagegen diese Fähigkeit und wird weiter unten im Kapitel auch zur Inbetriebnahme verwendet.

LCD Grafik-Display
LCD Grafik-Display
Im PORT-Modus kann bei BASCOM konfiguriert werden, an welchen Pins das LCD-Display angerschlossen ist. Dafür benötigt dieser Modus mehr Programmspeicher im Controller.

Die Daten werden je nach Betriebsart bzw. Anschlussart über 8 oder 4 Controller-Pins übertragen. (8-Bit Modus bzw. 4-Bit Modus). Der 8-Bit Modus ist schneller, dafür werden im 4-Bit Modus nicht so viele Pins belegt.


Die normalen LCD-Befehle von BASCOM nutzen den R/W-Pin welchen die meisten LCD-Display bieten nicht. Unterschieden wird hier zwischen Ansteuerung mit Busy (I/O Mode) oder Ansteuerung ohne Busy (I/O Mode). Bei einer Ansteuerung ohne Busy wird einfach lange genug gewartet, so dass Bascom das LCD nicht auslesen muss. Das übernimmt aber BASCOM für uns, darum brauchen wir uns nicht zu kümmern. Im Zweifelsfall sind die notwendigen Wartezeiten in den Datenblättern der Displays beschrieben.

Der R/W-Pin muss nur dann beschaltet werden, wenn man in Bascom die LCD-Routinen einer Zusatz-Library, wie z.B. die LCD4BUSY-Library, nutzt. Achtung: Die Benutzung der Library setzt dann aber voraus, dass alle PIN's eines Ports beschaltet werden. Eine freie Pin-Wahl ist damit nicht mehr möglich.

Die Ansteuerung eines LCD läuft unter Bascom ähnlich wie die Ausgabe von Text mit dem Befehl PRINT. Anstelle mit PRINT für UART, sendet man den Text mit dem Befehl LCD an das Display. Zusätzlich gibt es noch einige weitere Befehle um den Cursor auf dem Display zu positionieren, das Display zu löschen usw. An dieser Stelle wird jedoch auf die BASCOM-Hilfe verwiesen.


Doch hier noch ein paar Sätze zu BASCOM und den Umgang mit LCD-Displays im Allgemeinen....

In BASCOM gibt es zwei Möglichkeiten ein LCD-Display zu konfigurieren und die Einstellungen vorzunehmen. Die erste Möglichkeit führt über die BASCOM-Oberfläche (IDE) selbst.
Über das Menu Option > Compiler > LCD können alle Daten des anzuschließenden LCD-Displays eingegeben werden. Die folgende Abbildung zeigt die Eingabe der erforderlichen Parameter.

BASCOM IDE
Die BASCOM IDE zur Einstellung der LCD Konfiguration

Die über das Menu Options vorgenommenen Einstellungen können durch Compilerdirektiven überschrieben werden. Code-Elemente im Listing haben damit immer Vorrang vor den Einstellungen in der IDE. In meinen Projekten gehe ich daher immer den Weg und konfiguriere das LCD-Display vollständig im Programmcode. Ich verlasse mich nicht auf die Einstellungen im Menu Options.

Konfigurations-Befehle im BASCOM-Source-Code sind:

Weiter bietet die BASCOM-IDE mittels LCD-Designer, einem grafischen Werkzeug, die Möglichkeit, eigene benutzerspezifische Zeichen zu entwerfen welche dann direkt im Source-Code eingebaut werden. Die folgende Abbildung zeigt dies am Beispiel eines Smilys:

BASCOM LCD Designer
Der BASCOM LCD Designer


Doch nun ist es genug mit einführenden Worten. Es wird Zeit, dass wir uns nun den einzelnen von mir ausprobierten und in Betrieb genommenen Display zuwenden ....


Link an den Anfang


Achtung Topinformationen - Wichtige Hinweise und Tipps

Achtung


Dieser Kapitelabschnitt ist ein buntes Sammelsurium an wichtigen Informationen bzw. Themen welche ich als wichtig erachte und welche ich euch allen nicht vorenthalten will.
Kommentare und Anmerkungen sind jederzeit, gerne auch via PN oder Kontaktforumlar willkommen.

Also los ....

Zeichensätze in Bascom
- font8x8.font
- font16x16.font
- etc.
  In vielen Beispielprogrammen, sowohl im Internet als auch in Büchern, werden in Verbindung mit Grafik-LCD-Displays verschiedene Schriften und Schriftarten, sogenannte Fonts, verwendet.
Mit dem Font Editor, welcher sich als Werkzeug in der BASCOM IDE befindet, kann man sich selbst so allerhand eigene Fonts erzeugen und dann auch in einer Font-Datei speichern. Das ist oft aber mit Kanonen aus Spatzen geschossen. Denn eigentlich will man ja nur kurz etwas ausprobieren.

Wenn man also nicht unbedingt einen eigenen Font designen und anlegen möchte, so empfielt es sich, die Fonts zu verwenden welche BASCOM schon von Haus aus mitbringt.
Per Default wird bei der Installation von BASCOM auch ein Sample-Verzeichnis angelegt in welchem sich ganz ganz viele Beispielprogramme zu eine Vielfalt von Theman finden. Und genau dort lassen sich auch eine Menge Fonts finden welche für das erste Programm und oft auch darüber hinauf komplett ausreichen.

Nun ist nur noch die Frage zu klären, wo sich das Sample-Verzeichnis befindet. Nun ja, das ist von Installation zu Installation unterschiedlich.
Prinzipiell gibt es dazu zwei Standard-Möglichkeiten. Nämlich das Programm-Verzeichnis in welchem BASCOM installiert ist, oder das Dokumentverzeichnis. Beides sind gute Adressen wo man suchen kann.
Das kann zum Beispiel so aussehen:
D:\Dokumente\MCS Electronics\BASCOM-AVR\Samples
C:\Users\Username\Dokumente\MCS Electronics\BASCOM-AVR\Samples

Wem dass schon zu viel ist der kann in BASCOM selbst im Menü "Datei" - "Öffnen" auf "Sample" klicken und gelangt so in das Sample Verzeichnis.

Link an den Anfang


EA DOG-M Displays von Electronic Assembly - 4-Bit PIN-Mode Ansteuerung

Allgemeines und Einleitung

In diesem ersten Kapitel zum EA DOG-M Display von Electronic Assembly widmen wir uns den LCD-Testdisplays dieser Serie. Die DOG-Serie von EA verfügt über eine ganze Reihe von Formen und Farben. Sie sind mir bei meinen Projekten bisher die liebsten Display gewesen.

Die Displays gibt es in den Ausführungen 1x8, 2x16 und 3x16, 4x20 sowie in den Farben Weiß, Gelb/Grün, Blau, Rot, Amber und Full-RGB. Das Display ist sehr schlank und mit 2mm sehr flach. Es kann mit den Betriebsspannungen 3,3V und 5V betrieben werden und sieht die Kontroller-Anbindungen 8-Bit, 4-Bit und SPI vor.

In diesem Kapitel beschäftigen wir uns aber zunächst nur mit der 4-Bit-Anbindung. Die Anbindung des Displays an den Kontroller und die Art der Ansteuerung unter BASCOM ist für alle die oben genannten Text-Display-Typen der DOG-Serie gleich. Einzig und alleinig die Angabe der Zeilen und Spalten im BASCOM-Source-Code unterscheidet sich.

Mit für diesen Display-Typ die häufigste Anbindungsart ist die 4-Bit Ansteuerung. Dabei werden die Display-Daten Nibble-weise in den Display Speicher übertragen. Das ist zwar etwas langsamer als im 8-Bit Mode, spielt aber kaum eine Rolle. Für diese 4-Bit Ansteuerung werden 7 Pin's des Controllers benötigt.


Bilder des in diesem Abschnitt bearbeiteten Displays:

LCD EA DOG-M-Serie Text-Display Bild 1
LCD EA DOG-M-Serie Text-Display - Bild 1

LCD EA DOG-M-Serie Text-Display Bild 2
LCD EA DOG-M-Serie Text-Display - Bild 2

LCD EA DOG-M-Serie Text-Display Bild 3
LCD EA DOG-M-Serie Text-Display - Bild 3

LCD EA DOG-M-Serie Text-Display Bild 4
LCD EA DOG-M-Serie Text-Display - Bild 4

Diese Displayserie wurde speziell für low-power Applikationen entwickelt. Erstmals ist der Betrieb eines Standard-Displays direkt an 3,3V und 5V möglich. Die optional erhältlichen LED-Beleuchtungen laufen je nach Beschaltung mit 3,3V oder auch mit 5V.
Der Preis des Displays liegt Anfang 2017 bei ca. 10 Euro ohne Hintergrundbeleuchtung.

Informationen zum Display:
- Das Display arbeitet mit einem ST 7036 Controller.
- Kompakte Abmessungen 55x27mm
- flach mit 2,0mm unbeleuchtet und 5,8mm mit Beleuchtung
- direktes Einlöten in Platine ohne zus. Montageaufwand
- 4-Bit, 8-Bit und SPI-Interface
- Temperaturbereich: -20 bis +70 °C
- Marke: Electronic Assembly
LCD EA DOG-M-Serie Text-Display Bild 5
LCD EA DOG-M-Serie Text-Display - Bild 5

Anschlussbelegung und Beschaltung

Das EA DOG-M Text-LCD-Display mit dem ST 7036 Display-Controller besitzt insgesamt 24 Pins bzw. Anschlüsse, wobei diese aufgrund ihrer Rasterposition von 1 bis 40 durchnummeriert sind. Die Pins 1-2 und 19-20 sind für die Hintergrundbeleuchtung welche optional gekauft und verlötet werden kann.

Wie die folgende Abbildung zeigt, findet der eigentliche Anschluss des Displays an den Kontroller mittels Pins 21-40 statt.

Pinbelegung und Abmessung des EA DOG-M LCD-Displays
Pinbelegung und Abmessung des EA DOG-M LCD-Displays


Je nach Betriebsart der Busanbindung und Wahl der Spannungsversorgung variiert die Beschaltung im Detail, was in der folgenden Abbildung dargestellt ist.

Beschaltungsvarianten des EA DOG-M LCD-Displays
Beschaltungsvarianten des EA DOG-M LCD-Displays


Wir wählen die 4-Bit-Betriebsart über GPIO-Pins des ATmega8 und eine Spannungsversorgung von +5V was zu folgender Standardbeschaltung am Beispiel ATmega8 führt:

Beschaltung des EA DOG-M LCD-Displays mit ATmega8
Beschaltung des EA DOG-M LCD-Displays mit ATmega8


In allen meinen Projekten beschalte ich die Hintergrundbeleuchtung nicht direkt mit einem Vorwiderstand gegen Vcc. Um die Helligkeit des Displays von der SW aus steuern zu können wird ein Timer eingesetzt welcher eine PWM erzeugt. Mittels PWM wird eine BC-547B Transistorstufe geschaltet die die Hintergrundbeleuchtung treibt. An dieser Stelle verweise ich auf die Projektdokumentation meiner Projekte.


Die folgenden zwei Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiersteckbrett:

Laboraufbau 1 Laboraufbau 2
Umsetzung am Experimentiersteckbrett - Bild 1 Umsetzung am Experimentiersteckbrett - Bild 2

Befehlssatz und Ansteuerung

Der ST7036 LCD Controller besitzt 3 Speicher:
Das DDRAM (Display Data RAM) Hier werden die anzuzeigenden Daten geschrieben bzw. gespeichert.
Das CGROM (Character Generator ROM) enthält die Zeichen in Form von 5x8 Punktmatrizen.
Im CGRAM (Character Generator RAM) können acht benutzerdefinierte Zeichen 5x8 Pixel abgelegt werden.

Das LCD-Display stellt die folgenden Befehle zur Verfügung:

Befehlssatz des EA DOG-M LCD-Displays
Befehlsübersicht des EA DOG-M LCD-Displays


Die Tabelle zeigt das Character-Set des Displays inkl. aller Sonderzeichen:

Zeichensatz des EA DOG-M LCD-Displays
Zeichensatz des EA DOG-M LCD-Displays


Ansteuerung und Beispielprogramm unter BASCOM

Unter BASCOM sieht die Initialisierung des EA DOG-M Displays wie folgend aus. Mit der Initialisierung werden zur Demonstration für dieses Display benutzerspezifische Symbole definierte welche später auf dem Display angezeigt werden. Mit den folgenden Zeilen unter BASCOM sind eigentlich bereits die gesamte Konfiguration und Initialisierung sowie das definieren von 2 benutzerspezifischen Zeichen vorgenommen:

' ----- LCD Display -----

' Konfiguration LCD Display
Config Lcdpin = Pin , Db4 = Db4_pin , Db5 = Db5_pin , Db6 = Db6_pin , Db7 = Db7_pin , = E_pin , Rs = Rs_pin
Config Lcd = 16 * , Chipset = Dogm162v5                   ' DOG-M Treiber laden
Config Lcdbus = 4                                           ' LCD arbeitet über 4-Bit
Initlcd                                                     ' LCD initialisieren
Waitms 100                                                  ' 100ms nach Init warten
Cursor Off Noblink                                          ' Blinkenden Cursor abschalten

' Definition benutzerdefinierter Zeichen
' LCD-Zeichen linker Sockel des Galgens
Deflcdchar , 16 , 16 , 16 , 16 , 16 , 16 , 30 , 30
' LCD-Zeichen linke obere Ecke des Galgens
Deflcdchar , 15 , , 10 , 12 , , , , 8
' LCD-Zeichen rechter Galgen ohne Männchen
Deflcdchar , 28 , , 32 , 32 , 32 , 32 , 32 , 32
' LCD-Zeichen rechter Galgen mit Kopf
Deflcdchar , 28 , , , 14 , 17 , 17 , 14 , 4
' LCD-Zeichen Bauch
Deflcdchar , , , , , 32 , 32 , 32 , 32
' LCD-Zeichen Bauch mit linkem Beine
Deflcdchar , , , , , , 16 , 16 , 32
' LCD-Zeichen Bauch mit beiden Beinen
Deflcdchar , , , , , 10 , 17 , 17 , 32
' LCD-Zeichen kompletter Männchen-Körper
Deflcdchar , 14 , 21 , 21 , , 10 , 17 , 17 , 32

Eine Spezialität diese Displays ist der via SW einstellbare Kontrast. Da Bascom hier keine eigenen Funktionen zur Verfügung stellt wurde auf Inline-Assembler zurückgegriffen um die 6-Bit-Information des Kontrasts an das Display zu übertragen.

'------------------------------------------------------------------------------
' LCD - Gosub-Routine: Lcd_contrast_set
' Routine berechnen neue Kontrastwerte und steuert direkt den
' Kontroller des Display an.
' Aufgrund von 6 Bit sind nur Kontrastwerte zwischen 0 und 63 möglich!
'------------------------------------------------------------------------------
Lcd_kontrast_set:                                           ' Kontrasteinstellung Display

   ' ----- Programmcode -----

   ' Verarbeitung des Kontrastwertes für High-Byte und Low-Byte
   Temp_byte_1 = Lcd_kontrastwert And &B00001111
   Temp_byte_1 = Temp_byte_1 + &B01110000

   Temp_byte_2 = Lcd_kontrastwert
   Shift Temp_byte_2 , Right , 4
   Temp_byte_2 = Temp_byte_2 And &B00000011
   Temp_byte_2 = Temp_byte_2 + &B01010100

   ' Instruction Table 1 einstellen [0,1]
   _temp1 = &B00101001
   !rCall _Lcd_control

   ' Tempvar_1 = &B0111xxxx für Kontrast Set Instruction Table 1 - Low Byte
   _temp1 = Temp_byte_1
   !rCall _Lcd_control

   ' Temovar_2 = &B010101xx für Kontrast Set Instruction Table 1 - High Byte
   _temp1 = Temp_byte_2
   !rCall _Lcd_control

   ' Zurückschalten auf Instruction Table 0 [0,0]
   _temp1 = &B00101000
   !rCall _Lcd_control

Return
'-- End Lcd_kontrast_set ------------------------------------------------------

Die Port- bzw- Pin-Informationen können direkt mit dem Config-Befehlt angegeben werden oder wie hier im Beispiel mit Hilfe von Aliases:

' ----- LCD-Display -----
' LCD-Display
Db4_pin Alias Portd.0                                       ' GPIO für LCD Pin4
Db5_pin Alias Portd.1                                       ' GPIO für LCD Pin5
Db6_pin Alias Portd.2                                       ' GPIO für LCD Pin6
Db7_pin Alias Portd.3                                       ' GPIO für LCD Pin7
E_pin Alias Portd.4                                         ' GPIO für LCD E
Rs_pin Alias Portd.5                                        ' GPIO für LCD RS


Das vollständige Listing zum Download sowie die Datenblätter und die Dokumentation zum LCD-Display:


Eagle-Datei Schematic Eagle-Datei Schematic für das LCD Display EA DOG-M BASCOM Sourcecode BASCOM Source-Code für das LCD Display EA DOG-M
Sitronix Datasheet ST7036 DOT Matrix Controller Sitronix Datasheet ST7036 DOT Matrix Controller Datenblatt EA DOG-M Series Module Datasheet
BASCOM Source-Code im RTF-Format BASCOM Source-Code im RTF-Format    


Link an den Anfang


HD44780 1602 LCD 2x16 - 4-Bit PIN-Mode Ansteuerung ohne Busy (I/O Mode)

Allgemeines und Einleitung

Mit die häufigste Anbindungsart ist die 4-Bit Ansteuerung. Dabei werden die Display-Daten Nibble-weise in den Display Speicher übertragen. Das ist zwar etwas langsamer als im 8-Bit Mode, spielt aber kaum eine Rolle. Für diese Ansteuerung werden 6 Pin's des Controllers benötigt. Die R/W Leitung des Displays kann dabei einfach auf GND gelegt werden. Auf die Busy-Bit-Abfrage wird bei dieser Beschaltungsart verzichtet. Die im folgenden dargestellte Beschaltung hat die R/W-Leitung zwar beschaltet, im BASCOM-Source-Code wird diese Leitung aber fest auf High geschaltet.

Bilder des in diesem Abschnitt bearbeiteten Displays:

LCD HD44780 1602 16x2 Bild 1
LCD HD44780 1602 16x2 - Bild 1

LCD HD44780 1602 16x2 Bild 2
LCD HD44780 1602 16x2 - Bild 2

LCD HD44780 1602 16x2 Bild 3
LCD HD44780 1602 16x2 - Bild 3

LCD HD44780 1602 16x2 Bild 4
LCD HD44780 1602 16x2 - Bild 4

Das hier abgebildete Display ist ein HD44780 1602 LCD Modul mit einer Display Anzeige von 2x16 Zeichen und Hintergrundbeleuchtung.
Der Stückpreis des Display lag Ende 2014 bei 2,22 Euro bei Amazon.

Informationen zum Display:
- 16 Zeichen je Zeile, 2 zeilig
- Weiter Betrachtungswinkel und hoher Kontrast
- Industriestandard-HD44780 äquivalenter LCD-Kontroller
- Farbe des Hindergrund: Blau
- Farbe der Schrift: Weiß
- EAN: 0889081214168
- Marke: SupplyEU
LCD HD44780 1602 16x2 Bild 5
LCD HD44780 1602 16x2 - Bild 5

Anschlussbelegung und Beschaltung

Das Text-LCD-Display mit dem HD44780 Display-Controller hat einen genormten 16 poligen Anschluss. 14 polig ist der Anschluss des reinen LCD-Displays ohne Hintergrundbeleuchtung. Pin 15 und 16 ist die Anode und Kathode für die Hintergrundbeleuchtung.

Pinbelegung des HD44780 LCD-Displays
Pinbelegung des HD44780 LCD-Displays


Damit ergibt sich die folgende Standardbeschaltung am Beispiel ATmega8:

Beschaltung des HD44780 LCD-Displays mit ATmega8
Beschaltung des HD44780 LCD-Displays mit ATmega8


In allen meinen Projekten beschalte ich die Hintergrundbeleuchtung nicht direkt mit einem Vorwiderstand gegen Vcc. Um die Helligkeit des Displays von der SW aus steuern zu können wird ein Timer eingesetzt welcher eine PWM erzeugt. Mittels PWM wird eine BC-547B Transistorstufe geschaltet die die Hintergrundbeleuchtung treibt. An dieser Stelle verweise ich auf die Projektdokumentation meiner Projekte.


Die folgenden zwei Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiersteckbrett:

Laboraufbau 1 Laboraufbau 2
Umsetzung am Experimentiersteckbrett - Bild 1 Umsetzung am Experimentiersteckbrett - Bild 2

Befehlssatz und Ansteuerung

Der HD44780 LCD Controller besitzt 3 Speicher:
Das DDRAM (Display Data RAM) Hier werden die anzuzeigenden Daten geschrieben bzw. gespeichert.
Das CGROM (Character Generator ROM) enthält die Zeichen in Form von 5x8 oder 5x10 Punktmatrizen.
Im CGRAM (Character Generator RAM) können acht benutzerdefinierte Zeichen 5x8 Pixel oder vier 5x10 Pixel abgelegt werden.

Das LCD-Display stellt die folgenden Befehle zur Verfügung:

Befehlssatz des HD44780 LCD-Displays
Befehlsübersicht des HD44780 LCD-Displays

Befehlssatz des HD44780 LCD-Displays
Bedeutung der Steuerbits beim HD44780 LCD-Displays


Ansteuerung und Beispielprogramm unter BASCOM

Mit den folgenden Zeilen unter BASCOM sind eigentlich bereits die gesamte Konfiguration und Initialisierung sowie das definieren von 2 benutzerspezifischen Zeichen vorgenommen:

' ----- LCD Display -----

' RW-Ping auf LOW=GND schalten (wird nicht weiter benötigt)
Config Rw_pin = Output
Rw = Pegel_low

' Konfiguration LCD Display

#if Ide_konfigurationsmodus
   Config Lcdpin = Pin , Db4 = Db4_pin , Db5 = Db5_pin , Db6 = Db6_pin , Db7 = Db7_pin , = E_pin , Rs = Rs_pin
   Config Lcdbus = 4                                        ' LCD arbeitet über 4-Bit
   Config Lcd = 16 * 2                                      ' Display ist 2-zeilig mit 16 Zeichen
#endif

Initlcd                                                     ' LCD initialisieren
Waitms 100                                                  ' 100ms nach Init warten
Cursor Off Noblink                                          ' Blinkenden Cursor abschalten

' Definition benutzerdefinierter Zeichen
Deflcdchar , 32 , 32 , 10 , 10 , 32 , , 17 , 14         ' Smily
Deflcdchar , 21 , 10 , 10 , 21 , 21 , 10 , 10 , 21        ' Muster

Cls                                                         ' Clear Screen

Die Port- bzw- Pin-Informationen können direkt mit dem Config-Befehlt angegeben werden oder wie hier im Beispiel mit Hilfe von Alias:

' ----- LCD-Display -----
' LCD-Display
Db4_pin Alias Portd.4                                       ' GPIO für LCD Pin4
Db5_pin Alias Portd.5                                       ' GPIO für LCD Pin5
Db6_pin Alias Portd.6                                       ' GPIO für LCD Pin6
Db7_pin Alias Portd.7                                       ' GPIO für LCD Pin7


Rs_pin Alias Portb.0                                        ' GPIO für LCD RS
E_pin Alias Portb.2                                         ' GPIO für LCD E

' Der RW Pin kann auch direkt mit GND verbunden werden da BASCOM nicht vom
' LCD lesen kann. Hierzu wäre eine 3rd-Party-LIB notwendig.
Rw_pin Alias Pinb.1                                         ' GPIO für LCD RW
Rw Alias Portb.1


Nun hier aber noch das vollständige Listing zum Download sowie die Datenblätter und die Dokumentation zum LCD-Display:


Eagle-Datei Schematic Eagle-Datei Schematic für das LCD Display HD44780 1602 BASCOM Sourcecode BASCOM Source-Code für das LCD Display HD44780 1602
Hitachi Datasheet HD44780U (LCD-II) Hitachi Datasheet HD44780U (LCD-II) Datenblatt ERM1602-6 Series Character Module Datasheet
BASCOM Source-Code im RTF-Format BASCOM Source-Code im RTF-Format    


Link an den Anfang


HD44780 1602 LCD 2x16 - 8-Bit PIN-Mode Ansteuerung ohne Busy (I/O Mode)

Allgemeines und Einleitung

Neben der 4-Bit PIN-Mode Anbindung gibt es auch die 8-Bit PIN-Mode Anbindung. Dabei werden die Display-Daten als ganzes Byte in den Display Speicher übertragen. Für diese Ansteuerung werden 10 Pin's des Controllers benötigt. Die R/W Leitung des Displays kann dabei einfach auf GND gelegt werden. Auf die Busy-Bit-Abfrage wird bei dieser Beschaltungsart verzichtet.

Im Kapitel oben wurde die 4-Bit PIN-Mode Anbindung bereits schon eingehend beschrieben. Die im folgenden dargestellte Beschaltung hat die R/W-Leitung zwar beschaltet, im BASCOM-Source-Code wird diese Leitung aber fest auf High geschaltet.

Das Display ist unverändert (daher gibt es hier auch keine Bilder) und ich gehe in diesem Kapitel nur auf die Unterschiede zwischen der 4-Bit Anbindung und der 8-Bit Anbindung ein.

Anschlussbelegung und Beschaltung

Das Text-LCD-Display mit dem HD44780 Display-Controller hat einen genormten 16 poligen Anschluss der im obigen Kapitel beschrieben ist.
14 polig ist der Anschluss des reinen LCD-Displays ohne Hintergrundbeleuchtung. Pin 15 und 16 ist die Anode und Kathode für die Hintergrundbeleuchtung.

Der Unterschied zwischen der 4-Bit und der 8-Bit Beschaltung ist, dass bei der 8-Bit Anbindung alle 8 Datenleitungen des Displays an einen kompletten Port des ATmega angeschlossen werden.
Diese Art der Anbindung ist nicht mit dem BUS-Mode zu verwechseln. BUS-Mode funktioniert nur bei speziellen ATmega-Varianten mit externem Speicherinterface. Der 8-Bit PIN-Mode funktioniert mit allen ATmega-Typen.

Die folgende Standardbeschaltung am Beispiel ATmega8 zeigt die 8-Bit PIN-Mode-Beschaltung:

Beschaltung des HD44780 LCD-Displays mit ATmega8 im 8-Bit PIN-Mode
Beschaltung des HD44780 LCD-Displays mit ATmega8 im 8-Bit PIN-Mode


In allen meinen Projekten beschalte ich die Hintergrundbeleuchtung nicht direkt mit einem Vorwiderstand gegen Vcc. Um die Helligkeit des Displays von der SW aus steuern zu können wird ein Timer eingesetzt welcher eine PWM erzeugt. Mittels PWM wird eine BC-547B Transistorstufe geschaltet die die Hintergrundbeleuchtung treibt. An dieser Stelle verweise ich auf die Projektdokumentation meiner Projekte.


Die folgenden zwei Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiersteckbrett. Das erste Bild zeigt die Umsetzung mit einem ATmega8. Das zweite Bild zeigt die Umsetzung mit einem ATmega128 auf meinem eigenen Eva-Board zur Kontrolle der Implementierung und Funktion. Beide Umsetzung unterscheiden sich nur durch die Wahl des ATmegas und durch die Auswahl der verwendeten PIN's.

Laboraufbau ATmega8 Laboraufbau ATmega128
Umsetzung am Experimentiersteckbrett - ATmega8 Umsetzung am Experimentiersteckbrett - ATmega128

Befehlssatz und Ansteuerung

Hier gibt es keinen nennenswerten Unterschied zur 4-Bit-Beschaltung.


Ansteuerung und Beispielprogramm unter BASCOM

Mit den folgenden Zeilen unter BASCOM sind auch im 8-Bit PIN-Mode die wesentlichen Konfigurationen und Initialisierungen sowie das definieren von 2 benutzerspezifischen Zeichen erledigt.
Der einige wesentliche Unterschied ist die Anwendung des Config Lcdpin Befehls und des Config Lcdbus Befehls. Details siehe unten:

' ----- LCD Display -----

' RW-Ping auf LOW=GND schalten (wird nicht weiter benötigt)
Config Rw_pin = Output
Rw = Pegel_low

' Konfiguration LCD Display

#if Ide_konfigurationsmodus

   Config Lcdpin = Pin , Port = Portd , = E_pin , Rs = Rs_pin
   Config Lcdbus = 8                                        ' LCD arbeitet über 8-Bit

   Config Lcd = 16 * 2                                      ' Display is 2-zeilig mit 16 Zeichen

#endif

Initlcd                                                     ' LCD initialisieren
Waitms 100                                                  ' 100ms nach Init warten
Cursor Off Noblink                                          ' Blinkenden Cursor abschalten

' Definition benutzerdefinierter Zeichen
Deflcdchar , 32 , 32 , 10 , 10 , 32 , , 17 , 14         ' Smily
Deflcdchar , 21 , 10 , 10 , 21 , 21 , 10 , 10 , 21        ' Muster

Cls                                                         ' Clear Screen

Die Port- bzw- Pin-Informationen können direkt mit dem Config-Befehlt angegeben werden oder wie hier im Beispiel mit Hilfe von Aliases:

' ----- LCD-Display -----
' LCD-Display
Db0_pin Alias Portd.0                                       ' GPIO für LCD Pin4
Db1_pin Alias Portd.1                                       ' GPIO für LCD Pin4
Db2_pin Alias Portd.2                                       ' GPIO für LCD Pin4
Db3_pin Alias Portd.3                                       ' GPIO für LCD Pin4
Db4_pin Alias Portd.4                                       ' GPIO für LCD Pin4
Db5_pin Alias Portd.5                                       ' GPIO für LCD Pin5
Db6_pin Alias Portd.6                                       ' GPIO für LCD Pin6
Db7_pin Alias Portd.7                                       ' GPIO für LCD Pin7


Rs_pin Alias Portc.5                                        ' GPIO für LCD RS
E_pin Alias Portc.4                                         ' GPIO für LCD E

' Der RW Pin kann auch direkt mit GND verbunden werden da BASCOM nicht vom
' LCD lesen kann. Hierzu wäre eine 3rd-Party-LIB notwendig.
Rw_pin Alias Pinc.3                                         ' GPIO für LCD RW
Rw Alias Portc.3


Nun hier aber noch das vollständige Listing zum Download sowie die Datenblätter und die Dokumentation zum LCD-Display:


Eagle-Datei Schematic Eagle-Datei Schematic für das LCD Display HD44780 1602    
BASCOM Sourcecode ATmega8 8-Bit PIN-Mode BASCOM Source-Code für das LCD Display HD44780 1602 ATmega8 8-Bit PIN-Mode BASCOM Source-Code im RTF-Format ATmega8 8-Bit PIN-Mode BASCOM Source-Code im RTF-Format ATmega8 8-Bit PIN-Mode
BASCOM Sourcecode ATmega128 8-Bit PIN-Mode BASCOM Source-Code für das LCD Display HD44780 1602 ATmega8 8-Bit PIN-Mode BASCOM Source-Code im RTF-Format ATmega128 8-Bit PIN-Mode BASCOM Source-Code im RTF-Format ATmega128 8-Bit PIN-Mode
Hitachi Datasheet HD44780U (LCD-II) Hitachi Datasheet HD44780U (LCD-II) Datenblatt ERM1602-6 Series Character Module Datasheet


HD44780 1602 LCD 2x16 - 8-Bit Ansteuerung (Bus Mode)

Allgemeines und Einleitung

Bisher habe ich den BUS-Mode zur Ansteuerung dieses Displays mit dem ATmega128 noch nicht zum Laufen bekommen. Schaltbilder die im Internet verfügbar sind wurden ausprobiert aber ohne Erfolg. Die Schaltung "LCD am AT90S8515 im Busmode" von Claus Kühnel wurde am ATmega128 ausprobiert, doch bekomme ich diese Version auch nicht funktionsfähig. In einem weiteren Schritt werde ich versuchen die Ansteuerung mit einem ATmega8515 umzusetzen. Auf das Ergebnis bin ich gespannt.

Meine aktuelle Arbeitsannahme ist, dass die Bus-Zykluszeiten und damit das Timing selbst bei 1 MHz Clock zu schnell für das Display ist. Diese Arbeitsannahme gilt es aber noch mit Oszi zu bestätigen.

Anschlussbelegung und Beschaltung

Display-Beschaltung bisher nicht Funktionsfähig!

Befehlssatz und Ansteuerung

Display-Beschaltung bisher nicht Funktionsfähig!

Ansteuerung und Beispielprogramm unter BASCOM

Display-Beschaltung bisher nicht Funktionsfähig!


EA DOGM128x-6 - SPI Mode Ansteuerung - Betriebsspannung 3V3

Allgemeines und Einleitung

In der Vergangenheit habe ich schon so einige Displays in meinen Projekten verwendet und verarbeitet, aber noch nie hat es mir ein Display so schwer gemacht wie das Grafikdisplay der DOGM Grafik Serie 128x64 Pixel von Electronic Assembly.
Die Herausforderung bestand in der relativ späten Unterstützung des Displays durch BASCOM also auch durch die wenige Verbreitung in Projekten. Dadurch ist das speziell für BASCOM vorhandene Wissen im Internet sehr sehr eingeschränkt.

Obwohl es in der Zwischenzeit für BASCOM die Bibliothek "glcdeadogm128x6.lbx" gibt funktionieren gewohnte Funktionen wie das Setzen von Cursor, das Definieren eigener Zeichen oder das Zeichnen von Punkten, Linien und Kreisen nicht.

Das Grafikdisplay gibt es mit einer Auflösung von 128x64 Pixel und in den Farben Weiss, Gelb/Grün, Blau, Schwarz. Eine Sonderversion auch als nicht beleuchtetes reflektiv Display.

Als LCD Controller/Driver setzt EA den ST7565R ein, welcher über SPI an den Microcontroller angeschlossen wird. Damit beginnt schon das erste Problem, denn Daten können nur an das Display gesendet, aber nicht vom Display gelesen werden.
Um Grafiken wie Linien usw. mit dem Display darstellen zu können bedarf es einen lokalen Speicher im RAM, der quasi als Bildschirmspeicher fungiert und mit dem gearbeitet werden kann. Das stellt besonders kleinere ATmegas vor unlösbare Probleme da für das Display mit 128x64 Pixel 1 KByte Arbeitsspeicher vorzusehen ist.
Ein weiteres Problem was zu beachten ist, ist die Spannungsversorgung von 3,3V im Vergleich zu den sonst üblichen 5V. Entweder wird der Microcontroller also auch wie in diesem Beispiel über 3,3V betrieben oder es kommen Level-Shifter wie z.B. der Baustein 4050N zum Einsatz.
ArrayEnigma
ArrayEnigma

In diesem Kapitel beschäftigen wir uns also mit der SPI-Anbindung des Displays und der Ansteuerung des Displays unter BASCOM.

Es werden BASCOM eigene Funktionen die aus der Library stammen verwendet, wie auch Befehlssequenzen aufgebaut, die auf dem Befehlssatz des Controllers basieren.
Dabei geht es um die reine Textansteuerung genauso wie um das Laden von Bilder oder die Steuerung des Grafikspeichers.

Für das Thema Bilder besitzt BASCOM einen eigenen Grafik-Konverter mittels dem es möglich ist, BMP-Dateien in BGF-Dateien und damit in ein proprietäres BASCOM Format zu wandeln.
Anwender behaupten, dass einmal in BGF-Format gewandelte Grafiken nicht mehr verarbeitet oder geladen werden können. Ich habe das Problem dadurch gelöst, in dem ich das Tool ArrayEnigma der polnischen Entwickler BARTek projects verwende.

Auf das Display Layout und weitere Details gehe ich an dieser Stelle nicht ein, sondern verweise auf das Produktdatenblatt von EA sowie auf das Controllerdatenblatt von Sitronix.

Für die Anbindung des Displays an den ATmega werden 5 Pin's des Controllers benötigt.

Bilder des in diesem Abschnitt bearbeiteten Displays:

GLCD EA DOGM128x-6 Bild 1
GLCD EA DOGM128x-6 Bild 1

Diese neue Displayserie wurde speziell für low-power Handheld Applikationen entwickelt. Erstmals ist der Betrieb eines Standard-Displays direkt an 3,3V möglich! Auch die optional erhältlichen LED-Beleuchtungen laufen je nach Beschaltung mit 3,3V oder auch mit 5V.
Kompakt mit 55x27mm bei Standardschriftgröße 12mm (1x8)
Flach mit 2,0 mm unbeleuchtet und 5,8 mm mit Beleuchtung
Direktes Einlöten in Platine ohne zus. Montageaufwand

Informationen zum Display:
- 3,3V DOG Modul Serie
- Beleuchtbarer Hintergrund
- Unterschiedlichen Farben
- 3,3V LED Beleuchtung
- Auflösung
- SPI Interface (4-Draht)

GLCD EA DOGM128x-6 Bild 2
GLCD EA DOGM128x-6 Bild 2

Anschlussbelegung und Beschaltung

Das Grafik-LCD-Display mit dem ST7565R Display-Controller hat ein serielles SPI-Interface mit 4 Anschlussleitungen. Neben der Anbindung via SPI sind noch einige weitere PIN's zu beschalten welche für die Spannungsversorgung und die Hintergrundbeleuchtung benötigt werden.

Pinbelegung des EA DOGM128x-6 Grafik-LCD-Displays
Pinbelegung des EA DOGM128x-6 Grafik-LCD-Displays



Je nach Betriebsart bzw. Wahl der Spannungsversorgung variiert die Beschaltung im Detail, was in der folgenden Abbildung dargestellt ist.

Spannungsbeschaltung des EA DOGM128x-6 Grafik-LCD-Displays
Spannungsbeschaltung des EA DOGM128x-6 Grafik-LCD-Displays



Die Abmessungen des Displays und Daten zur Hintergrundbeleuchtung:

Abmessungen und Hintergrundbeleuchtung des EA DOGM128x-6 Grafik-LCD-Displays
Abmessungen und Hintergrundbeleuchtung des EA DOGM128x-6 Grafik-LCD-Displays



Die folgende Beschaltung am Beispiel ATmega8 zeigt die serielle SPI-Beschaltung des Displays:

Beschaltung des EA DOGM128x-6 Grafik-LCD-Displays
Beschaltung des EA DOGM128x-6 Grafik-LCD-Displays


In diesem Beispiel habe ich die Hintergrundbeleuchtung - entgegen allen meinen anderen Projekten bei denen die Beschaltung der Hintergrundbeleuchtung mittels PWM ausgeführt ist - direkt mit einem Vorwiderstand gegen Vcc umgesetzt. Um die Helligkeit des Displays von der SW aus steuern zu können kann ein Timer eingesetzt werden welcher eine PWM erzeugt. Mittels PWM wird eine BC-547B Transistorstufe geschaltet die die Hintergrundbeleuchtung treibt.


Die folgenden Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiersteckbrett. Die ersten drei Bilder zeigen das Display in jeweils drei unterschiedlichen Betriebsmodi (Text, Bild und Grafik). Das letzte Bild zeigt die Umsetzung mit einem ATmega8 auf einem Experimentiersteckbrett.

EA DOGM128 mit Text EA DOGM128 mit Bilddarstellung (BGF) EA DOGM128 mit Grafik
EA DOGM128 mit Text EA DOGM128 mit Bilddarstellung (BGF) EA DOGM128 mit Grafik

  Umsetzung am Experimentiersteckbrett - ATmega8  
  Umsetzung am Experimentiertsteckbrett - ATmega8  


Befehlssatz und Ansteuerung

Der ST7565 GLCD Controller besitzt nur einen RAM Speicher in der Größe 65x132 = 8580 Bits. Es existiert eine direkt 1-zu-1 Beziehung zwischen den LCD-Display Pixels und den internen RAM Bits.

Das GLCD-Display stellt die folgenden Befehle zur Verfügung:

Befehlssatz des EA DOGM128 GLCD-Displays
Befehlsübersicht des EA DOGM128 GLCD-Displays



Ansteuerung und Beispielprogramm unter BASCOM

Damit in BASCOM das EDOG128 Display grundsätzlich funktioniert, ist das Einbinden einer speziell für das Display vorgesehenen Bibliothek wichtig:

' Hier wird die spezielle Grafik-LIB von BASCOM geladen
$lib "glcdeadogm128x6.lbx"

Die Port- bzw- Pin-Informationen können direkt mit dem Config-Befehlt angegeben werden oder wie hier im Beispiel mit Hilfe von Alias:

' ----- LCD-Display -----
' LCD-Display
Glcd_cs1 Alias PORTD.4                                      ' GPIO PD4
Glcd_a0 Alias PORTD.7                                       ' GPIO PD7
Glcd_si Alias PORTD.3                                       ' MOSI
Glcd_sclk Alias PORTD.5                                     ' SCK
Glcd_rst Alias PORTD.5                                      ' GPIO PD5

Die eigentliche Initialisierung des Display findet mit dem Config-Befehlt statt (im Beispiel wird auch ein FONT geladen):

' ----- LCD Display -----

' Konfiguration LCD Display
Config Graphlcd = 128 * 64eadogm , Cs1 = Glcd_cs1 , A0 = Glcd_a0 , Si = Glcd_si , Sclk = Glcd_sclk , Rst = Glcd_rst


Initlcd                                                     ' LCD Initialisieren (normal beim ersten LCD Zugriff automatisch)
Cls                                                         ' Display löschen


Setfont Font8x8tt                                           ' Kleiner FONT laden


Bilder im BGF-Fileformat sowie Font-Dateien werden mit entsprechenden Kommandos am Ende des Programmcodes nach dem END gerladen:

' ------------------------------- Grafiken für das GLCD -----------------------

'include the picture data
Picture:
$bgf "BASCOM.bgf"

' ------------------------------- FONT's für das GLCD -------------------------


' Include Font nach dem END und damit nach dem Programmcode damit nicht FONT-
' Data als Code interpretiert wird (sollte ganz am Ende stehen)
$include "font8x8TT.font"



Das vollständige Listing zum Download sowie die Datenblätter und die Dokumentation zum LCD-Display:


Eagle-Datei Schematic Eagle-Datei Schematic für das GLCD Display EA DOGM128x6    
BASCOM Sourcecode GLCD Display EA DOGM128x6 BASCOM Source-Code für das GLCD Display EA DOGM128x6 mit ATmega8 BASCOM Source-Code im RTF-Format EA DOGM128 mit ATmega8 BASCOM Source-Code im RTF-Format EA DOGM128 mit ATmega8
EA Datasheet DOGM128x6 EA Datasheet DOGM128x6 Datasheet Sitronix ST7565R LCD Controller/Driver Datasheet Sitronix ST7565R LCD Controller/Driver


EA DOGM128x-6 - SPI Mode Ansteuerung - Betriebsspannung 5V

Allgemeines und Einleitung

Für dieses Kapitel gelten dieselben Informationen und Daten wie beim Kapitel EA DOGM128x-6 - SPI Mode Ansteuerung - Betriebsspannung 3V3.

Der Unterschied zwischen einer Betriebsspannung von 3V3 und 5V liegt einzig uns alleinig in der Harwarebeschaltung und der zusätzlichen Verwendung eines Pegelwandlers.
Als Pegelwandler kommt der Baustein M74HC4050B1 zum Einsatz. Bei diesem Baustein handelt es sich um einen Hex Buffer/Converter der mit einer Betriebsspannung von 2-6 Volt betrieben werden kann.
Mittels dieses Buffers werden die 5V Signale vom Prozessor auf 3,3V konvertiert. Dazu muss der Baustein selbst an der Versorgungsspannung des Displays mit 3,3V (3V3) aufgeschaltet sein.

Im Folgenden ist daher nur der Schaltplan vorhanden. Programm, Initialisierung uns sonstige Daten sind gleich wie bei der 3V3 Variante.

Anschlussbelegung und Beschaltung

Die folgende Beschaltung am Beispiel ATmega8 zeigt die serielle SPI-Beschaltung des Displays mit einer Betriebsspannung von 5V:

Beschaltung des EA DOGM128x-6 Grafik-LCD-Displays - Betriebsspannung 5V
Beschaltung des EA DOGM128x-6 Grafik-LCD-Displays - Betriebsspannung 5V



Das folgenden Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiersteckbrett.

  Umsetzung am Experimentiersteckbrett - ATmega8  
  Umsetzung am Experimentiersteckbrett - ATmega8  

Befehlssatz und Ansteuerung

Ansteuerung und Beispielprogramm unter BASCOM

Siehe Kapitel EA DOGM128x-6 - SPI Mode Ansteuerung - Betriebsspannung 3V3

Hier noch die Eagle-Datei zum Download:

Eagle-Datei Schematic Eagle-Datei Schematic für das GLCD Display EA DOGM128x6 - Betriebsspannung 5V    


TG12864B Grafik-Display 128x64 (kompatibel zu KS108) - 8-Bit Bus Ansteuerung

Allgemeines und Einleitung

Einfacher Einstieg in die Elektronik mit AVR-Mikrocontroller und BASCOM
AVR-BASCOM-Buch
Die Inspiration zum Einsatz dieses Display kam über das Buch „Einfacher Einstieg in die Elektronik mit AVR-Mikrocontroller und BASCOM“ von Stefan Hoffmann.
Dort, speziell im Kapitel über Grafik-Displays und deren Ansteuerung, kommt das Grafikdisplay mit dem KS108 Chipsatz zum Einsatz. Weil ich das Buch selbst besitze - ich hatte es von einem sympahtischen Herrn geschenkt bekommen - und ich die beschriebenen Beispielprogramme selbst einmal ausprobieren wollte, wurde das Display kurzfristig bei Pollin beschafft und Schaltung aufgebaut.

Im Folgenden beziehe ich mich mit auf obiges genanntes Buch. Ich habe jedoch zur Darstellung der wichtigen Code-Elemente und vor allem wegen dem Download des gesamten Programms letztlich eine eigene Implementierung gewählt welche ich hiermit auch allen Usern zur Verfügung stellen möchte.

Vielen Dank an den Autor Stefan Hoffmann, mit welchem ich Kontakt hatte und von welchem ich die Erlaubnis zu Zitaten und zur Verwendung von Auszügen in diesem Kapitel erhalten habe.

Für die erste Inbetriebnahme des Displays dienten mir persönlich die Beispielprogramme aus dem Buch auf welches ich an dieser Stelle auch verweise.
Ausprobiert und mit dem Display getestet wurden die Programme "Grafikdisplay Basis", "Zeichensatz des Displays", "Etch A Sketch" und die "Analoguhr".

Zum Einsatz kommt wie schon beschrieben das Display TG12864B welches kompatibel mit dem KS108 Display ist. Der einzige Unterschied, welcher zu beachten ist, besteht bei den beiden Anschlüssen LEDK und LEDA für die Hintergrundbeleuchtung welche vertauscht sind!

Das Grafikdisplay verfügt über eine Auflösung von 128x64 Pixel und ist in der Farbe Blau mit Hintergrundbeleuchtung zu erhalten.
Die Spezialität des Displays besteht in der Art der Ansteuerung. Das Display besitzt 2x den Display Controller KS108 und resultierend daraus auch 2 Chip-Select-Leitungen (CS1 und CS2). Jeder Controller KS108 steuert 8 rows und mit jeweils 64 pixel wobei jede row aus 8 lines besteht. Daraus ergibt sich eine Auflösung von 64x64 Pixel. Das Grafik-Display mit 128x64 Pixel ist zweigeteilt und die linke und rechte Seite des Displays bestehend aus jeweils 64x64 Pixel. Jeder Block kann / muss separat angesteuert werden. Zum Glück wird das Display vollständig von BASCOM unterstützt, so dass hier keine manuellen Eingriffe in die Programmierung notwendig sind. Es werden alle Funktionen wie Texte, Grafik, Linien etc. vollständig von BASCOM unterstützt und bedürfen keiner weiteren Erläuterung.

Bilder des in diesem Abschnitt bearbeiteten Displays:

GLCD TG12864B Vorderseite
GLCD TG12864B Vorderseite

LCD-Modul TG12864B-03

Blaues, grafisches LC-Display (128x64 Pixel) mit integriertem Controller (kompatibel zu KS0108) und LED-Hintergrundbeleuchtung. Direktes Einlöten in Platine ohne zusätzlichen Montageaufwand

Technische Daten:
- Auflösung 128x64 Pixel
- weiße LED-Hintergrundbeleuchtung
- Betriebsspannung +5 V-
- Kontrastspannung +9 V-
- Pixelgröße 0,48x0,48 mm
- Anzeigefläche 70,7x38,83 mm
- Maße (BxHxT): 93x70x13,6 mm

GLCD TG12864B Rückseite
GLCD TG12864B Rückseite

Anschlussbelegung und Beschaltung

Das Grafik-LCD-Display mit dem KS108 Display-Controller hat ein 8-Bit paralleles Interface. Neben der Anbindung mit 8-Bit Datenbus sind noch einige weitere PIN's zu beschalten, welche für zusätzliche Steuerleitungen, die Spannungsversorgung und die Hintergrundbeleuchtung benötigt werden.

Pinbelegung des TG12864B Grafik-LCD-Displays
Pinbelegung des TG12864B Grafik-LCD-Displays


Die folgende Abbildung zeigt das Blockdiagramm des Displays:

Blockschaltbild des TG12864B Grafik-LCD-Displays
Blockschaltbild des TG12864B Grafik-LCD-Displays


Entsprechend Datenblatt ist die prinzipielle Spannungsversorgung wie folgt vorzunehmen:

Spannungsversorgung des TG12864B Grafik-LCD-Displays
Spannungsversorgung des TG12864B Grafik-LCD-Displays


Die Abmessungen des Displays:

Abmessungen des TG12864B Grafik-LCD-Displays
Abmessungen des TG12864B Grafik-LCD-Displays



Das folgende Schaltbild zeigt die Beschaltung des Displays am Beispiel eines ATmega8. Hierbei sind alle Details und Bauteile aufgenommen, welche bei den Beispielprogrammen zum Grafikdisplay im Buch von Stefan Hoffmann verwendet werden. Dies betrifft im Einzelnen den Uhrenquarz der Analoguhr und die Taster + Potis für das Programm Etch A Sketch.

Beschaltung des TG12864B Grafik-LCD-Displays
Beschaltung des TG12864B Grafik-LCD-Displays


Die Helligkeitseinstellung der Hintergrundbeleuchtung des Displays wird in diesem Beispiel nicht regelbar umgesetzt, sondern fixiert mit einem 150 Ohm Widerstand realisiert.
Der Kontrast des Displays wir mittels 20k Ohm Potentiometer (siehe Schaltbild) entsprechend Datenblatt umgesetzt.

Die folgenden Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiertsteckbrett. Die ersten drei Bilder zeigen das Display in jeweils drei unterschiedlichen Betriebsmodi (Text, Bild und Grafik). Das letzte Bild zeigt die Umsetzung mit einem ATmega8 auf einem Experimentiersteckbrett.

TG12864B mit Text TG12864B mit Bilddarstellung (BGF) TG12864B mit Grafik
TG12864B mit Text TG12864B mit Bilddarstellung (BGF) TG12864B mit Grafik

Grosser Text Linien Kreise
Grosser Text Linien Kreise

  Umsetzung am Experimentiersteckbrett - ATmega8  
  Umsetzung am Experimentiersteckbrett - ATmega8  


Befehlssatz und Ansteuerung

Das GLCD-Display stellt die folgenden Befehle zur Verfügung:

Befehlssatz des TG12864B GLCD-Displays
Befehlsübersicht des TG12864B GLCD-Displays



Ansteuerung und Beispielprogramm unter BASCOM

Damit in BASCOM das KS108 kompatible Display grundsätzlich funktioniert, ist das Einbinden einer speziell für das Display vorgesehenen Bibliothek wichtig:

' Hier wird die spezielle Grafik-LIB von BASCOM geladen
$lib "glcdKS108.lib"


Die Port- bzw- Pin-Informationen können direkt mit dem Config-Befehlt angegeben werden oder wie hier im Beispiel mit Hilfe von Alias.
Die eigentliche Initialisierung des Display findet mit dem Config-Befehlt statt:

' ----- LCD-Display -----

' Alias Definitionen
Glcd_data Alias Portd                                       ' Dataport ist D
Glcd_ctrl Alias Portb                                       ' Controlport ist B
Glcd_cs1 Alias 2                                            ' GPIO PB2 chip select 1
Glcd_cs2 Alias 3                                            ' GPIO PB3 chip select 2
Glcd_cmd Alias 0                                            ' GPIO PB0 data/instruction
Glcd_rw Alias 1                                             ' GPIO PB1 read/write
Glcd_rst Alias 5                                            ' GPIO PB5 resets
Glcd_e Alias 4                                              ' GPIO PB4 output data / latches data

' Konfiguration LCD Display
Config Graphlcd = 128 * 64sed , Dataport = Glcd_data , Controlport = Glcd_ctrl , Ce = Glcd_cs1 , Ce2 = Glcd_cs2 , Cd = Glcd_cmd , Rd = Glcd_rw ,         Reset = Glcd_rst , Enable = Glcd_e
Initlcd                                                     ' LCD Initialisieren (normal beim ersten LCD Zugriff automatisch)
Cls                                                         ' Display löschen


Eine einfache Textausgabe auf das Display mit einem großen Font:

' Erste Textausgabe mit großem Font auf Dsiplaytext schreiben
Setfont Font16x16                                           ' Großer FONT laden
Lcdat 3 , 24 , "Hallo"
Lcdat 6 , 1 , "TG12864B" , 1                                ' Text invers


Nun wird etwas gemalt und mit einem Kommando-Befehl noch Kommandos an das Display gesendet. Dieses Display kennt jedoch nur den Befehlt Display AUS und Display AN. Damit soll es das auch schon gewesen sein:

' ---- Linien malen ----
Line(, 63) -(127 , 0) , 1

' ---- Kreise malen ----
Circle(64 , 32) , 5 , 1                                     ' Farbe sichtbar
Circle(64 , 32) , 5 , 0                                     ' Farbe unsichtbar

' ---- Bild anzeigen ----
Showpic 0 , 0 , Picture                                     ' BGF Grafik anzeigen

' ---- Sonstige Display-Kommandos ----
Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                         ' Beide Displayseiten aus
Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2                         ' Beide Displayseiten an


Bilder im BGF-Fileformat sowie Font-Dateien werden mit entsprechenden Kommandos am Ende des Programmcodes nach dem END geladen:

' ------------------------------- Grafiken für das GLCD -----------------------

'include the picture data
Picture:
$bgf "BASCOM.bgf"

' ------------------------------- FONT's für das GLCD -------------------------


' Include Font nach dem END und damit nach dem Programmcode damit nicht FONT-
' Data als Code interpretiert wird (sollte ganz am Ende stehen)
$include "font8x8.font"                                     ' Daten für kleinen FONT
$include "font16x16.font"                                   ' Daten für großen FONT


Das vollständige Listing des Programms zur Inbetriebnahme sowie Datenblätter und die Dokumentation zum LCD-Display finden sich aber wie folgt:

Eagle-Datei Schematic Eagle-Datei Schematic für das GLCD Display TG12864B-03    
BASCOM Sourcecode GLCD Display TG12864B-03 BASCOM Source-Code für das GLCD Display TG12864B-03 mit ATmega8 BASCOM Source-Code im RTF-Format TG12864B-03 mit ATmega8 BASCOM Source-Code im RTF-Format TG12864B-03 mit ATmega8
Produktdatenblatt TG12864B-03 Produktdatenblatt TG12864B-03 Spezifikation TG12864B-03 Spezifikation TG12864B-03



Ein LCD-Display im Testbetrieb
Ein LCD-Display unter vielen, welche in der Zwischenzeit in Betrieb genommen wurden


Valid XHTML 1.0 Transitional    CSS ist valide!