Forum: Mikrocontroller und Digitale Elektronik DIP204 LCD wiederholt einen Teil der 1. Zeile


von Michi (Gast)


Lesenswert?

Hi Zusammen. Nach langer zeit ging nun es nun entlich mein EA 
DIP204-4NLED 4x20 LCD mit einem KS0073 Controller.

Komischerweise wiederholen sich die Zeichen der 1. Linie nach 12 Zeichen 
auch am anfang der 2. Zeile...

Wenn ich irgendwo einen Fehler in der Verdrahtung gemacht habe müsste 
sich doch die ganze Zeile wiederholen?

Die ganze Software zum ansteuern hab ich aus dem Tutorial hier, einfach 
leicht verändert auf mein Display (init befehle).

Programm:

lcd_flash_string:
           push  temp1

lcd_flash_string_1:
           lpm   temp1, Z+
           cpi   temp1, 0
           breq  lcd_flash_string_2
           rcall  lcd_data
           rjmp  lcd_flash_string_1

lcd_flash_string_2:
           pop   temp1
           ret

jemand eine Ahnung was es sein könnte?

von Michi (Gast)


Angehängte Dateien:

Lesenswert?

Hmm also ist ganz komisch. Ich kann mir allerdings nicht vorstellen dass 
es bei meinem programm ein fehler gibt.

wenn ich die 1. Zeile beschreibe dann sind die letzen 8 Zeichen 
dupliziert am anfang der 2. Zeile. Wenn ich danach die 2. Zeile auch 
beschreibe, werden die ersten 8 Ziffern durch die duplikate der 1. Zeile 
überdeckt, und erst nach diesen 8 duplikaten erscheint der rest der 2. 
Zeile.

Die 2. Zeile wird allerdings nicht dupliziert. Ab der 3. Zeile hab ich 
dann wieder das gleiche problem wie bei Zeile 1 und 2.

Könnte es sein, dass ich das Display irgendwie falsch initialisiere?
Mein Initialisierungsvorgang:

lcd_init:
           push  temp1
           in    temp1, LCD_DDR
           ori   temp1, (1<<PIN_E) | (1<<PIN_RS) | 0x0F
           out   LCD_DDR, temp1
           ldi   temp3,6
powerupwait:
           rcall delay5ms
           dec   temp3
           brne  powerupwait
           out PORTC, temp1
           rcall lcd_enable
           rcall delay5ms
           rcall lcd_enable
           rcall delay5ms
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00000010
           out PORTC, temp1
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00101010
           rcall lcd_command
           ldi temp1, 0b00001100
           rcall lcd_command
           ldi temp1, 0b00000100
           rcall lcd_command
           pop   temp1
    ret

Im Anhang das Datenblatt meines Controllers. Ich bin mir allerdings auch 
nicht sicher wie ich das ganze richtig einstelle.

wenn RE=1 sein muss für den Code, muss ich vorhher LCD_Enable aufrufen?

von Michi (Gast)


Angehängte Dateien:

Lesenswert?

Hab das ganze jetzt mal noch Fotografiert, damit ihrs euch etwa 
vorstellen könnt.

Für mich sieht es so aus, als ob das LCD meint es sei 28 Zeilen lang. 
Ausserdem fehlen die letzten 8 Zeichen der 2. Zeile. Allerdings werden 
diese geschrieben, nur einfach nicht sichtbar???

Niemand irgend eine Idee?? Verkabelt habe ich alles 99% richtig und 
keine Kurzschlüsse! Hab ich das Display falsch initialisiert??

von Michi (Gast)


Lesenswert?

vielleicht hat ja jemand mal ein ähnliches problem:

Es lag an der Fehlerhaften Initialisierung. Im 8-Bit Modus funktioniert 
nun alles.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.