Hallo Leute, ich habe mir vor kurzem ein 1x16Zeichen LCD von Reichelt(lcd 161a) angeschafft (KS0066U-Controller) und ihn via dem ASM LCD-Tutorial (http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD) auch gleich mal angesteuert. Nach anfaenglichen Problem funktioniert auch alles soweit ganz okay. Jetzt aber zu meiner Frage, die ich mit Hilfe des Tutorials/Foren nicht beantwortet bekommen habe: Wie kann ich die aktuelle Cursor-Position und den Text aus dem LC-Display wieder auslesen? Und vielleicht noch ne Frage hinterher: Das Display hat die unangenehme Eigenschaft, dass die ersten 8 Zeichen im Speicher auf 00h-07h und die restlichen 8 auf 40h-47h liegen. Das macht u.a. das Display-schieben recht unangenehm, weil z.B. beim links schieben die Zeichen 00h-07h -> ??h-06h und 40h-47h->39h-46h geschoben werden (so stelle ich mir das zumindest vor) und daher Zeichen 39h erstmal komplett verschwindet. Vielleicht hat ja einer von Euch die gleichen Probleme gehabt/geloest und kann mir ein wenig weiterhelfen. Beste Gruesse, Parvis
@ Parvis S. (parvis) >Wie kann ich die aktuelle Cursor-Position und den Text aus dem >LC-Display wieder auslesen? Ist selten notwendig/sinnvoll. Den Text kann man auslesen, dazu muss man den DDRAM lesen. Die Cursorposition kann man AFIK nicht auslesen. Muss man auch nicht, schlieslich kann der uC sie setzen, dann weiss er wo der Cursor steht. >restlichen 8 auf 40h-47h liegen. Das macht u.a. das Display-schieben >recht unangenehm, Das kann man direkt per Befehl. MFG Falk
> Ist selten notwendig/sinnvoll. Den Text kann man auslesen, dazu muss man > den DDRAM lesen. Die Cursorposition kann man AFIK nicht auslesen. Muss > man auch nicht, schlieslich kann der uC sie setzen, dann weiss er wo der > Cursor steht. Das Auslesen ist genau mein Problem. Wie mache ich das??? Aus dem Datenblatt lerne ich zwar welches Lesekommando es gibt, aber was mache ich danach??? Lese ich nach dem Lese-Befehl die Daten analog ein wie ich sie schreiben wuerde??? Den Cursor betreffend hatte ich mir gedacht, dass man ihn wenn man die Position schreiben kann auch wieder einlesen kann. Falls das doch nicht geht, dann muss wohl doch eines Cursor-Speicher-Register herhalten. > >>restlichen 8 auf 40h-47h liegen. Das macht u.a. das Display-schieben >>recht unangenehm, > > Das kann man direkt per Befehl. Welcher Befehl???? Der Schiebe-Befehl funktioniert zwar, aber wenn ich z.B. den Text '12345678abcdefgh' um eins nach links verschiebe, dann erhalte ich '234567 bcdefgh' (wegen der Adressen-Luecke zwischen den linken und rechten 8 Zeichen). Beste Gruesse, Parvis
Parvis S. wrote: > Welcher Befehl???? Der Schiebe-Befehl funktioniert zwar, aber wenn ich > z.B. den Text '12345678abcdefgh' um eins nach links verschiebe, dann > erhalte ich '234567 bcdefgh' (wegen der Adressen-Luecke zwischen den > linken und rechten 8 Zeichen). > > Beste Gruesse, > > Parvis Mach doch einfach einen Zeiger, der dir auf den Text zeigt. Und in deiner Ausgaberoutine inkrementierst und prüfst du, ob der Zähler größer 7 ist, wenn ja dann sendest du halt vorneweg ein Kommando "Beginne an Adresse 0x40 mit Schreiben". Da brauchst du m. E. nix schieben!?
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.