Hallo, ich mach jetzt meine ersten Versuche im MC Bereich und arbeite gerade das AVR Tutorial durch. Bin gerade beim Kapitel LCD, aber irgendwie komme ich nicht drauf wie ich mein 4x20 Display richtig initialisiere. Im Tutorial wird ein zweizeiliges Display benutzt, das so initialisiert wird (4-Bit Modus): ldi temp1, 0b00101000 ; 4Bit 2 Zeilen 5x8 rcall lcd_command Ich hab bei den Commands folgendes gefunden: Konfiguration: 0b001dnfxx Einstellen der Interface Art, Modus, Font • d = 0, 4-Bit Interface • d = 1, 8-Bit Interface • n = 0, 1 zeilig • n = 1, 2 zeilig • f = 0, 5x7 Pixel • f = 1, 5x11 Pixel Hier gibts aber nur die Möglichkeiten einzeilig oer zweizeilig zu wählen. Wenn ich es mal auf zweizeilig lasse so wie im Tutorial und dann einfach die Zeilen der Reihe nach schreibe, dann wird zuerst in die 1., dann in die 3., danach in die 2. und danach in die 4. Zeile geschrieben. Ich hab mal im Datenblatt etwas gelesen und gesehen, dass das vermutlich an der Adresse im Display liegt. Da deckt der erste Speicherbereich die 1. Zeile ab, danach kommt die 3.,... Aber warum das so ist und wie ich hinbekomme, dass die Zeilen der Reihe nach mit meinen Zeichen befüllt werden kapier ich irgendwie nicht. Kann mir da wer weiterhelfen?
Gast
#2019206
Markus Pfleger schrieb: > Wenn ich es mal auf zweizeilig lasse so wie im Tutorial und dann einfach > die Zeilen der Reihe nach schreibe, dann wird zuerst in die 1., dann in > die 3., danach in die 2. und danach in die 4. Zeile geschrieben. > > Ich hab mal im Datenblatt etwas gelesen und gesehen, dass das vermutlich > an der Adresse im Display liegt. Da deckt der erste Speicherbereich die > 1. Zeile ab, danach kommt die 3.,... Aber warum das so ist und wie ich > hinbekomme, dass die Zeilen der Reihe nach mit meinen Zeichen befüllt > werden kapier ich irgendwie nicht. Das ist nunmal so! Die erste Zeile geht in der dritten weiter...die zweite in der vierten. Da musst du dir ne Funktion schreiben, die die Zeilen und ihre Buchstaben verwaltet.
Gast
#2019209
Kannst ein Zähler mitlaufen lassen, der sich merkt, an welche Stelle der Buchstabe gesschrieben werden soll und wenn er aus der Zeile läuft, musst du einen Offset dazuaddieren, damit du in der zweiten Zeile landest.
Gast
#2019219
Also so in etwa (nur als Beispiel):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
Und hier noch die ganzen Befehle für den HD44780:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
Gruß, Dennis
Gast
#2019224
Bei einem Fließtext musst du halt erkennen, an welcher Stelle dein Zähler ist und dann entsprechend den Cursor neu setzen, wenn du aus einer Zeile rausläufst.
Gast
#2019229
Achja: Dein vierzeiliges LCD ist in Wirklichkeit halt nur ein zweizeiliges ;-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.