Hi,
wir haben ein LCD Display angesteurt und uns dafür eine kleine
Funktionssamlung geschrieben. Das ganze Funktioniert auch gut soweit nur
wir haben einen fehler beim setzten der Position.
1 | void lcd_init (void)
|
2 | {
|
3 | _delay_ms(17); //Display muss min. 15 ms warten, nachdem die Betriebsspannung angelegt wurde
|
4 | lcd_control(0x28, E1); //System set: N = 1 - vierzeiliges Display, 4 - Bit - Modus
|
5 |
|
6 | _delay_ms(5); //Warteschleife von min. 4,1 ms
|
7 | lcd_control(0x28, E1);
|
8 |
|
9 | _delay_us(120); //Warteschleife von min. 100 us
|
10 | lcd_control(0x28, E1);
|
11 |
|
12 | _delay_us(100); //Warteschleife von etwa 100 us - Busy flag
|
13 |
|
14 | lcd_control(0x0C, E1); //Display wird eingeschaltet, Cursor wird ausgeschaltet
|
15 |
|
16 | lcd_control(0x06, E1); //Schreibrichtung wird festgelegt
|
17 |
|
18 | lcd_control(0x02, E1); //Platzierung des Cursors an Position '0'
|
19 | _delay_ms (2); //Warteschleife von min. 1,64 ms
|
20 |
|
21 |
|
22 |
|
23 | _delay_ms(17); //Display muss min. 15 ms warten, nachdem die Betriebsspannung angelegt wurde
|
24 | lcd_control(0x28, E2); //System set: N = 1 - vierzeiliges Display, 4 - Bit - Modus
|
25 |
|
26 | _delay_ms(5); //Warteschleife von min. 4,1 ms
|
27 | lcd_control(0x28, E2);
|
28 |
|
29 | _delay_us(120); //Warteschleife von min. 100 us
|
30 | lcd_control(0x28, E2);
|
31 |
|
32 | _delay_us(100); //Warteschleife von etwa 100 us - Busy flag
|
33 |
|
34 | lcd_control(0x0C, E2); //Display wird eingeschaltet, Cursor wird ausgeschaltet
|
35 |
|
36 | lcd_clear(); //Display wird gelöscht
|
37 |
|
38 | lcd_control(0x06, E2); //Schreibrichtung wird festgelegt
|
39 |
|
40 | lcd_control(0x02, E2); //Platzierung des Cursors an Position '0'
|
41 | _delay_ms (2); //Warteschleife von min. 1,64 ms
|
42 |
|
43 | }
|
lcd_control sendet eine befehl an das Display. Da das Display 4x27
Zeichen besitzt sind Zwei Kontroller drauf. Mit dem zweiten Parameter
von lcd_control geben wir an, welcher kontroller angesprochen wird. Wenn
wir das Display initialisieren setzt er den text den wr schreiben aber
nicht and die erste sondern an irgendeine stelle in der oberen hälft.
Könnt ihr uns sagen warum?
Gruß, Timo