LCD-Displays und BASCOM
LCD-Displays am AVR mit BASCOM angesteuert:
Allgemeines zu LCD-Displays unter BASCOM

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
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.
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:
- CONFIG LCD = Configure the LCD display and override the compiler setting.
- CONFIG LCDPIN = Override the LCD-PIN select options.
- CONFIG LCDMODE = Configures the LCD operation mode and overrides the compiler setting.
- $LCD = Instruct the compiler to generate code for 8-bit LCD displays attached to the data bus.
- $LCDRS = Instruct the compiler to generate code for 8-bit LCD displays attached to the data bus.
- CONFIG LCDBUS = Configures the LCD data bus and overrides the compiler setting.
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:
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 ....
Achtung Topinformationen - Wichtige Hinweise und Tipps
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.
|
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:
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
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
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
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:
|
|
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:
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
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 = E_pin , Rs = Rs_pin
Config Lcd = 16 * 2 , 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 0 , 16 , 16 , 16 , 16 , 16 , 16 , 30 , 30
' LCD-Zeichen linke obere Ecke des Galgens
Deflcdchar 1 , 15 , 9 , 10 , 12 , 8 , 8 , 8 , 8
' LCD-Zeichen rechter Galgen ohne Männchen
Deflcdchar 2 , 28 , 4 , 32 , 32 , 32 , 32 , 32 , 32
' LCD-Zeichen rechter Galgen mit Kopf
Deflcdchar 3 , 28 , 4 , 4 , 14 , 17 , 17 , 14 , 4
' LCD-Zeichen Bauch
Deflcdchar 4 , 4 , 4 , 4 , 4 , 32 , 32 , 32 , 32
' LCD-Zeichen Bauch mit linkem Beine
Deflcdchar 5 , 4 , 4 , 4 , 4 , 8 , 16 , 16 , 32
' LCD-Zeichen Bauch mit beiden Beinen
Deflcdchar 6 , 4 , 4 , 4 , 4 , 10 , 17 , 17 , 32
' LCD-Zeichen kompletter Männchen-Körper
Deflcdchar 7 , 14 , 21 , 21 , 4 , 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 für das LCD Display EA DOG-M
|
|
|
BASCOM Source-Code für das LCD Display EA DOG-M
|
|
Sitronix Datasheet ST7036 DOT Matrix Controller
|
|
|
EA DOG-M Series Module Datasheet
|
|
BASCOM Source-Code im RTF-Format
|
|
|
|
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:
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
Damit ergibt sich die folgende Standardbeschaltung am Beispiel 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:
|
|
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:
Befehlsübersicht 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 = 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 0 , 32 , 32 , 10 , 10 , 32 , 4 , 17 , 14 ' Smily
Deflcdchar 1 , 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 für das LCD Display HD44780 1602
|
|
|
BASCOM Source-Code für das LCD Display HD44780 1602
|
|
Hitachi Datasheet HD44780U (LCD-II)
|
|
|
ERM1602-6 Series Character Module Datasheet
|
|
BASCOM Source-Code im RTF-Format
|
|
|
|
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
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.
|
|
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 = 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 0 , 32 , 32 , 10 , 10 , 32 , 4 , 17 , 14 ' Smily
Deflcdchar 1 , 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 für das LCD Display HD44780 1602
|
|
|
|
|
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 für das LCD Display HD44780 1602 ATmega8 8-Bit PIN-Mode
|
|
|
BASCOM Source-Code im RTF-Format ATmega128 8-Bit PIN-Mode
|
|
Hitachi Datasheet HD44780U (LCD-II)
|
|
|
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
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
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
|
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
|
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
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
Die Abmessungen des Displays und Daten zur Hintergrundbeleuchtung:
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
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
|
|
|
|
|
|
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:
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 für das 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
|
|
EA Datasheet DOGM128x6
|
|
|
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
Das folgenden Bilder zeigen die Umsetzung am Laborplatz auf einem Experimentiersteckbrett.
|
|
|
|
Umsetzung am Experimentiersteckbrett - ATmega8
|
|
Befehlssatz und Ansteuerung
Ansteuerung und Beispielprogramm unter BASCOM
TG12864B Grafik-Display 128x64 (kompatibel zu KS108) - 8-Bit Bus Ansteuerung
Allgemeines und Einleitung

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
|
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
|
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
Die folgende Abbildung zeigt das Blockdiagramm des Displays:
Blockschaltbild des TG12864B Grafik-LCD-Displays
Entsprechend Datenblatt ist die prinzipielle Spannungsversorgung wie folgt vorzunehmen:
Spannungsversorgung des TG12864B Grafik-LCD-Displays
Die Abmessungen des 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
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
|
|
|
|
|
Grosser Text
|
Linien
|
Kreise
|
|
|
|
|
|
Umsetzung am Experimentiersteckbrett - ATmega8
|
|
Befehlssatz und Ansteuerung
Das GLCD-Display stellt die folgenden Befehle zur Verfügung:
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(0 , 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 für das 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
|
|
Produktdatenblatt TG12864B-03
|
|
|
Spezifikation TG12864B-03
|
Ein LCD-Display unter vielen, welche in der Zwischenzeit in Betrieb genommen wurden