erstellt 06.02.2012
Ein Programm zum Test der Display Ausgabe
Nun werden wir die ersten Programmzeilen schreiben die es uns ermöglichen eine Textausgabe aufs Display zu bringen, vorausgesetzt bis zu diesem Punkt ist alles korrekt gelaufen und die Schaltung funktioniert.
Also zuerst öffnen wir das Programm "Bascom" gehen dann auf das erste Symbol oben links , und öffnen damit eine neue Programmdatei.
Dann sollte eine leere Textdatei mit vorangestellten Zeilen Nummern erscheinen.
Anschließend geben wir die Prgrammzeilen wie in der folgende Tabelle gezeigt ein.
Aber Achtung ! Nur die Programmzeilen ohne Zeilen Nummern ,die Beschreibung muss natürlich nicht eingegeben werden kann aber zum besseren Verständnis mit eingegeben werden , aber nur unter einer Bedingung, nämlich das jeweils vor der Beschreibung ein ( ' ) eingeben wird das ist das Zeichen das auf der gleichen Taste liegt wie das folgende Zeichen (#) allerdings muss die Shift Taste festgehalten werden wenn das ( ' ) Zeichen benutzt wird.
Das Zeichen ist sehr wichtig weil sonst die Beschreibung als Programmzeile interpretiert wird , und auf Grund diesen Hintergrunds mit Sicherheit eine Fehlermeldung erscheint wenn anschließend das Programm  Compiliert wird.Also wenn die Programmzeichen in eine für den Mikrocontroller eigene Sprache übersetzt wird.

Zeile
Programmzeile
Beschreibung
1
$regfile "m8def.dat"      Definiert den Atmega als Atmega8
2
$crystal = 1000000       Gibt die Quarzfrequenz an in Herz
3
$hwstack = 32         Defaultwert 32 Hardware reservierte Speicher
4
$swstack = 10       Defaultwert für Software reservierter Speicher
5
Config Lcd = 16 * 4 Deklariert das Display als ein von 2 mal 16 Zeichen
6
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , Rs = Portc.1 , E = Portc.0 Konfiguriert die Anschlüsse am Mikrocontroller die für das Display benutzt werden, diese muss im Programm innerhalb einer Zeile stehen.
7
Do Anfang der Programmschleife
8
Lcd "Testanzeige" Ausgabe des Textes "Testanzeige"auf das Display
9
Waitms 100 Pause von 100 Millisekunden
10
Loop Schleifenrücksprung

Erläuterung zur Zeile 1:
In dieser Zeile wird ein Dateiname ( m8def.dat ) einer Datei angegeben die sich im Verzeichnis vom Bascom befindet ,  beim Compilieren wird durch Eingabe dieser Zeile diese jeweilige Datei
abgefragt in welcher sich diverse Informationen befinden über den zur Zeit verwendeten Mikrocontroller.

Unter anderem  sind in dieser Datei Informationen über die Anzahl der Ein Ausgabe Anschlüsse, über die  Schnittstellen, über die Größe des  internen Speicher usw. enthalten.
Die Datei "m8def.dat" enthält nur die Informationen für den Atmega 8 Mikroprozessor, bei Verwendung beispielsweise eines Atmega 32 würde die Datei "m32def.dat" heißen.
Erläuterung zur Zeile 2:
Hier steht die Information über die Interne Taktgeschwindigkeit des Mikrocontroller, wird benötigt wenn zeitliche Berechnungen angestellt werden müssen z.B. bei der Berechnung
von Warteschleifen und dergleichen, aber darauf kommen wir bei gegebenen Anlass drauf zurück weil es im Moment nur vom Eigentliche Thema ablenken würde
und es zu Umfangreich für eine "nur kurze" Erklärung wäre.

Erläuterung zur Zeile 3:
Kommen wir später noch drauf zurück
Erläuterung zur Zeile 4:
Kommen wir später noch drauf zurück
Erläuterung zur Zeile 5:
Hier wird dem Mikroprozessor mitgeteilt was für ein Display angeschlossen ist, in unseren Fall eine LCD Anzeige mit  2mal 16 Zeichen.
Erläuterung zur Zeile 6:
Hier wird dem Mikroprozessor mitgeteilt an welchen Anschlüssen das Diplay angeschlossen ist, z.B Pin DB4 am Display ist verbunden mit Portb.5 am Mikroprozessor.
Nachdem diese Programm in den Mikrocontroller übertragen wurde, stellen wir fest das die Anzeige auf dem Display
ähnlich einer Laufschrift  nicht still zu stehen
scheint,das liegt daran das nach dem Schreiben des Textes in der nächsten
Programmschleife wieder der Text
geschrieben wird und dadurch an den vorigen Text angefügt wird, dies können wir
erfolgreich verhindern  indem wir noch einen Befehl einsetzten , der das Display immer erst löscht , bevor der Text neu
ausgegeben wird.

Setzen wir also den befehl "CLS" noch in unser Programm ein .
Mit diesem Befehl wird Display vor jedem neuen Beschreiben erst gelöscht.


