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
Hallo nochmal, kann denn jemand mal kurz zusammenfassen, was die Unterschiede zwischen den beiden Controllern sind? Bisher habe ich nur die Unterschiedlichen Befehle bei der Init gesehen und die max. Dauer der fallenden Flanke des Enable-Bits. Grüße Anne
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
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
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
Okay, ich werde es heute Abend gleich so testen und mich dann nochmal melden! Vielen Dank erstmal für deine Antwort! Viele Grüße Anne
Hallo, nachdem ich es nun auf 03h geändert habe, geht es leider immer noch nicht :-( Hat jemand eine Lösung? Grüße Anne
moin habe mir mal dein code angeschaut wenn du schon im 4bit-mode bist, muss 2mal ein halbbyte geschickt werden soll heissen bei writ_instr/write_data muss du das obere highbyte schicken dann das lowbyte schicken
Nein nein, dass LCD ist im 8-Bit-Mode initialisiert. Evtl stimmen die Kommentare nicht ganz!
Leg mal R/W auf Masse, also nur schreiben. Power-on-Reset des LCDs abwarten (ca. 100ms) Dann folgende Hex-Befehle (RS=0) schicken: 34, 09, 30, 0F, 01, 06 Zwischen den Befehlen 2ms warten, Enable braucht keine Wartezeit, einfach setb und clr Enable. Jetzt kannst Du Daten senden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.