Hallo, ich will ja nicht eure Zeit verschwenden aber ich habe da mal eine Frage. Und zwar zur LCD intialisierung. Ich habe daheim alles mal aufgebaut (funktioniert auch alles). Ich kann jetzt Text am LCD darstellen. Das Programm kann ich auch nachvollziehen. Nur eben den Teil mit der Displayinitalisierung nicht. Irgendwie stimmen die Bits doch mit dem LCD-Datenblatt nicht überein? Könntet ihr mir vielleicht ein paar Kommentare an den unteren Text schreiben? lcd_init: ldi temp3,50 powerupwait: rcall delay5ms dec temp3 brne powerupwait ldi temp1, 0b00000011 ;muss 3mal hintereinander gesendet ??? ? out PORTD, temp1 ;werden zur Initialisierung rcall lcd_enable ;1 rcall delay5ms rcall lcd_enable ;2 rcall delay5ms rcall lcd_enable ;und 3! rcall delay5ms ? ldi temp1, 0b00000010 ;4bit-Modus einstellen out PORTD, temp1 rcall lcd_enable rcall delay5ms ? ldi temp1, 0b00101000 ;noch was einstellen... rcall lcd_command ? ldi temp1, 0b00001100 ;...nochwas... rcall lcd_command ? ldi temp1, 0b00000100 ;endlich fertig rcall lcd_command ret
Hallo Bastian, habe selber noch kein LCD angesteuert und weis auch nicht welcher controller drauf ist aber so vom gefühl her du schaltest in den 4bit mod > ? ldi temp1, 0b00000010 ;4bit-Modus einstellen | out PORTD, temp1 | rcall lcd_enable | rcall delay5ms > ? ldi temp1, 0b0010 ??? 1000 ;noch was einstellen... und dann 4bit u. 4bit auf welche 4bit hört dein LCD da ???? würds einfach mal tauschen die beiden einstellung! denke einen Test ist´s wert?? Gruß Stefan
Also der Controller ist ein KS0070B. Stefan: Auf welche 4 Bits soll denn mein LCD hören? Die werden doch grat getauscht?!
Hallo Bastian, meinte nur das du das disp nicht mit einem 8bit wort ansprechen kannst da du es ja vorher schon in den 4bit modus hast ???? rein von der logik her stimmt das so ?? hab selber noch nie mit einem lcd gespielt :-)) ich würde einfach diese beiden teile mal zum test tauschen im quell rcall delay5ms auf 4bit umgestellt>? ldi temp1, 0b00000010 ;4bit-Modus einstellen out PORTD, temp1 rcall lcd_enable rcall delay5ms 8bit ausgabe >> ? ldi temp1, 0b00101000 ;noch was einstellen... rcall lcd_command gruß stefan
Achso, also in dem Unterprogramm LCD_command werden anhand von dem Befehl `swap´ die beiden Nipples also die unteren und die oberen 4 Bits einzeln nacheinander ausgegeben. Guckst du hier: lcd_command: mov temp2, temp1 swap temp1 andi temp1, 0b00001111 out PORTD, temp1 rcall lcd_enable andi temp2, 0b00001111 out PORTD, temp2 rcall lcd_enable rcall delay50us ret Mein Problem ist, dass ich die Bits die nacheinander an das LCD geschickt werden, anhand von dem LCD-Datenblatt nicht nachvollziehen kann.
0b00000010 = Clear Dislplay Bei den Anderen sind schon die Parameter für 4/8 bit Modus, Cursor, Shift links, Schriftgröße usw. Guck mal bei displaytech z.B. Cmd Function Set RS = 0 RW = 0 Daten byte 0b0011NFXX N = Anzahl Zeilen vom LCD (also 1 oder 2... 2 zeilen auch wenn es 4 sind) F = Font 5x7 =0 Font 5x10 = 1 usw. steht eigentlich alles drin
Hallo, google war mein freund "hd44780 initialisierung" und auch auf deutsch ein kleine zusammenfassung ist da zu finden http://www.the-starbearer.de/Roboterelektronik/LCDDisplays/LCD.htm muss doch noch mal mit einem LCD spielen :-)) viel spaß Stefan
Hy Sebastian, also Clear Display ist doch schon mal 0b00000001. Ich hab ja auch die Instruction Tabelle vor mir liegen, aber ich wüsste gerne was bei dem Assemblertext nacheinander passiert. Am besten wäre es wenn mir jemand grat mal neben den A.Text die Kommentare dazuschreiben könnte.
guck dir das mal an http://www.displaytech.com.hk/pdf/char/164a series-v10.PDF auf seite 6 ist sowas wie ein struktogramm ich weiß du hast sicherlich nen anderen conrtroller... darum bestimmt auch der unterschied mit CLS, aber im grunde sind die funktionen und reihen folge identisch
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.