API - alphanumerisches Punktmatrix-LCD (HD44780), 4-bit Datenbus
Diese API ermöglicht eine Ausgabe auf einem alphanumerischen LCD mit einem HD44780, oder einem kompatiblen Displaycontroller. Das LCD soll über einen 4-bit Datenbus mit dem Mikrocontroller verbunden sein.
- Programmiersprache: ANSI C
- Mikrocontroller: AT89C5131A - 8051 Mikrocontroller
- IDE: µVision 4
- Compiler: Cx51 V9.5

API - alphanumerisches Punktmatrix-LCD (HD44780), 4-bit Datenbus
API Beschreibung
Diese API ermöglicht eine Ausgabe auf einem alphanumerischen LCD mit einem HD44780, oder einem kompatiblen Displaycontroller. Das LCD soll über einen 4-bit Datenbus mit dem Mikrocontroller verbunden sein.
Mit dieser API kann man das Display EA DIPS082 auf dem ZB-008 LCD Board und SB-004 Mikrocontroller Board ansteuern.
Mit dieser API kann man das Display EA DIPS082 auf dem ZB-008 LCD Board und SB-004 Mikrocontroller Board ansteuern.
Programmiersprache: | ANSI C |
Mikrocontroller: | AT89C5131A - 8051 MK |
IDE: | µVision 4 |
Compiler: | Cx51 V9.5 |
Bilder der Module
Funktions-Deklarationen
// LCD Initialisierung void LCD_Init(void); // Hintergrundbeleuchtung EIN/AUS void LCD_BackLight(unsigned char state); // Loesche LCD Display void LCD_ClearLCD(void); // Setze Cursor auf Home-Position (oben links) void LCD_ReturnHome(void); // Gebe String auf dem LCD aus errorCodeLCD_t LCD_PutString(unsigned char line, unsigned char column, unsigned char* pString);
Konstanten
Error Code errorCodeLCD_t
// Error Code LCD typedef enum _errorCodeLCD { LCD_SUCCESS = 0, LCD_BUSY = 1, LCD_TRANSMISSION_FAIL = 2 } errorCodeLCD_t;
Konfiguration
In lcd_config.h kann man die LCD Parameter ändern.
Die Einstellungen sind in zwei Gruppen unterteilt:
Machen Sie die lcd_config.h in µVision 4 auf. Klicken Sie auf der unteren Leiste auf den „Configuration Wizard“. Es öffnet sich eine „GUI-like“Oberfläche. Über diese Oberfläche können alle allgemeinen Einstellungen und Register Einstellungen auf einfachere Weise geändert werden. Die Standard Einstellungen kann man dem Bild unten entnehmen.

Die Einstellungen sind in zwei Gruppen unterteilt:
- allgemeine Einstellungen, diese beschreiben das verwendete Display
- Einstellungen der LCD Register.
Allgemeine Einstellungen
- LCD_PORT - Mikrocontroller Port mit dem LCD verbunden ist
- Standard Wert: Port 2 - LCD_PORT = 0x0A;
- LCD_LINE_SIZE - Zeilenanzahl von LCD
- Standard Wert: 2 Zeilen - LCD_LINE_SIZE 0x02
- LCD_COLUMN_SIZE - Spaltenanzahl von LCD
- Standard Wert: 8 Spalten - LCD_COLUMN_SIZE 0x08
- LCD_ADDRESS_LINE_1 - Adresse der ersten Zeile
- Standard Wert: 0x00 - LCD_ADDRESS_LINE_1 0x00
- LCD_ADDRESS_LINE_2 - Adresse der zweiten Zeile
- Standard Wert: 0x40 - LCD_ADDRESS_LINE_2 0x40
- LCD_ADDRESS_LINE_3 - Adresse der dritten Zeile
- Standard Wert: 0x14 - LCD_ADDRESS_LINE_3 0x14
- LCD_ADDRESS_LINE_4 - Adresse der vierten Zeile
- Standard Wert: 0x54 - LCD_ADDRESS_LINE_4 0x54
Einstellungen der LCD Register
Über folgende Konstanten kann man die LCD Register einstellen. Die genaue Beschreibung der Register und die Bedeutung der einzelnen Bits dieser Register entnehmen Sie bitte dem HD44780 Datenblatt.- Register ENTRY_MODE_SET - Einstellung der Bewegungsart des Cursors und der Shift-Art des Displays
- Standard Wert: 0x06 - ENTRY_MODE_SET 0x06
- Register DISPLAY_CONTROL - EIN/AUS des Displays, Cursors, Cursor-Blinkens
- Standard Wert: 0x0D - DISPLAY_CONTROL 0x0D
- Register CURSOR_DISPLAY_SHIFT - Einstellung der Bewegungsart des Cursors und der Shift-Art des Displays
- Standard Wert: 0x14 - CURSOR_DISPLAY_SHIFT 0x14
- Register FUNCTION_SET - Einstellung der Betriebsart des gesamten Displays
- Standard Wert: 0x28 - FUNCTION_SET 0x28
LCD Einstellungen über Configuration Wizard
Es ist möglich, die Einstellungen über Configuration Wizard vorzunehemen.Machen Sie die lcd_config.h in µVision 4 auf. Klicken Sie auf der unteren Leiste auf den „Configuration Wizard“. Es öffnet sich eine „GUI-like“Oberfläche. Über diese Oberfläche können alle allgemeinen Einstellungen und Register Einstellungen auf einfachere Weise geändert werden. Die Standard Einstellungen kann man dem Bild unten entnehmen.

