1 | #ifndef F_CPU
|
2 | #define F_CPU 3686400
|
3 | #endif
|
4 |
|
5 | ////////////////////////////////////////////////////////////////////////////////
|
6 | // Pinbelegung für das LCD, an verwendete Pins anpassen
|
7 | // Alle LCD Pins müssen an einem Port angeschlossen sein und die 4
|
8 | // Datenleitungen müssen auf aufeinanderfolgenden Pins liegen
|
9 |
|
10 | // LCD DB4-DB7 <--> PORTD Bit PD0-PD3
|
11 | #define LCD_PORT PORTC
|
12 | #define LCD_DDR DDRC
|
13 | #define LCD_DB PC0
|
14 |
|
15 | // LCD RS <--> PORTD Bit PD4 (RS: 0=Data, 1=Command)
|
16 | #define LCD_RS PC4
|
17 |
|
18 | // LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten)
|
19 | #define LCD_EN PC5
|
20 |
|
21 | ////////////////////////////////////////////////////////////////////////////////
|
22 | // LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
|
23 |
|
24 | #define LCD_BOOTUP_MS 16
|
25 | #define LCD_ENABLE_US 1
|
26 | #define LCD_WRITEDATA_US 46
|
27 | #define LCD_COMMAND_US 42
|
28 |
|
29 | #define LCD_SOFT_RESET_MS1 5
|
30 | #define LCD_SOFT_RESET_MS2 1
|
31 | #define LCD_SOFT_RESET_MS3 1
|
32 | #define LCD_SET_4BITMODE_MS 5
|
33 |
|
34 | #define LCD_CLEAR_DISPLAY_MS 2
|
35 | #define LCD_CURSOR_HOME_MS 2
|
36 |
|
37 | ////////////////////////////////////////////////////////////////////////////////
|
38 | // Zeilendefinitionen des verwendeten LCD
|
39 | // Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
|
40 | // Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
|
41 |
|
42 | #define LCD_DDADR_LINE1 0x00
|
43 | #define LCD_DDADR_LINE2 0x40
|
44 | #define LCD_DDADR_LINE3 0x10
|
45 | #define LCD_DDADR_LINE4 0x50
|
46 | .
|
47 | .
|
48 | .
|
49 | // LCD Befehle und Argumente.
|
50 | // Zur Verwendung in lcd_command
|
51 |
|
52 | // Clear Display -------------- 0b00000001
|
53 | #define LCD_CLEAR_DISPLAY 0x01
|
54 |
|
55 | // Cursor Home ---------------- 0b0000001x
|
56 | #define LCD_CURSOR_HOME 0x02
|
57 |
|
58 | // Set Entry Mode ------------- 0b000001xx
|
59 | #define LCD_SET_ENTRY 0x04
|
60 |
|
61 | #define LCD_ENTRY_DECREASE 0x00
|
62 | #define LCD_ENTRY_INCREASE 0x02
|
63 | #define LCD_ENTRY_NOSHIFT 0x00
|
64 | #define LCD_ENTRY_SHIFT 0x01
|
65 |
|
66 | // Set Display ---------------- 0b00001xxx
|
67 | #define LCD_SET_DISPLAY 0x08
|
68 |
|
69 | #define LCD_DISPLAY_OFF 0x00
|
70 | #define LCD_DISPLAY_ON 0x04
|
71 | #define LCD_CURSOR_OFF 0x00
|
72 | #define LCD_CURSOR_ON 0x02
|
73 | #define LCD_BLINKING_OFF 0x00
|
74 | #define LCD_BLINKING_ON 0x01
|
75 |
|
76 | // Set Shift ------------------ 0b0001xxxx
|
77 | #define LCD_SET_SHIFT 0x10
|
78 |
|
79 | #define LCD_CURSOR_MOVE 0x00
|
80 | #define LCD_DISPLAY_SHIFT 0x08
|
81 | #define LCD_SHIFT_LEFT 0x00
|
82 | #define LCD_SHIFT_RIGHT 0x04
|
83 |
|
84 | // Set Function --------------- 0b001xxxxx
|
85 | #define LCD_SET_FUNCTION 0x20
|
86 |
|
87 | #define LCD_FUNCTION_4BIT 0x00
|
88 | #define LCD_FUNCTION_8BIT 0x10
|
89 | #define LCD_FUNCTION_1LINE 0x00
|
90 | #define LCD_FUNCTION_2LINE 0x08
|
91 | #define LCD_FUNCTION_5X7 0x00
|
92 | #define LCD_FUNCTION_5X10 0x04
|
93 |
|
94 | #define LCD_SOFT_RESET 0x30
|
95 | .
|
96 | .
|
97 | .
|