www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GLCD Variablenausgabe


Autor: C-Amnesie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

Pardon, aber ich habe gerade eine Knoten im Hirn.
Folgendes Problem:
PIC 18F / C18 /GLCD mit UC1601
In einer Ausgabefunktion für mein GLCD wird bisher immer auf
Texte im ROM(FLASH) zugegriffen:
void lcd_text(unsigned char left, unsigned char top, unsigned char font, 
rom unsigned char *str)
z.B.:
lcd_text(6,29,FONT_NINE_DOT,"128x64");
Beí einer Variablen habe ich nun ein Problem.
Es gibt ja viele schöne Stringkonvertierungsfunktionen,
die mir aber offensichtlich nicht recht helfen und
ich habe bei der Pointerarithmetik scheinbar
ein grosses Verständnisproblem.
Das beim PIC der Unterschied zu machen ist zwischen
RAM- und ROM-Pointern, ist mir aber bekannt.

Könnte bitte jemand, der netten C-Gurus einem Verzweifelten
auf die Sprünge helfen ?

Besten Dank schon einmal

Didi

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C-Amnesie schrieb:

> void lcd_text(unsigned char left, unsigned char top, unsigned char font,
> rom unsigned char *str)
> z.B.:
> lcd_text(6,29,FONT_NINE_DOT,"128x64");
> Beí einer Variablen habe ich nun ein Problem.
> Es gibt ja viele schöne Stringkonvertierungsfunktionen,
> die mir aber offensichtlich nicht recht helfen und
> ich habe bei der Pointerarithmetik scheinbar
> ein grosses Verständnisproblem.
> Das beim PIC der Unterschied zu machen ist zwischen
> RAM- und ROM-Pointern, ist mir aber bekannt.

Das erste was du machen musst:
Sieh in deiner Funktionssammlung nach, ob es eine zweite 
String-Ausgabefunktion gibt, die keinen rom Pointer als 4.tes Argument 
hat.
Wenn nicht, dann musst du dir eben eine machen. Die Implementierung 
deiner jetzigen lcd_text wird dir dabei helfen und kann als Grundlage 
dienen.


erst dann bist du in der Lage, mit diversen Stringkonvertierfunktionen 
dir einen String zusammenzubauen, der eben nicht im rom residiert, und 
mit dieser neuen Funktion ausgegeben werden kann.

Autor: C-Amnesie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank !
Ich hatte schon herumprobiert, wollte gerne aber
auch etwas verstehen:
Funktion auf RAM-pointer geändert
void lcd_text(unsigned char left, unsigned char top, unsigned char font,
unsigned char *str)
Meine Variable ist an erster Stelle im Array buf[]
-> lcd_text(6,29,FONT_NINE_DOT,(unsigned char *) buf);
und NICHT lcd_text(6,29,FONT_NINE_DOT,(unsigned char *) buf[0]);
 Das war ein Teil des Nachholbedarfs in Sachen Pointer.

Läuft also jetzt.

Autor: andrzej (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo;
ich versuche grade ein Diplay mit dem controller uc1601s zum laufen zu 
bringen, aber es klappt leider nicht... Was fur befehle sendest du am 
start zum controller?

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.