lcd.h


1
//lcd.h
2
//Definitionen fuer HD44780
3
4
//Pin-Belegungen
5
#define LCD_CONTROL_DDR      DDRB
6
#define LCD_CONTROL_PORT    PORTB
7
#define LCD_DATA_DDR      DDRA
8
#define LCD_DATA_PORT      PORTA
9
#define LCD_REGISTER_SELECT    PB2 //RS
10
#define LCD_READ_WRITE      PB1
11
#define LCD_ENABLE      PB0 //E
12
#define LCD_FIRST_DATA_PIN    PA4 // Datenleitungen
13
14
//Initialisierung
15
#define LCD_INTERNAL_RESET_TIME_MS  15
16
#define  LCD_INIT_TIME_1_MS    5 //mindestens 4.1ms
17
#define LCD_INIT_TIME_2_MS    1
18
#define LCD_INIT_TIME_3_MS    1
19
#define LCD_4_BIT_TIME_MS    5
20
#define LCD_CLEAR_DISPLAY_MS    2
21
#define LCD_CURSOR_HOME_MS      2
22
23
#define LCD_COMMAND_TIME_US    42
24
#define LCD_WRITEDATA_US          46
25
#define LCD_8_BIT      0x30
26
#define LCD_4_BIT      0x20
27
#define LCD_ENABLE_TIME_MS    1 //mindestens 450ns
28
29
//Funktion setzen Interfacelaenge (4/8 Bit), Zeilenzahl und Zeichensatz Auswahl
30
#define LCD_SET_FUNCTION          0x20
31
#define LCD_FUNCTION_4BIT         0x00
32
#define LCD_FUNCTION_8BIT         0x10
33
#define LCD_FUNCTION_1LINE        0x00
34
#define LCD_FUNCTION_2LINE        0x08
35
#define LCD_FUNCTION_5X7          0x00
36
#define LCD_FUNCTION_5X10         0x04
37
38
39
//Cursor und Display Shift: Cursor bewegen und Display Shift ohne Änderung des DD-Ram
40
#define LCD_SET_DISPLAY            0x08
41
#define LCD_DISPLAY_OFF           0x00
42
#define LCD_DISPLAY_ON            0x04
43
#define LCD_CURSOR_OFF            0x00
44
#define LCD_CURSOR_ON             0x02
45
#define LCD_BLINKING_OFF          0x00
46
#define LCD_BLINKING_ON           0x01
47
48
//Entry Mode Set - Cursor Bewegungsrichtung und Display Shift AN / AUS
49
#define LCD_SET_ENTRY             0x04
50
#define LCD_ENTRY_DECREASE        0x00
51
#define LCD_ENTRY_INCREASE          0x02
52
#define LCD_ENTRY_NOSHIFT         0x00
53
#define LCD_ENTRY_SHIFT           0x01
54
55
56
// Zeilendefinitionen des verwendeten LCD
57
// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
58
// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
59
60
#define LCD_SET_DDADR             0x80
61
#define LCD_DDADR_LINE1           0x00
62
#define LCD_DDADR_LINE2           0x40
63
#define LCD_DDADR_LINE3           0x10
64
#define LCD_DDADR_LINE4           0x50
65
66
#define LCD_CLEAR_DISPLAY         0x01