PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCDProblem, die zweite



the_Ghost666
11.07.2005, 10:00
Sorry wegen dem Titel, hat eigentlich nichts mit dem Thread LCDProblem zu tun.
Ich möchte auf einem 1x16 Zeilen LCD eine Laufschrift anzeigen lassen. Man gibt dem PIC16F84A die Nachricht ein, setzt den Jumper auf Laufmodus und dann soll die im EEProm gespeicherte Schrift durchs Display laufen.
Hatte aber einige Probleme, da das Display 2Zeilen hat, die hintereinander geschaltet wurden, damit man auf 16 Zeichen kommt. Der anzeigbare Bereich im Display liegt bei 0-7h und 40-47h. Ich hab schon versucht es mit der DisplayShift Funktion zu regeln, aber das klappt nicht.

Wie lass ich den String vom EEProm im Display laufen? Bitte um Hilfe.

Mobius
11.07.2005, 10:47
Also, ich kenn das Display nicht, abe das Problem hört sich interessant an. Mein Vorschlag wäre:

1. Du ladest die gesammte Nachricht in den Speicher deines PIC.
2. Du schaltest den Schift-Modus aus (ich denke mal, der schiftet von 7-0 und von 47-40 unabhängig) und ladest den ersten Buchstaben in 47h.
3. Danach kommt der Zweite in den 47h und du ladest den Inhalt von 47h in 46h.
4. Das machst du so lange, bis du bei 40 angekommen bist, und du ladest halt dann den aus 40h Buchstaben in 7h rein und fangst an zu schiften.

Ich würde zwei Funktionen für das Schiften des High- und des Low-Bereiches machen, wobei beide einen Register (meist sowieso das W) haben, bei der sie bekommen, welches der Buchstaben geschiftet werden soll.
Danach ruftst du zuerst nur das High-Schift 6 mal auf (die ersten 7 Buchstaben scrollen von Rechts nach Links in das Bild) und danach immer abwechselnd den High- und danach den Low-Schift mit dem Inhalt der 40er-Speicherzelle (!!!vor dem High-schift auslesen!!!) auf.
Ich kenn das Timing und die Schnelligkeit des Displays nicht und wenn es ruckelt, kannst du einige Lese-Operationen auslassen, indem du zwei Laufvariablen definierst und sie durch die Nachricht im Memory-Block laufen lässt. Die eine zeigt an, welcher Buchstabe sich im 47h befindet und der Andere zeigt auf den Buchstaben in 40h. Damit weißt du dann immer, wo du dich gerade in der angezeigten Nachricht befindest und dann kannst du die Schift-Befehle mit entsprechend geladenem W-Register aufrufen.
Wenn du zu wenig Memory auf dem PIC hast um die gesammte Nachricht hineinzuladen, wird es auch gehen, wenn die beiden Pointer auf den EEPROM zeigen. Doch dann musst du in die erste EEPROM-Zelle einspeichern wie viele Buchstaben die Nachricht hat, ansonsten laufen deine Variablen aus der Nachricht hinaus und du bekommst nur 0xFFs zu lesen (btw. vielleicht auch noch die OSSCAL-Bits ;)) und dein Display wird (höchstwahrscheinlich) schwarze Blöcke anzeigen.

MfG
Mobius