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
"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.
@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
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.
@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
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.
@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
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
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
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.