mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Labels oder so was ähnliches


Autor: Lucas Vogelsang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Bin ein AVR-Einsteiger und lerne zur Zeit ein bisschen Assembler.

Ich habe bei Ebay 2 VFDs gekauft und will mit einem AVR eine Steuerung
machen.

Ich will diese HD44780-Steuerung
verwenden:http://www.mikrocontroller.net/tutorial/lcd.htm

 Die meisten Befehle sind genau gleich nur die Zeichen sind nicht ASCII
sondern eine andere Hex-Zuordung. Wie kann ich einfache "Labels den
verschiedenen Hexwerten zuordnen, ich könnte die Register brauchen,
aber von denen hat es zu wenig.

Ich will das ich zum Beispiel für den Buchstaben A ein 0xFF zuordnen
kann, ohne dass ich mir all die Hexwerte merken muss.

Danke

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn nur eine andere Zeichencodierung als ASCII verwendet wird, dann
mach's so:

Arbeite mit ASCII und konvertiere erst unmittelbar vor der Ausgabe mit
einer 256 Byte großen Tabelle. Der Index der Tabelle ist ASCII, der
Inhalt die Nicht-ASCII-Codierung.

Allerdings bin ich mir nicht ganz sicher, Deine Frage wirklich richtig
verstanden zu haben, der Teil mit den Labels beispielsweise erschließt
sich mir nicht.

Wird denn Dein VFD nun mit 44780 angesteuert? Woher stammt die
Information, daß eine andere Zeichencodierung verwendet wird?
Datenblatt des Displays?

Autor: Lucas Vogelsang (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Es werden nicht nur ASCII zeichen verwendet, auch Symbole wie Note oder
Pfeil.

Das Display wird nicht über 44780 angesteuert, die Berehle sind jedoch
die gleichen.

Ich habe meine Informationen aus dem Datenblatt. Es ist ein VFD vom
Typ: CU40025SCPB-W6J.

Als Anhang das Datenblatt(falls dies illegal ist bitte sagt es mir:D)

Autor: Kupfer Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.equ _A = 0xFF

; verwendung dann zb.
 LDI r16,_A

; im neuen ASM2 (ab AVRStudio 4.11) geht auch


#define _B $EE
 LDI r16,_B

Autor: Lucas Vogelsang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

Damit kann ich was anfangen.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mir die Tabelle auf Seite 13 des Datenblatts ansehe, dann kann
ich das Problem nicht nachvollziehen.

Das ist ASCII mit zwei kleinen Ausnahmen, Yen statt | und ein Pfeil
statt der Tilde ~.

Nur für die Darstellung von Umlauten und ähnlichen Sonderzeichen ist
ein Zeichenersatz erforderlich; aber die sind ja eh' noch nie im
ASCII-Zeichensatz enthalten gewesen.

Autor: Lucas Vogelsang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, es ist teilweise ASCII aber eben nicht immer...
Ich will die "labels" auch für anderes benützen eben für die
sonderzeichen...

Ich habe noch eine 2. Frage:
Welchen Chip(z.B. von FTDi) brauche ich um USB in UART um zu wandeln
oder muss ich das mit einem virtuellen Serialport über USB lösen ?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm. ASCII ist nur ein 7-Bit-Zeichensatz; die 8-Bit-Erweiterungen sind
erst mit dem ANSI-Zeichensatz (Latin 1, CP1252) standardisiert worden.
Davor gab's verschiedene inkompatible Varianten - IBM-PC (CP437),
Macintosh, VC Amiga ... jeder Homecomputer machte das auf seine eigene
Art und Weise.

Wie auch immer, mit der von mit erwähnten Variante der
Übersetzungstabelle kannst Du in Deinem Quelltext mit ANSI-Codierung
(das ist die unter Windows übliche) arbeiten und konvertierst erst
unmittelbar vor Ausgabe ans Display. Dann musst Du Dir überhaupt keine
Gedanken um irgendwelche "Labels" machen und kannst in Deinem
Assemblerquelltext vernünftig mit Stringkonstanten arbeiten.
Der Geschwindigkeitsverlust dürfte vernachlässigbar sein, lediglich die
256 Bytes Tabelle vergrößern Deinen Code etwas.
Mit etwas mehr Mühe kannst Du die Tabelle auf 128 Bytes schrumpfen,
indem Du in dieser nur die Nicht-ASCII-Zeichen codierst und Zeichen <
0x7F gar nicht erst umwandelst.

Deine zweite Frage ist etwas missverständlich formuliert. Wenn Du einen
Chip von FTDI wie den FT232BM verwendest, dann hast Du auf Deinem PC
eine virtuelle serielle Schnittstelle, die Du mit normalen Programmen
wie eine echte Schnittstelle ansprechen kannst. Am anderen Ende kommen
normale serielle Signale mit TTL-Pegeln 'raus, die sich direkt mit der
UART eines µC verbinden lassen.

Autor: Lucas Vogelsang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will eben kein virtuellen Serialport, hätte lieber direkt USB
->UART.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube, hier reden wir aneinander vorbei.

Was präzise stellst Du Dir unter "direkt USB->UART" vor?

Möchtest Du auf dem PC das Ding nicht als serielle Schnittstelle
ansprechen? (Geht, dazu gibt's eine API von FTDI)

Möchtest Du ein völlig eigenes Device-Protokoll verwenden? (Geht nicht
mit FTDI, aber mit zig anderen USB-Device-Controllern, erfordert
Treiberprogrammierung auf PC-Seite)

Autor: Lucas Vogelsang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Möchtest Du auf dem PC das Ding nicht als serielle Schnittstelle
ansprechen? (Geht, dazu gibt's eine API von FTDI)"

Ja würde ich lieber, da ich dann aber einen Treiber schreiben ist das
zu Aufwendig. Ok hier noch eine Skizze:

PC-USB>>----Irgendwas dazwischen, wofür man keinen Treiber zu schreiben
braucht.-----<<AVR über UART

Es sollte möglichst einfach zu realisieren zu sein.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  "Möchtest Du auf dem PC das Ding nicht als serielle Schnittstelle
>  ansprechen? (Geht, dazu gibt's eine API von FTDI)"
>
>  Ja würde ich lieber, da ich dann aber einen Treiber schreiben
>  ist das zu Aufwendig.

Von FTDI gibt es eine API (=Programmierschnittstelle), um direkt mit
FTDI-Chips zu kommunizieren. Hier wird keine virtuelle serielle
Schnittstelle verwendet, und es ergeben sich noch weitere Möglichkeiten
("Bit-Bang-Modus" etc.).

Näheres zu API siehe
http://www.ftdichip.com/Documents/ProgramGuides/D2XXPG30.pdf

Damit dürfte Dir geholfen sein.

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.