LCD-Library

Dependents:   Projekt_Wecker_LCD Projekt_Wecker_LCD Projekt_Wecker_LCD

Committer:
wolpra98
Date:
Thu Apr 30 10:35:52 2015 +0000
Revision:
0:b25367985a15
A LCD-Library;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolpra98 0:b25367985a15 1
wolpra98 0:b25367985a15 2 #ifndef _LCD_H
wolpra98 0:b25367985a15 3 #define _LCD_H
wolpra98 0:b25367985a15 4
wolpra98 0:b25367985a15 5 class LCD
wolpra98 0:b25367985a15 6 {
wolpra98 0:b25367985a15 7 public:
wolpra98 0:b25367985a15 8 LCD(PinName RS, PinName EN, PinName DB4, PinName DB5, PinName DB6, PinName DB7);
wolpra98 0:b25367985a15 9 // Sendet den Befehl zur Löschung des Displays
wolpra98 0:b25367985a15 10 void clear(void);
wolpra98 0:b25367985a15 11 // Sendet den Befehl: Cursor Home
wolpra98 0:b25367985a15 12 void home(void);
wolpra98 0:b25367985a15 13 // Sendet ein Datenbyte an das LCD
wolpra98 0:b25367985a15 14 void data(unsigned char data);
wolpra98 0:b25367985a15 15 // Schreibt einen String auf das LCD
wolpra98 0:b25367985a15 16 void string(const char *data);
wolpra98 0:b25367985a15 17 // Setzt den Cursor in Spalte x (0..15) Zeile y (1..4)
wolpra98 0:b25367985a15 18 void setcursor(unsigned char x, unsigned char y);
wolpra98 0:b25367985a15 19 private:
wolpra98 0:b25367985a15 20 // Sendet eine 4-bit Ausgabeoperation an das LCD
wolpra98 0:b25367985a15 21 void out(unsigned char data);
wolpra98 0:b25367985a15 22 // Erzeugt einen Enable-Puls
wolpra98 0:b25367985a15 23 void enable();
wolpra98 0:b25367985a15 24 // Sendet einen Befehl an das LCD
wolpra98 0:b25367985a15 25 void command(unsigned char data);
wolpra98 0:b25367985a15 26
wolpra98 0:b25367985a15 27
wolpra98 0:b25367985a15 28 PinName _rs;
wolpra98 0:b25367985a15 29 PinName _en;
wolpra98 0:b25367985a15 30 PinName _db4;
wolpra98 0:b25367985a15 31 PinName _db5;
wolpra98 0:b25367985a15 32 PinName _db6;
wolpra98 0:b25367985a15 33 PinName _db7;
wolpra98 0:b25367985a15 34 };
wolpra98 0:b25367985a15 35
wolpra98 0:b25367985a15 36 // LCD Befehle und Argumente.
wolpra98 0:b25367985a15 37 // Zur Verwendung in lcd_command
wolpra98 0:b25367985a15 38 // Kopiert von http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
wolpra98 0:b25367985a15 39
wolpra98 0:b25367985a15 40 ////////////////////////////////////////////////////////////////////////////////
wolpra98 0:b25367985a15 41 // LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
wolpra98 0:b25367985a15 42
wolpra98 0:b25367985a15 43 #define LCD_BOOTUP_MS 30
wolpra98 0:b25367985a15 44 #define LCD_ENABLE_US 20
wolpra98 0:b25367985a15 45 #define LCD_WRITEDATA_US 46
wolpra98 0:b25367985a15 46 #define LCD_COMMAND_US 42
wolpra98 0:b25367985a15 47
wolpra98 0:b25367985a15 48 #define LCD_SOFT_RESET_MS1 5
wolpra98 0:b25367985a15 49 #define LCD_SOFT_RESET_MS2 1
wolpra98 0:b25367985a15 50 #define LCD_SOFT_RESET_MS3 1
wolpra98 0:b25367985a15 51 #define LCD_SET_4BITMODE_MS 5
wolpra98 0:b25367985a15 52
wolpra98 0:b25367985a15 53 #define LCD_CLEAR_DISPLAY_MS 2
wolpra98 0:b25367985a15 54 #define LCD_CURSOR_HOME_MS 2
wolpra98 0:b25367985a15 55
wolpra98 0:b25367985a15 56 ////////////////////////////////////////////////////////////////////////////////
wolpra98 0:b25367985a15 57 // Zeilendefinitionen des verwendeten LCD
wolpra98 0:b25367985a15 58 // Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
wolpra98 0:b25367985a15 59 // Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
wolpra98 0:b25367985a15 60
wolpra98 0:b25367985a15 61 #define LCD_DDADR_LINE1 0x00
wolpra98 0:b25367985a15 62 #define LCD_DDADR_LINE2 0x40
wolpra98 0:b25367985a15 63 #define LCD_DDADR_LINE3 0x10
wolpra98 0:b25367985a15 64 #define LCD_DDADR_LINE4 0x50
wolpra98 0:b25367985a15 65
wolpra98 0:b25367985a15 66 // Clear Display -------------- 0b00000001
wolpra98 0:b25367985a15 67 #define LCD_CLEAR_DISPLAY 0x01
wolpra98 0:b25367985a15 68
wolpra98 0:b25367985a15 69 // Cursor Home ---------------- 0b0000001x
wolpra98 0:b25367985a15 70 #define LCD_CURSOR_HOME 0x02
wolpra98 0:b25367985a15 71
wolpra98 0:b25367985a15 72 // Set Entry Mode ------------- 0b000001xx
wolpra98 0:b25367985a15 73 #define LCD_SET_ENTRY 0x04
wolpra98 0:b25367985a15 74
wolpra98 0:b25367985a15 75 #define LCD_ENTRY_DECREASE 0x00
wolpra98 0:b25367985a15 76 #define LCD_ENTRY_INCREASE 0x02
wolpra98 0:b25367985a15 77 #define LCD_ENTRY_NOSHIFT 0x00
wolpra98 0:b25367985a15 78 #define LCD_ENTRY_SHIFT 0x01
wolpra98 0:b25367985a15 79
wolpra98 0:b25367985a15 80 // Set Display ---------------- 0b00001xxx
wolpra98 0:b25367985a15 81 #define LCD_SET_DISPLAY 0x08
wolpra98 0:b25367985a15 82
wolpra98 0:b25367985a15 83 #define LCD_DISPLAY_OFF 0x00
wolpra98 0:b25367985a15 84 #define LCD_DISPLAY_ON 0x04
wolpra98 0:b25367985a15 85 #define LCD_CURSOR_OFF 0x00
wolpra98 0:b25367985a15 86 #define LCD_CURSOR_ON 0x02
wolpra98 0:b25367985a15 87 #define LCD_BLINKING_OFF 0x00
wolpra98 0:b25367985a15 88 #define LCD_BLINKING_ON 0x01
wolpra98 0:b25367985a15 89
wolpra98 0:b25367985a15 90 // Set Shift ------------------ 0b0001xxxx
wolpra98 0:b25367985a15 91 #define LCD_SET_SHIFT 0x10
wolpra98 0:b25367985a15 92
wolpra98 0:b25367985a15 93 #define LCD_CURSOR_MOVE 0x00
wolpra98 0:b25367985a15 94 #define LCD_DISPLAY_SHIFT 0x08
wolpra98 0:b25367985a15 95 #define LCD_SHIFT_LEFT 0x00
wolpra98 0:b25367985a15 96 #define LCD_SHIFT_RIGHT 0x04
wolpra98 0:b25367985a15 97
wolpra98 0:b25367985a15 98 // Set Function --------------- 0b001xxxxx
wolpra98 0:b25367985a15 99 #define LCD_SET_FUNCTION 0x20
wolpra98 0:b25367985a15 100
wolpra98 0:b25367985a15 101 #define LCD_FUNCTION_4BIT 0x00
wolpra98 0:b25367985a15 102 #define LCD_FUNCTION_8BIT 0x10
wolpra98 0:b25367985a15 103 #define LCD_FUNCTION_1LINE 0x00
wolpra98 0:b25367985a15 104 #define LCD_FUNCTION_2LINE 0x08
wolpra98 0:b25367985a15 105 #define LCD_FUNCTION_5X7 0x00
wolpra98 0:b25367985a15 106 #define LCD_FUNCTION_5X10 0x04
wolpra98 0:b25367985a15 107
wolpra98 0:b25367985a15 108 #define LCD_SOFT_RESET 0x30
wolpra98 0:b25367985a15 109
wolpra98 0:b25367985a15 110 // Set CG RAM Address --------- 0b01xxxxxx (Character Generator RAM)
wolpra98 0:b25367985a15 111 #define LCD_SET_CGADR 0x40
wolpra98 0:b25367985a15 112
wolpra98 0:b25367985a15 113 #define LCD_GC_CHAR0 0
wolpra98 0:b25367985a15 114 #define LCD_GC_CHAR1 1
wolpra98 0:b25367985a15 115 #define LCD_GC_CHAR2 2
wolpra98 0:b25367985a15 116 #define LCD_GC_CHAR3 3
wolpra98 0:b25367985a15 117 #define LCD_GC_CHAR4 4
wolpra98 0:b25367985a15 118 #define LCD_GC_CHAR5 5
wolpra98 0:b25367985a15 119 #define LCD_GC_CHAR6 6
wolpra98 0:b25367985a15 120 #define LCD_GC_CHAR7 7
wolpra98 0:b25367985a15 121
wolpra98 0:b25367985a15 122 // Set DD RAM Address --------- 0b1xxxxxxx (Display Data RAM)
wolpra98 0:b25367985a15 123 #define LCD_SET_DDADR 0x80
wolpra98 0:b25367985a15 124
wolpra98 0:b25367985a15 125 #endif