Hallo Leute,
also nun funktioniert auch der 4-Bit Modus. Warum es bei mir nicht
funktioniert hat, lag wohl am anderen Controller. Mein display verwendet
den SPLC780D von Sunplus; das steht zumindes auf der Herstellerseite
www.oppod.com! Das ist aber nicht alles, wenn ich mich am Datasheet von
Sunplus halte, dann kann ich die Zeilenanzahl nicht einstellen.
Verwende ich aber das Manual, welches oppod bereitstellt und sehr
unterschiedlich im Vergleich zu dem von Sunplus ist (vgl. Bilder), dann
geht auf einmal alles wunderbar....
Das kann doch wohl nicht sein.. Gerade als Anfänger ist sowas nen riesen
Stein im Weg.
Man vergleiche beide Codes (1. meiner & 2. der vom Tutorial):
!!! Nicht wundern die Nibbles sind vertauscht!!! PA4-7 -> DB 4-7
1 | ; 3-Mal / Kann weggelassen werden...
|
2 | ldi tmp, 0b00110000
|
3 | out PORTA, tmp
|
4 | rcall en
|
5 | rcall en
|
6 | rcall en
|
1 | ldi temp1, 0b00000011 ; muss 3mal hintereinander gesendet
|
2 | out PORTD, temp1 ; werden zur Initialisierung
|
3 | rcall lcd_enable ; 1
|
4 | rcall delay5ms
|
5 | rcall lcd_enable ; 2
|
6 | rcall delay5ms
|
7 | rcall lcd_enable ; und 3!
|
8 | rcall delay5ms
|
Die Codes sind im Grunde gleich, jedoch kann ich bei mir das Senden auch
weglassen, es funktioniert genauso.
1 | ; 4-Bit
|
2 | ldi tmp, 0b00100000
|
3 | out PORTA, tmp
|
4 | rcall en
|
5 | rcall en
|
1 | ldi temp1, 0b00000010 ; 4bit-Modus einstellen
|
2 | out PORTD, temp1
|
3 | rcall lcd_enable
|
4 | rcall delay5ms
|
exakt gleich!
1 | ; 4-Bit / 1-Zeile
|
2 | ldi tmp, 0b10000000
|
3 | out PORTA, tmp
|
4 | rcall en
|
1 | ldi temp1, 0b00101000 ; 4Bit / 2 Zeilen / 5x8
|
2 | rcall lcd_command
|
Hier unterscheiden sich beide Befehle stark!!
1 | ; Display on / Cursor on / Blink on
|
2 | ldi data, 0b00001111
|
3 | rcall lcd_cmd
|
1 | ldi temp1, 0b00001100 ; Display ein / Cursor aus / kein Blinken
|
2 | rcall lcd_command
|
Dasselbe! nur ich verwende einen blinkenden Cursor
1 | ; Entry-Mode: Inc by 1
|
2 | ldi data, 0b00000010
|
3 | rcall lcd_cmd
|
1 | ldi temp1, 0b00000100 ; inkrement / kein Scrollen
|
2 | rcall lcd_command
|
3 | ret
|
Auch wieder ein starker Unterschied!
Da ich nicht genau weiß warum dies nun so ist, kann ich die Unterschiede
auch schlecht begründen, dennoch hoffe ich, dass ich dem einen oder dem
anderen damit helfen konnte!! Vielleicht meldet sich ja noch jmd der
Pros :-)
Danke für die Hilfe!
Gruß
Timo