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


zurück zu Elektronik, Homepage


5. Software (in C mit CC5X

5.1. Benötigte Konstanten und Portdefinition

Konstanten:

#define        LCD_CLR                  0x01        // Display loeschen
#define        LCD_ON_C                 0x0E        // Cursor home
#define        LCD_FUNCTION_SET         0x28        // 4 Bit, 2 Zeilen, 5x7
#define        LCD_DISP_ON              0x0C        // Display Ein
#define        LCD_DISP_OFF             0x08        // Display Aus
#define        LCD_ENTRY_INC            0x06 

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:

#pragma char LCD_DATA             @ PORTB
#pragma char LCD_DATA_TRIS        @ TRISB
#pragma char LCD_CTRL             @ PORTB
#pragma char LCD_CTRL_TRIS        @ TRISB

bit LCD_RS                        @ LCD_CTRL.1;
bit LCD_RW                        @ LCD_CTRL.2;
bit LCD_E                         @ LCD_CTRL.3;
    
nach oben

5.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

5.3. Unterprogramme für die LCD-Ansteuerung

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

Mit einem weiteren (optionalen) Unterprogramm kann eine ganze Zeichenkette am LC-Display ausgegeben werden. Dieses Unterprogramm heißt LCD_STRING.

Nun aber zu den einzelnen Unterprogrammen im Detail:

nach oben

5.3.1. Unterprogramm LCD_INIT

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

Vorgehensweise:

nach oben

5.3.2. Unterprogramm LCD_BEFEHL

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

Vorgehensweise:

Anmerkung:
Dieses Unterprogramm unterscheidet sich zum Unterprogramm LCD_ZEICHEN nur dadurch, dass hier die Register-Select-Steuerleitung gelöscht ist, da mit diesem Unterprogramm Befehle an das LC-Display übertragen werden.

nach oben

5.3.3. Unterprogramm LCD_ZEICHEN

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

Vorgehensweise:

Anmerkung:
Dieses Unterprogramm unterscheidet sich zum Unterprogramm LCD_BEFEHL 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.

nach oben

5.3.4. Unterprogramm LCD_BUSY

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:

nach oben

5.3.5. Unterprogramm LCD_STRING

Aufgabe:
Dieses Unterprogramm sendet einen String Zeichen für Zeichen an das LC-Display.

Vorgehensweise:

Anmerkung:
Eine Zeichenkette (engl. String) wird in C mit einem so genannten Nullbyte abgeschlossen.

nach oben

5.3.6. Unterprogramm VERZ100US

Aufgabe:
Dieses Unterprogramm erzeugt eine Zeitverzögerung. Der Übergabeparameter VerzZeit 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).

nach oben


zurück zu Elektronik, Homepage

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