KS0073 und 4 Zeilen LCD

#717716
Lesenswert?

Hallo,

ich weiß das es dieses Thema schon mehrfach gab, aber ich habe leider 
keine Lösung gefunden. Es geht um einen ASM-Code für einen AT89C51CC03.

Mein Display macht was es will. Mal macht es die Init richtig und der 
Cursor blinkt an der richtigen Stelle. Aber nach Einschalten oder Reset, 
geht es mal und mal nicht. Wenn es den Text ausgibt, gibt es zwischen 
den Zeichen immer 2 Leerzeichen aus.

Gibt es beim Ks0073 auch so ein 3maliges Power On, wie beim HD44780?

Vielen Dank schon mal!

Grüße Anne
Angehängte Dateien:
Gast #717848
Lesenswert?

hallo

soweit ich weiß soll ks0070/73 der nachfolger sein für den HD44780 habe 
mal son bisschen umherexperementiert und zwar du hast nach der wartezeit 
von 18ms(einwenig höher setzen 100ms) schreibst du #030h, muss der wert 
auf #003h geändert werden sollte dann funktionieren siehe anhang du 
schreibst in cisc???

init_1:  lcall  delay18ms  ; Zeitverzögerung von 18ms                mov 
P0, #030h  ; Datenwert für POWER-ON an P1 egen
  lcall   enable    ; Daten in LCD übernehmen
  djnz  R7, init_1      ; LCD empfangsbereit
  lcall  busy        ; Abfrage des Busy-Flags
  mov  A, #034h
  lcall  write_instr
  mov  A, #009h
  lcall  write_instr
  mov  A, #030h
  lcall  write_instr
  mov  A, #00Fh
  lcall  write_instr  ; Anweisung an LCD ausgeben
  mov  A, #001h    ; Display wird gelöscht              lcall 
write_instr    ; Anweisung an LCD ausgeben
  mov  A, #006h    ; Cursor automatisch inkrementieren
  lcall  write_instr      ; Anweisung an LCD ausgeben
  ret


lcd_init:
    ldi  temp0,$64    ;20ms warten
    rcall  waitxms
    ldi  temp1,0b00000011  ;???
    out  portB,temp1
    rcall  lcd_enable    ;enablen
    rcall  lcd_enable    ;enablen
    rcall  lcd_enable    ;enablen
    ldi  temp1,0b00000010  ;4bit mod einstellen
    out  portB,temp1
    rcall  lcd_enable
    ldi  temp1,0b00101000  ;funktionset
    rcall  lcd_command
    ldi  temp1,0b00001100  ;display on
    rcall  lcd_command
    ldi  temp1,0b00000110  ;entry mod set
    rcall  lcd_command
    ret
Angehängte Dateien:
#717858
Lesenswert?

Hallo,

vielen Dank für Deine Antwort! Ich habe eben im ASM für einen 8051er 
Controller geschrieben.

Ich werde den Wert mal auf 03h ändern und schauen was dann passiert. Und 
diese 03h werden nur 1 mal ans LCD geschickt? Nicht 3 mal wie beim 
HD44780 der Power-On-Befehl?!

Wieso rufst Du in deinem Programm 3 mal das Enable auf?

Viele Grüße Anne
Gast #717864
Lesenswert?

naja habe mal in der ausbildung 8051 und avr programmiert
mmhh diese 03hex musst du 3mal enablen i hab im net versucht was zu 
finden warum grade 03hex weil beim ks0070 musst du auch (laut 
datenblatt) 30hex schreiben aber dann spinnt mein lcd nach jeden reset 
kann aber auch der return home befehl sein
achso lcd ist 8bitmode?? mit der abfrage busy habe ich leider keine 
erfahrung wie du sehen kannst ist meine routine zeitabhängig

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren