Ansteuerung eines alphanumerischen LC-Display (mit PIC-Mikrocontroller, Elektronik)


zurück zu Elektronik, Homepage


4. Software (in Assembler)

4.1. Benötigte Register und Portdefinition

Register:
Für die softwaremäßige LC-Display-Ansteuerung werden neben einigen PIC internen Register (SFR, Spezielle Funktions-Register) noch zwei Hilfsregister (TEMP1 und TEMP2) benötigt. Diese beiden Register sind so genannte temporäre Register. D.h. Sie werden nur kurzzeitig verwendet und können daher auch in beliebigen anderen Unterprogrammen verwendet werden.

Portdefinition:
Im Allgemeinen wird bei jeder Anwendung das LC-Display an einem beliebigen Port angeschlossen. Damit dies in der Software nur an einer Stelle berücksichtigt werden muss befindet sich in der Software eine Portdefinition. Diese besteht aus den folgenden Parametern:

Eine mögliche Portdefinition ist:

LCD_DATA        equ         PORTB
LCD_DATA_TRIS   equ         TRISB
LCD_CTRL        equ         PORTB
LCD_CTRL_TRIS   equ         TRISB

LCD_RS          equ         1
LCD_RW          equ         2
LCD_E           equ         3
    
nach oben

4.2. Initialisierung (Unterprogramm "INIT")

Dieses Unterprogramm dient zur Initialisierung des Mikrocontrollers. Bei diesem Beispiel ist hier, für die Ansteuerung des LC-Displays, nur die Definition der verwendeten Portpins als Ausgang notwendig.

nach oben

4.3. Unterprogramme für die LCD-Ansteuerung

Zur Ansteuerung eines alphanumerischen LC-Displays sind 5 Unterprogramme notwendig:

Nun aber zu den einzelnen Unterprogrammen im Detail:

nach oben

4.3.1. Unterprogramm LCDINIT

Aufgabe:
Dieses Unterprogramm initialisiert das LC-Display (siehe auch Abschnitt 3. Befehle zur Ansteuerung eines LC-Display)

Vorgehensweise:

nach oben

4.3.2. Unterprogramm LCDBEFEHL

Aufgaben:
Dieses Unterprogramm sendet einen Befehl nibbleweise an das LC-Display.

Vorgehensweise:

Anmerkungen:
Dieses Unterprogramm unterscheidet sich zum Unterprogramm LCDZEICHEN nur dadurch, dass hier die Register-Select-Steuerleitung gelöscht ist, da mit diesem Unterprogramm Befehle an das LC-Display übertragen werden.
Das temporäre Register TEMP1 dient hier nur als Hilfsregister. Es wird hier nur kurzzeitig verwendet und kann daher auch in anderen Unterprogrammen verwendet werden.

nach oben

4.3.3. Unterprogramm LCDZEICHEN

Aufgaben:
Dieses Unterprogramm sendet ein Zeichen, welches am LC-Display ausgegeben wird, nibbleweise an das LC-Display.

Vorgehensweise:

Anmerkungen:
Dieses Unterprogramm unterscheidet sich zum Unterprogramm LCDBEFEHL nur dadurch, dass hier die Register-Select-Steuerleitung gesetzt ist, da mit diesem Unterprogramm am LC-Display auszugebende Zeichen an das LC-Display übertragen werden.
Das temporäre Register TEMP1 dient hier nur als Hilfsregister. Es wird hier nur kurzzeitig verwendet und kann daher auch in anderen Unterprogrammen verwendet werden.

nach oben

4.3.4. Unterprogramm LCDBUSY

Aufgabe:
Dieses Unterprogramm prüft das Busy-Flag des LC-Displays, und verlässt es erst wenn das Busy-Flag low ist, also wenn das LC-Display bereit für einen Befehl oder für ein auszugebendes Zeichen ist.

Vorgehensweise:

Anmerkung:
Das temporäre Register TEMP2 dient hier nur als Hilfsregister. Es wird hier nur kurzzeitig verwendet und kann daher auch in anderen Unterprogrammen verwendet werden.

nach oben

4.3.5. Unterprogramm VERZ100US

Aufgabe:
Dieses Unterprogramm erzeugt eine Zeitverzögerung. Der Übergabeparameter (im w- Register) gibt dabei an, wie oft eine Zeitverzögerung von 100µs erfolgen soll. Der mögliche Zeitverzögerungsbereich liegt hier daher im Bereich von 100µs und 25,5ms (=255 x 100us).

Anmerkung:
Die temporären Register TEMP1 und TEMP2 dienen hier nur als Übergabe- bzw. als Hilfsregister. Diese Register werden hier nur kurzzeitig verwendet und können daher auch in anderen Unterprogrammen verwendet werden.
Das Hilfsregister TEMP2 muss je nach verwendetem Takt mit unterschiedlichen Werten geladen werden:

                Takt             Wert von TEMP2
                -------------------------------
                4 MHz                 25
                12 MHz                75
                20 MHz               125
nach oben


zurück zu Elektronik, Homepage

Autor: Buchgeher Stefan
Erstellt: 19. Februar 2004
Letzte Änderung: 23. Februar 2011