Funktionen
void LCD_Init (void);
Diese Funktion initialisiert LCD.
Diese Funktion verwendet folgende globale Konstanten:
Funktionstyp
voidÜbergabeparameter
voidDiese Funktion verwendet folgende globale Konstanten:
- FUNCTION_SET (lcd_config.h)
- CURSOR_DISPLAY_SHIFT (lcd_config.h)
- ENTRY_MODE_SET (lcd_config.h)
- DISPLAY_CONTROL (lcd_config.h)
void LCD_BackLightt (unsigned char state);
Diese Funktion schaltet Hintergrundbeleuchtung ein und aus. Übergabe einer „1“ erzeugt LOW-Pegel am Port Pin der Hintergrundbeleuchtung.
Diese Funktion verwendet folgende globale Variable:
Funktionstyp
voidÜbergabeparameter
unsigned char state - EIN / AUSDiese Funktion verwendet folgende globale Variable:
- LCD_BACK_LIGHT (lcd_config.h)
void LCD_ClearLCD (void);
Diese Funktion schreibt eine 0x01 in den „dispaly clear“ Register. Die Display Anzeige wird gelöscht und der Cursor wird auf die Home-Position (oben links) gesetzt.
Funktionstyp
voidÜbergabeparameter
voidvoid LCD_ReturnHome (void);
Diese Funktion schreibt eine 0x02 in den „cursor home“ Register. Der Cursor wird auf die Home-Position (oben links) gesetzt.
Funktionstyp
voidÜbergabeparameter
voiderrorCodeLCD_t LCD_PutString (unsigned char line, unsigned char column, unsigned char* pString);
Diese Funktion gibt einen String auf dem LCD aus.
An diese Funktion wird die Zeile (line) und die Spalte (column) für das erste Zeichen und ein String (pString) übergeben.
Die Zeilenanzahl kann je nach Display zwischen 1 und 4 sein. Die maximale Zeilenanzahl wird in der Konstanten LCD_LINE_SIZE (lcd_config.h) definiert. Bei line > LCD_LINE_SIZE wird ein Error vom Typ errorCodeLCD_t generiert und der String wird nicht ausgegeben.
Die Spaltenanzahl kann je nach Display zwischen 0 und 20 liegen. Die maximale Spaltenanzahl wird in der Konstanten LCD_COLUMN_SIZE(lcd_config.h) definiert. Bei column > LCD_COLUMN_SIZE wird ein Error vom Typ errorCodeLCD_t generiert und der String wird nicht ausgegeben.
unsigned char column - Spalte für das erste Zeichen (0 bis LCD_COLUMN_SIZE (lcd_config.h))
unsigned char* pString - String
An diese Funktion wird die Zeile (line) und die Spalte (column) für das erste Zeichen und ein String (pString) übergeben.
Die Zeilenanzahl kann je nach Display zwischen 1 und 4 sein. Die maximale Zeilenanzahl wird in der Konstanten LCD_LINE_SIZE (lcd_config.h) definiert. Bei line > LCD_LINE_SIZE wird ein Error vom Typ errorCodeLCD_t generiert und der String wird nicht ausgegeben.
Die Spaltenanzahl kann je nach Display zwischen 0 und 20 liegen. Die maximale Spaltenanzahl wird in der Konstanten LCD_COLUMN_SIZE(lcd_config.h) definiert. Bei column > LCD_COLUMN_SIZE wird ein Error vom Typ errorCodeLCD_t generiert und der String wird nicht ausgegeben.
Funktionstyp
errorCodeLCD_t - gibt den Status der Übertragung wieder. Mögliche Werte sind:Konstanten Name | Wert | Beschreibung |
---|---|---|
LCD_SUCCESS | 0x00 | Übertragung erfolgreich |
LCD_BUSY | 0x01 | Unbekannter Fehler |
LCD_TRANSMISSION_FAIL | 0x02 | Übertragung fehlgeschlagen |
Übergabeparameter
unsigned char line - Zeile für das erste Zeichen (1 bis LCD_LINE_SIZE (lcd_config.h))unsigned char column - Spalte für das erste Zeichen (0 bis LCD_COLUMN_SIZE (lcd_config.h))
unsigned char* pString - String
Beispiel
#include "lcd.h" // LCD Header #include "lcd_config.h" // LCD Config void main (void){ // LCD Initialisierung LCD_Init(); // Hintergrundbeleuchtung an (8051 MK) LCD_BackLight(1); // Ausgabe "Hello" auf dem Display, Zeile 1, Spalte 1 LCD_PutString(1, 0,"Hello"); // Ausgabe "world" auf dem Display, Zeile 2 Spalte 3 LCD_PutString(2, 2,"world"); ... ... ... // Loesche Display LCD_ClearLCD(); while(1); }