Bauplan Schaltplan KS0107/KS0108 Grafik LCD Hallo Welt

Hello World in Assembler.
In der Computerwelt ist es üblich, als erstes Programm in einer neuen Programmierprache ein einfaches "Hello World" auszugeben. Üblicherweise ist dies kein allzu grosses Problem, nahzu jede Programmiersprache hat hierzu geeignete Routinen oder Bibliotheksfunktionen zu bieten, um die unterschiedlichsten Ausgabegeräte anzusprechen. Etwas anders läuft es hingegen in der Maschinensprache. Hier muss sich der Programmierer selbst um die korrekte Ansteuerung der Ausgabegeräte kümmern, was den Aufwand für dieses einfache "Hello World" unter Umständen doch recht in die Höhe treibt.

Die weit verbreiteten Grafik Displays mit KS0107/KS0108 Kontroller sind so ein Fall. Die Ansteuerung ist zwar nicht sonderlich kompliziert, es gibt nur ein paar wenige Befehle, mit denen man das Display ansteuern kann. Alledings gibt es auch keine einfache Möglichkeit, Zeichen auf dem Display auszugeben, denn der Controller besitzt keinen eigenen Zeichengenerator.

Um also ein einfaches "Hello World" auszugeben, ist eine ganze Menge an Vorarbeit zu leisten. Es müssen Low Level Routinen geschrieben werden, um Daten und Befehle an das LCD Display zu senden. Dann muss eine Zeichentabelle verfügbar sein, in welcher die Grapfische Darstellung der einzelnen Zeichen definiert wird. Weiterhin bedarf es einer Routine, welche dann die Bytes aus der Zeichentabelle in geeigneter Weise auf das Display kopiert.

Das hier gezeigte Programm macht nun genau das alles. Es ermöglicht die Ausgabe von Text auf einem Grafikdisplay mit KS0107/KS0108 Controller mit 128*64 Pixeln. Als Hardware Basis habe ich das hier vorgestellte Display Board verwendet, es ermöglicht viele Experimente und Anwendungen rund um das Grafik Display. Das Programm ist für einen Atmel Mega32 Controller geschrieben, lässt sich aber sehr leicht auch für andere AVR Controller anpassen.

Hierzu werden eine Reihe von Low Level Funktionen definiert, welche die Kommunikation mit dem Display übernehmen und eine einfache Schnittstelle zu einem übergeordneten Programm darstellen. Da diese Displays üblicherweise aus zwei getrennten Blöcken mit jeweils 64*64 Pixel bestehen, muss natürlich vor dem Zeichnen zuerst immer berechnet werden, auf welche Displayhälfte die Ausgabe zu schreiben ist.

Die eigentliche Anwendung ist dann nicht mehr schwierig:

Das Display wird initialisiert, und der Cursor innerhalb eines 32*8 Zeichen grossen Textbildschirms positioniert. Die Ausgabe eines beliebigen Textes geschieht dann mit dem Aufruf des Unterprogramms display_write_string, welches die Adresse eines nullterminierten Strings im Z-Register erwartet.

Die entscheidenden Befehle für die Ausgabe finden sich gleich am Anfang des Programms, nach der Initialisierung wird der Hello World Text achtmal versetzt auf dem Bildschirm ausgegeben. Als Bonus besteht noch die Möglichkeit, den Bildschirm scrollen zu lassen, um das Scrolling zu aktivieren muss der Funktionsaufruf "rcall display_start_line" im Flaghandler für den Timer Interrupt durchgeführt werden (also die Kommentar-Zeichen entfernen)

Wenn man einmal die Ausgabe von Textzeichen auf dem GLCD geschafft hat, ist der Schritt zu grafischen Ausgaben dann nicht mehr besonders schwierig. Allerdings ist hier dann häufig der Einsatz von Assembler nicht mehr unbedingt sinnvoll, wenn komplexe Berechnungen oder Datenstrukturen nötig sind, kann man natürlich auf C oder Bascom umsteigen.

Bauteile für dieses Projekt - Anzeigen:
Aktive Bauelemente

Passive Bauelemente


Weitere Informationen,Grundlagen,Bauanleitung,Schaltplan, Links zum Thema
Anzeigen:

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1214133