LCD-Library

Dependents:   Projekt_Wecker_LCD Projekt_Wecker_LCD Projekt_Wecker_LCD

Revision:
0:b25367985a15
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD.h	Thu Apr 30 10:35:52 2015 +0000
@@ -0,0 +1,125 @@
+
+#ifndef _LCD_H
+    #define _LCD_H
+
+class LCD
+{
+    public:
+        LCD(PinName RS, PinName EN, PinName DB4, PinName DB5, PinName DB6, PinName DB7);
+        // Sendet den Befehl zur Löschung des Displays
+        void clear(void);
+        // Sendet den Befehl: Cursor Home
+        void home(void);
+        // Sendet ein Datenbyte an das LCD
+        void data(unsigned char data);
+        // Schreibt einen String auf das LCD
+        void string(const char *data);
+        // Setzt den Cursor in Spalte x (0..15) Zeile y (1..4) 
+        void setcursor(unsigned char x, unsigned char y);
+    private:
+        // Sendet eine 4-bit Ausgabeoperation an das LCD
+        void out(unsigned char data);
+        // Erzeugt einen Enable-Puls
+        void enable();
+        // Sendet einen Befehl an das LCD
+        void command(unsigned char data);
+        
+    
+        PinName _rs;
+        PinName _en;
+        PinName _db4;
+        PinName _db5;
+        PinName _db6;
+        PinName _db7;
+};
+
+// LCD Befehle und Argumente.
+// Zur Verwendung in lcd_command
+// Kopiert von http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
+
+////////////////////////////////////////////////////////////////////////////////
+// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
+ 
+#define LCD_BOOTUP_MS           30
+#define LCD_ENABLE_US           20
+#define LCD_WRITEDATA_US        46
+#define LCD_COMMAND_US          42
+ 
+#define LCD_SOFT_RESET_MS1      5
+#define LCD_SOFT_RESET_MS2      1
+#define LCD_SOFT_RESET_MS3      1
+#define LCD_SET_4BITMODE_MS     5
+ 
+#define LCD_CLEAR_DISPLAY_MS    2
+#define LCD_CURSOR_HOME_MS      2
+ 
+////////////////////////////////////////////////////////////////////////////////
+// Zeilendefinitionen des verwendeten LCD
+// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
+// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
+ 
+#define LCD_DDADR_LINE1         0x00
+#define LCD_DDADR_LINE2         0x40
+#define LCD_DDADR_LINE3         0x10
+#define LCD_DDADR_LINE4         0x50
+ 
+// Clear Display -------------- 0b00000001
+#define LCD_CLEAR_DISPLAY       0x01
+ 
+// Cursor Home ---------------- 0b0000001x
+#define LCD_CURSOR_HOME         0x02
+ 
+// Set Entry Mode ------------- 0b000001xx
+#define LCD_SET_ENTRY           0x04
+ 
+#define LCD_ENTRY_DECREASE      0x00
+#define LCD_ENTRY_INCREASE      0x02
+#define LCD_ENTRY_NOSHIFT       0x00
+#define LCD_ENTRY_SHIFT         0x01
+ 
+// Set Display ---------------- 0b00001xxx
+#define LCD_SET_DISPLAY         0x08
+ 
+#define LCD_DISPLAY_OFF         0x00
+#define LCD_DISPLAY_ON          0x04
+#define LCD_CURSOR_OFF          0x00
+#define LCD_CURSOR_ON           0x02
+#define LCD_BLINKING_OFF        0x00
+#define LCD_BLINKING_ON         0x01
+ 
+// Set Shift ------------------ 0b0001xxxx
+#define LCD_SET_SHIFT           0x10
+ 
+#define LCD_CURSOR_MOVE         0x00
+#define LCD_DISPLAY_SHIFT       0x08
+#define LCD_SHIFT_LEFT          0x00
+#define LCD_SHIFT_RIGHT         0x04
+ 
+// Set Function --------------- 0b001xxxxx
+#define LCD_SET_FUNCTION        0x20
+ 
+#define LCD_FUNCTION_4BIT       0x00
+#define LCD_FUNCTION_8BIT       0x10
+#define LCD_FUNCTION_1LINE      0x00
+#define LCD_FUNCTION_2LINE      0x08
+#define LCD_FUNCTION_5X7        0x00
+#define LCD_FUNCTION_5X10       0x04
+ 
+#define LCD_SOFT_RESET          0x30
+ 
+// Set CG RAM Address --------- 0b01xxxxxx  (Character Generator RAM)
+#define LCD_SET_CGADR           0x40
+ 
+#define LCD_GC_CHAR0            0
+#define LCD_GC_CHAR1            1
+#define LCD_GC_CHAR2            2
+#define LCD_GC_CHAR3            3
+#define LCD_GC_CHAR4            4
+#define LCD_GC_CHAR5            5
+#define LCD_GC_CHAR6            6
+#define LCD_GC_CHAR7            7
+ 
+// Set DD RAM Address --------- 0b1xxxxxxx  (Display Data RAM)
+#define LCD_SET_DDADR           0x80
+
+#endif