PWM Timer0  Ver.1.0.
Felix S.
lcd-routines.h
Go to the documentation of this file.
1 
6 #ifndef LCD_ROUTINES_H
7 #define LCD_ROUTINES_H
8 
10 // Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
11 
12 #ifndef F_CPU
13 #define F_CPU 16000000UL
14 #endif
15 
17 // Pinbelegung für das LCD, an verwendete Pins anpassen
18 // Alle LCD Pins müssen an einem Port angeschlossen sein und die 4
19 // Datenleitungen müssen auf aufeinanderfolgenden Pins liegen
20 
21 // LCD DB4-DB7 <--> PORTD Bit PD0-PD3
22 #define LCD_PORT PORTD
23 #define LCD_DDR DDRD
24 #define LCD_DB 4
25 
26 
27 #define LCD2_PORT PORTB
28 #define LCD2_DDR DDRB
29 // LCD RS <--> PORTD Bit PD4 (RS: 1=Data, 0=Command)
30 #define LCD_RS 0
31 
32 // LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten)
33 #define LCD_EN 1
34 
36 // LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
37 
38 #define LCD_BOOTUP_MS 15
39 #define LCD_ENABLE_US 20
40 #define LCD_WRITEDATA_US 46
41 #define LCD_COMMAND_US 42
42 
43 #define LCD_SOFT_RESET_MS1 5
44 #define LCD_SOFT_RESET_MS2 1
45 #define LCD_SOFT_RESET_MS3 1
46 #define LCD_SET_4BITMODE_MS 5
47 
48 #define LCD_CLEAR_DISPLAY_MS 2
49 #define LCD_CURSOR_HOME_MS 2
50 
52 // Zeilendefinitionen des verwendeten LCD
53 // Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
54 // Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
55 
56 #define LCD_DDADR_LINE1 0x00
57 #define LCD_DDADR_LINE2 0x40
58 #define LCD_DDADR_LINE3 0x10
59 #define LCD_DDADR_LINE4 0x50
60 
62 // Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.
63 void lcd_init( void );
64 
66 // LCD löschen
67 void lcd_clear( void );
68 
70 // Cursor in die 1. Zeile, 0-te Spalte
71 void lcd_home( void );
72 
74 // Cursor an eine beliebige Position
75 void lcd_setcursor( uint8_t spalte, uint8_t zeile );
76 
78 // Ausgabe eines einzelnen Zeichens an der aktuellen Cursorposition
79 void lcd_data( uint8_t data );
80 
82 // Ausgabe eines Strings an der aktuellen Cursorposition
83 void lcd_string( const char *data );
84 
86 // Definition eines benutzerdefinierten Sonderzeichens.
87 // data muss auf ein Array[8] mit den Zeilencodes des zu definierenden Zeichens
88 // zeigen
89 void lcd_generatechar( uint8_t code, const uint8_t *data );
90 
92 // Ausgabe eines Kommandos an das LCD.
93 void lcd_command( uint8_t data );
94 
95 
97 // LCD Befehle und Argumente.
98 // Zur Verwendung in lcd_command
99 
100 // Clear Display -------------- 0b00000001
101 #define LCD_CLEAR_DISPLAY 0x01
102 
103 // Cursor Home ---------------- 0b0000001x
104 #define LCD_CURSOR_HOME 0x02
105 
106 // Set Entry Mode ------------- 0b000001xx
107 #define LCD_SET_ENTRY 0x04
108 
109 #define LCD_ENTRY_DECREASE 0x00
110 #define LCD_ENTRY_INCREASE 0x02
111 #define LCD_ENTRY_NOSHIFT 0x00
112 #define LCD_ENTRY_SHIFT 0x01
113 
114 // Set Display ---------------- 0b00001xxx
115 #define LCD_SET_DISPLAY 0x08
116 
117 #define LCD_DISPLAY_OFF 0x00
118 #define LCD_DISPLAY_ON 0x04
119 #define LCD_CURSOR_OFF 0x00
120 #define LCD_CURSOR_ON 0x02
121 #define LCD_BLINKING_OFF 0x00
122 #define LCD_BLINKING_ON 0x01
123 
124 // Set Shift ------------------ 0b0001xxxx
125 #define LCD_SET_SHIFT 0x10
126 
127 #define LCD_CURSOR_MOVE 0x00
128 #define LCD_DISPLAY_SHIFT 0x08
129 #define LCD_SHIFT_LEFT 0x00
130 #define LCD_SHIFT_RIGHT 0x04
131 
132 // Set Function --------------- 0b001xxxxx
133 #define LCD_SET_FUNCTION 0x20
134 
135 #define LCD_FUNCTION_4BIT 0x00
136 #define LCD_FUNCTION_8BIT 0x10
137 #define LCD_FUNCTION_1LINE 0x00
138 #define LCD_FUNCTION_2LINE 0x08
139 #define LCD_FUNCTION_5X7 0x00
140 #define LCD_FUNCTION_5X10 0x04
141 
142 #define LCD_SOFT_RESET 0x30
143 
144 // Set CG RAM Address --------- 0b01xxxxxx (Character Generator RAM)
145 #define LCD_SET_CGADR 0x40
146 
147 #define LCD_GC_CHAR0 0
148 #define LCD_GC_CHAR1 1
149 #define LCD_GC_CHAR2 2
150 #define LCD_GC_CHAR3 3
151 #define LCD_GC_CHAR4 4
152 #define LCD_GC_CHAR5 5
153 #define LCD_GC_CHAR6 6
154 #define LCD_GC_CHAR7 7
155 
156 // Set DD RAM Address --------- 0b1xxxxxxx (Display Data RAM)
157 #define LCD_SET_DDADR 0x80
158 
159 #endif