mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Laufschrift mit 8051


Autor: Bertram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Brauche ganz dringend einen kompetenten Rat.

Meine Aufgabe ist es aus Bitkombinationen, die mir über den COM Port
übermittelt werden einen Text auf der LCD darstellen.

Grundsätzliche Frage, ist es überhaupt möglich eine Laufschrift zu
erstellen? Wenn ich nämlich die Werte in einer Tabelle speichere

DB 'bla bla',0 und dies dann ausgebe, dann müsste ich ja schon den
gesamten Text empfangen haben. Jedoch die Software übermittelt mir
jedes Zeichen extra. Kann ich die Tabelle irgendwie erweitern? Wenn ja,
bitte um eine genaue Anleitung am besten mit einem Assembler
beispielcode.
Ich habe schon von Hilfsprogramme für die LCD gehört, hat da vielleicht
jemand eines für mich??? Wenn ich der LCD #41h übergebe, also den ASCII
Wert für A erkennt das die LCD sofort oder muss ich da noch irgendwas
einbinden, dass die LCD ASCII Zeichen erkennt und ausgeben kann??

Wenn mir jemand schnell mit Rat und Tat zur Seite stehen könnte wäre
ich sehr dankbar

Mit freundlichem Gruß
Bertram

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"bitte um eine genaue Anleitung am besten mit einem Assembler
beispielcode."
Das ist hier nicht so gern gesehen. Bring rüber, was du schon hast, und
wo das Problem liegt. Dann wird dir auch geholfen.
Fertige Lösungen zu verlangen, ist immer so eine Sache - bei mir kommt
da jedenfalls gar nichts.

Autor: Bertram (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@crazy horse
Gut dann formulier ich es halt um. Kannst du mir sagen, ob es möglich
ist die Tabelle, db .......,0 variabel zu halten, sodass ich zum
Beispiel einen ASCII Wert in ein Register schreiben #41h zum und den
dann der Tabelle übergeben kann, sodass ich es mit den Hilfsprogrammen
auslesen kann, dei für die LCD vorgesehen sind?
Oder kannst du mir vielleciht beschreiben, in Worten, wie du mein
Problem realisieren würdest, sodass ich es dann coden kann, weil mir
fehlt einfach grad der Anstoß dass ich mein Programm fertig machen
kann.
Wie gesagt ich krieg eine 8-Bitkombination, z.B. 0000 0001, dass wäre
jetzt in meinem Fall ein A und nun sollte ich dieses A auf der LCD
ausgeben. Dann kommen alle 250ms die nächsten 8-Bit, sodass es am
Schluss ein Laufschrift gibt. Jedoch hab ich keine Ahnung, wie ich die
Ausgabe realisieren soll, weil ich mit zwischenspeichern außer in
Registern oder im Akku noch nichts gemacht habe. Vielleicht hast du mir
da einen guten Rat, dass ich mein Problem beheben kann. Jemand hat mir
das mit der Tabelle verraten, weil die Hilfsprogramme für die LCD die
geben nur die Strings aus der TAbelle aus, jedoch wie kann ich diese
Anlegen, davon hab ich keine Ahnung!!

Würd mich sehr über deine Rückmeldung freuen, es darf natürlcih auch
jeder andere darauf antworten!!!

Gruß Bertram
P.S: im Dateianhang ist das Hilfsprogramm, dass ich verwende für die
LCD,vielleicht hilft dir es, zu verstehen, worauf ich hinaus will

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht die Umgebungsbedingung Deines 8051 aus? Externer RAM?
Architektur?
Die db-Anweisung ist eine reine Funktion des Assemblers, um diese
"variabel" zu halten, mußt Du einfach die per serieller Schnittstelle
empfangenen Daten in den entsprechenden Speicherbereich schreiben, der
durch die "db"-Anweisung freigehalten wird. Falls Dein Controller in
einer Harvard-Umgebung arbeitet (Code- und Data-Segment getrennt) mußt
Du den benutzten Speicherbereich in das Data-Segment legen und per movx
ansprechen.

Autor: Bertram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@thkais

Die Umgebung ist ein Atmel T89C51RD2
64K Flash EPROM Programmspeicher
2K EEPROM
1k RAM DATENSPEICHER

Mal ne Dumme Frage, woher weiß ich, wo die DB Tabelle abgespeicher
wird??

Gruß

Bertram

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man aus dem Listfile des Assemblers herauslesen, oder man kann
dieser Tabelle gezielt per org - Befehl eine Adresse zuordnen.
Wenn die Daten sowieso per serieller Schnittstelle übertragen werden,
kann man sogar auf die db-Anweisung ganz verzichten. Der dptr wird
einfach per Konstante mit der Adresse des für den Text vorgesehenen
Speicherbereichs geladen. Allerdings sollte man dann eine Löschroutine
drüberlaufen lassen, sonst sind nach dem Einschalten zufällige Werte im
RAM. Sinnvollerweise wird man den Text im RAM ablegen, oder soll er im
EEPROM abgelegt werden? Auf jeden Fall im Datensegment, denn auf das
Codesegment kann man nicht schreibend vom Prozessor aus zugreifen.

Autor: Bertram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@thkais Zuerst einmal vielen Dank für deine Mühen!!!

wie würdest du am EINFACHSTEN meine Ausgabe, wie ich sie oben
beschrieben habe realisieren, ich bekomm eine 8 Bitkombination z.B.
0000 0001 = A = #41h, das würde bedeuten ich muss das ASCII #41h
ausgeben.
Ich hab jetzt auch die ganz oben angehängte Datei, die eigentlich die
Ausgabe vereinfachen sollte, aber die funktioniert nicht.
Und du meinst, ich soll die Werte der ASCII Zeichen in den RAM legen an
eine bestimmte Stelle und dann nacheinander ausgeben, Datenpointer auf
die erste Adresse setzten und ausgeben, jedoch weiß ich dann immer noch
nicht so genau, wie ich eine Laufschrift erzeugen soll, weil es kommt
ja immer 1 Zeichen, dann das nächste, weil dann stimmt ja die Adresse
nicht mehr, weil ich ja dann von oben nach unten arbeiten müsste, weil
ja in der alten Adresse dann der 2 buchstabe stehen würde und ich dann
das Wort falsch herum ausgeben würde!!

Gruß Bertram

Autor: Klaus L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bertram,

ich bin nicht ganz sicher, ob mein Vorschlag Deine Problemstellung
genau adressiert, aber LCD Displays (zumindest mit HD Controller) kann
man so einstellen, dass der Cursor fest stehenbleibt und der text nach
rechts oder links geschoben wird. Das ergibt dann einen
Lauflichteffekt.

Ich hab so was vor einiger Zeit mal programmiert und als Beispiel incl.
LCD Library auf meine Homepage gestellt.

Schau mal unter http://www.mikrocontroller-projekte.de unter
LCD-Testboard. Der Code ist Assembler 8051.

Praktischen Support kann ich im Moment allerdings nicvht liefern, da
meine 8051 Umgebung derzeit deaktiviert ist.

Vielleicht hilft es Dir trotzdem.

Ciao,
Klaus

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einem Text-LCD kannst Du keine Laufschrift machen, da die Zeichen
immer an feste Positionen geschrieben werden.
Du könntest höchstens immer den Text um komplette Buchstaben springen
lassen, aber das sieht sehr unschön aus.

Du brauchst also ein Grafik-LCD und mußt Dir die Buchstaben alle selber
zusammenbasteln. Das ist aber keine Anfängeraufgabe.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.