LCD-Library
Dependents: Projekt_Wecker_LCD Projekt_Wecker_LCD Projekt_Wecker_LCD
LCD.h@0:b25367985a15, 2015-04-30 (annotated)
- Committer:
- wolpra98
- Date:
- Thu Apr 30 10:35:52 2015 +0000
- Revision:
- 0:b25367985a15
A LCD-Library;
Who changed what in which revision?
User | Revision | Line number | New 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 |