PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problemem mit 4x20 mit LCD ks0073 Controller am RN.Control



gema
25.01.2008, 08:32
Hallo Leute,

ich suche jetzt schon seit Stunden nach einem Problem.

Ich hab das RN-Control Board mit dem Atmega32.
An diesem betreibe ich das 4x20 LCD mit dem ks0073 Conroller.

Ich kann jede Zeile beschreiben, jedoch bekomme ich die Daten die ich in die Zeile 2 und 4 schreiben auch in den Zeieln 1 bzw. 3 ab der 13. Stelle zu sehen. Ich verwende die Ullrich Radig lcd.c in einer etwas veränderten Form. Diese ist ja eigentlich nicht dur den ks0073 gedacht.
Leider kann ich das Problem nicht finden.

Hat einer von Euch eventuell eine Idee?

Gruß Georg

fumir
25.01.2008, 17:55
ich suche jetzt schon seit Stunden nach einem Problem.

*lol*
also ich glaube ich hab da noch ein paar probleme in der schublade liegen :-)

fumir
25.01.2008, 18:07
bei LCD_print unterscheidet sich die startadresse von zeile 1 nur um 12 bytes von zeile 2. da ja 20 zeichen in ner zeile sein sollen, kann das wohl nicht stimmen. vermutlich sind die weiteren startadressen auch falsch.



if (zeile == 0)
{
zeile = 0x80; //80
}
if (zeile == 1)
{
zeile = 0x8C; //8C A0
}

gema
25.01.2008, 20:31
natürlich können die Startadressen falsch sein, aber ich habe in jeder zeiel das stehen was da auch da stehen soll.
Hinzu kommt aber, dass in der Zeile 1 ab der Stelle 13 der Text erscgein der schon in Zeile 2 an Position 1 steht. Das selbe trifft auch auf die Zeile 4 zu die auch in der Zeile 3 erscheint.

Würde somt heissen, dass die Adressen doppelt vergeben sein müssten.
Ich hab aber die logik noch nicht herausgefunden.

Gruß Georg

wkrug
25.01.2008, 21:05
Mal ne Frage,
hat dein Display einen oder 2 Enable Eingänge ?
Wenn es nur einen hat, muss es wie ein 2x40 Zeichen Display angesteuert werden.
Die esten 20 Zeichen einer Zeile erscheinen dann in Zeile 1 die zweiten 20 Zeichen von Zeile1! in Zeile 2.
Das gleiche gilt dann für die Zeilen 3+4, die als Zeile 2 angesteuert werden.

Ein Display mit 2 Enable Eingängen braucht eine eigene Lib, die bei Bedarf den zweiten Enable Eingang des Displays aktiviert.

P.S.
Mit der von Dir verwendeten Lib hab ich noch nicht gearbeitet.

gema
25.01.2008, 21:35
Die 2x40 Idee muss ich mir nochmalgenauer anschauhen.
Ich hab auch grad das Datenbaltt vom KS0073 im Netz gefunden.

Ich werde aber heute nicht mehr dazu kommen.

Dennoch erst mal danke für den gedankenanstoss.

Georg

gema
25.01.2008, 21:39
Im Datenbaltt vom Display sind nur die Angaben von
Zeile 1 $00...$13
Zeile 2 $20...$33
Zeile 3 $40...$53
Zeile 4 $60...$73

Was aber irgend wie nicht passt.

Georg

gema
25.01.2008, 21:43
Das Display hat zudem nur einen Enable Eingang.

Georg

wkrug
26.01.2008, 09:02
Zeile 1 $00...$13
Zeile 2 $20...$33
Zeile 3 $40...$53
Zeile 4 $60...$73
Das passt schon, da es sich dabei um HEX Werte handelt.
Also ....09,0A,0B,0C,0D,0E,0F,10,11,12,13.
Dann sind das schon 20 Werte.
Die $13 entspricht somit der 19. Von 0...19 sinds dann 20 Zeichen.
Die $20 entspricht dann der 32 usw.

fumir
26.01.2008, 20:16
also ich würde jetzt einfach mal die hex-werte 0x80, 0xa0, 0xc0, 0xe0 als startwerte für die vier zeilen nehmen und sehen, ob und wie sich der fehler verändert.möglicherweise ist ja mehr als ein fehler im programm. die verwendeten adressen (2. und 4. zeile) fürs DDRAM scheinen mir jedenfalls nicht richtig zu sein (steht ja auch schon im kommentar, das man z.b. für die zweite zeile entweder 0x8c (12 zeichen/zeile) oder 0xa0 (20 zeichen/zeile) verwenden muss.