Zeile
Programmzeile
Beschreibung
1
$regfile "m8def.dat"      Definiert den Atmega als Atmega8
2
$crystal = 1000000        Gibt die Quarzfrequenz an in Herz
3
$hwstack = 32             Defaultwert 32 Hardware reservierte Speicher
4
$swstack = 10             Defaultwert für Software reservierter Speicher
5
Config Lcd = 16 * 4 Deklariert das Display als ein von 2 mal 16 Zeichen
6
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , Rs = Portc.1 , E = Portc.0 Konfiguriert die Anschlüsse am Mikrocontroller die für das Display benutzt werden, diese muss im Programm innerhalb einer Zeile stehen.
7
Do Anfang der Programmschleife
8
CLS
Löscht das Display
9
Lcd "Testanzeige" Ausgabe des Textes "Testanzeige"auf das Display
10
Waitms 100 Pause von 100 Millisekunden
11
Loop Schleifenrücksprung

Nach einsetzen des  Befehles zum Löschen  "CLS" sollte die Anzeige auf dem Display wie folgt aussehen !
Es ist auch möglich den Text gezielt an einer bestimmten Position im Display zu setzen, dazu verwenden wir
den Befehl

"Locate".
Mit dem Befehl Locate den man in der Programmzeile einsetzen sollte bevor der Befehl "LCD" für die Textausgabe
kommt können wir die Koordinaten für das erste Zeichen des Ausgabetext setzen.

z.B.
Locate 1,2
Setzte den darauf folgenden Text in der 1. Zeile auf die 2. Spalte.

Zeile
Programmzeile
Beschreibung
1
$regfile "m8def.dat"     ' Definiert den Atmega als Atmega8
2
$crystal = 1000000       ' Gibt die Quarzfrequenz an in Herz
3
$hwstack = 32            ' Defaultwert 32 Hardware reservierte Speicher
4
$swstack = 10            ' Defaultwert für Software reservierter Speicher
5
Config Lcd = 16 * 4 Deklariert das Display als ein von 2 mal 16 Zeichen
6
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , Rs = Portc.1 , E = Portc.0 Konfiguriert die Anschlüsse am Mikrocontroller die für das Display benutzt werden, diese muss im Programm innerhalb einer Zeile stehen.
7
Do Anfang der Programmschleife
8
cls
Löscht das Display

Locate 1,4
Textausgabe in Zeile 1 ab Spalte 4
9
Lcd "Testanzeige" Ausgabe des Textes "Testanzeige"auf das Display
10
Waitms 100 Pause von 100 Millisekunden
11
Loop Schleifenrücksprung

Das Ergebnis solle jetzt so aussehen !

Zeile
Programmzeile
Beschreibung
1
$regfile "m8def.dat"     ' Definiert den Atmega als Atmega8
2
$crystal = 1000000       ' Gibt die Quarzfrequenz an in Herz
3
$hwstack = 32            ' Defaultwert 32 Hardware reservierte Speicher
4
$swstack = 10            ' Defaultwert für Software reservierter Speicher
5
Config Lcd = 16 * 4 Deklariert das Display als ein von 2 mal 16 Zeiechen
6
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , Rs = Portc.1 , E = Portc.0 Konfiguriert die Anschlüsse am Mikrocontroller die für das Display benutzt werden, diese muss im Programm innerhalb einer Zeile stehen.
7
Do Anfang der Programmschleife
8
cls
Löscht das Display
9
Lcd "Testanzeige" Ausgabe des Textes "Testanzeige"auf das Display
10
Waitms 100 Pause von 100 Millisekunden
11
Loop Schleifenrücksprung



Genauso ist es auch möglich die Textzeile in der unteren Hälfte der Anzeige auszugeben
Oft gemachte Fehler
  • Sollten keine Anzeige erscheinen, so ist einer der häufigsten Gründe ein falsch angeschlossenes Display - Dann sollte man zuerst die Display Spannungsversorgung prüfen, also Plus 5 Volt und Masse.
  • Eine weiterer möglicher Fehler ist eine falsch eingestellte oder gar fehlende Kontrastspannung die an den meisten Anzeigen an Pin 3 vorhanden sein muss.Es erscheinen dann meist nur Quadratische Kästchen.
  • Sollte zwar eine Anzeige vorhanden sein, aber es werden irgend welche Hieroglyphen angezeigt, so liegt es meist an vertauschte Datenleitungen.
  • Gibt die Anzeige gar kein Zeichen aus, sollte überprüft werden ob das richtige Display angeschlossen ist, es gibt Displays die eine fast identische Bezeichnung haben, bei denen aber die Anschlüsse für Plus (Pin 2) und Gnd (Pin 1) vertauscht sind.
  • Und wenn die Anzeige läuft ( Laufschrift) liegt es meist an fehlender Reset Leitung.

  • Erscheint in der ersten Zeile Spalte 1 ein unkontrolliertes Zeichen könnte die JDTAG Schnittstelle noch aktiv sein und so verhindern das die Schnittstelle für das Display frei ist.

  • Zuerst erscheint gar nichts auf dem Display, hab dann erkannt das die JTAG Schnittstelle bei einem neuen Atmega Baustein standardmäßig aktiviert ist. damit sind dann die Pin C5. C4-C3 -C3-C2 beim Atmega 32 als DTAG definiert und nicht als normale Pins verfügbar, also auch nicht für das Display.
  • Häufig wird auch der Fehler begangen das der Befehl "$Sim" der bisweilen für die Simulation gebraucht wird, anschließend vergessen wird wieder aus dem Programm zu entfernen, das bewirkt dann meist das im Display nur eine Reihe mit Quadrate angezeigt wird ,der Befehl " $SIM " bewirkt das der Bascom eigene Simulator alle Pausen bzw. "Wait" Instruktionen ignoriert, sonst würde die Simulation mitunter sehr sehr lange laufen.
Aktualisiert 22.12.2019
Copyright by Ms  2009