DOGL128-6 von Font-Tabelle auf ASCII

Gast #7196365
Lesenswert?

Liebe Kollegen,

ich habe ein EA DOGL128-6 Display.

Da es keine Zeichentabelle enthält habe ich eine Zeichentabelle 
definiert:
1
// Font 6x8 Pixel.
2
const unsigned short Zeichen[] =
3
{
4
0x7C,0x12,0x11,0x12,0x7C,0x00,  // 'A' ASCII 65 (0x41);
5
0x7F,0x49,0x49,0x49,0x36,0x00,  // 'B' ASCII 66 (0x42);
6
0x3e,0x41,0x41,0x41,0x22,0x00   // 'C' ASCII 67 (0x43);
7
};

Ein 'A' beginnt also bei Index 0, ein 'B' bei Index 6 und ein 'C' bei 
Index 12.

Wie ist jetzt der Ansatz, wenn ich eine write, print, etc. Routine für 
das Display schreiben will.

write("AC");

Wie komme ich vom ASCII Zeichen nun auf meinen Index in der Tabelle? 
(Ich kann ja schlecht 127 if Abfragen schreiben, wie if ('A') then Index 
= 0; etc.)

Ich hoffe ich hab die Frage verständlich formuliert und freu mich 
Antworten und Denkanstöße,

lieben Gruß,
Chris
Gast #7196376
Lesenswert?

Erich schrieb:

> Deine Tabelle sollte bei Index 0 beginnen und 128 Zeichen haben.
>
> Und beim Zugriff brauchste Multiplikation mit 6, wenn deine Zeichen
> jeweils 6 Byte umfassen.

Hallo Erich,

ah, das klingt logisch. Jedes ASCII Zeichen dann mit "Index = 'A' * 6;" 
errechnen. Danke für den Tipp!
Gast #7196377
Lesenswert?

Harry L. schrieb:
> // Font 6x8 Pixel.
> const unsigned short Zeichen[][6] =
> {
>   {0x7C,0x12,0x11,0x12,0x7C,0x00},  // 'A' ASCII 65 (0x41)
>   {0x7F,0x49,0x49,0x49,0x36,0x00},  // 'B' ASCII 66 (0x42)
>   {0x3e,0x41,0x41,0x41,0x22,0x00}   // 'C' ASCII 67 (0x43)
> };

Kannst mir erklären, welchen Vorteil dieses Array für die Font-Tabelle 
hat? Blicke da jetzt nicht durch.
#7196378
Lesenswert?

Chris schrieb:
> Erich schrieb:
>
>> Deine Tabelle sollte bei Index 0 beginnen und 128 Zeichen haben.
>>
>> Und beim Zugriff brauchste Multiplikation mit 6, wenn deine Zeichen
>> jeweils 6 Byte umfassen.
>
> Hallo Erich,
>
> ah, das klingt logisch. Jedes ASCII Zeichen dann mit "Index = 'A' * 6;"
> errechnen. Danke für den Tipp!

Ich habs dir doch vorgekaut:
Beitrag "Re: DOGL128-6 von Font-Tabelle auf ASCII"

Nimm nen 2-dimensionales Array und fertig!
Überlas doch dem Compiler das Rechnen!
Moderator (Firma: Titel) Persönliche Seite #7196430
Lesenswert?

Chris schrieb:
> Jedes ASCII Zeichen dann mit "Index = 'A' * 6;"
Mal abgesehen davon, dass die Formel für jedes ASCII-Teichen das selbe 
Ergebnis bringt, ist schon der Ansatz der Formel falsch. Mit ein wenig 
Nachrechnen kommst du da schnell drauf.

Chris schrieb:
> Kannst mir erklären, welchen Vorteil dieses Array für die Font-Tabelle
> hat? Blicke da jetzt nicht durch.
Es ist ein zweidimensionales Array: der erste Index gibt den Buchstaben 
an, der zweite Index ist ein einzelnes Byte dieses Buchstabens.

Wenn du dann ein Zeichen ausgeben willst, dann geht das etwa so:
1
const unsigned char Zeichen[][6] = ...(siehe 2D-Array oben)... ;
2
char auszugebendeszeichen;
3
:
4
:
5
// zum Test alle 3 Zeichen ausgeben
6
for (int j='A'; j<'C'); j++) {
7
   auszugebendeszeichen = j;
8
   for (int i = 0; i< 6 i++) {
9
      sendebyteandisplay(Zeichen[auszugebendeszeichen-'A'][i]);
10
   }
11
}
Gast #7197346
Lesenswert?

Chris schrieb:
> Da es keine Zeichentabelle enthält habe ich eine Zeichentabelle
> definiert

Hier in diesem Forum gibt es reichlich Beiträge, die sich mit den Themen 
Fonts und Grafik-Displays befassen. Selbst die "Lernbetty" hat vor etwa 
10 Jahren ein Grafik-LCD und Ausgabefunktionen nebst Fonts gehabt.

Du brauchst also nur etwas in diesem Forum zu suchen, um dir deine 
Fragen beantworten zu können und sehen zu können, wie sowas bereits von 
anderen gemacht wurde.

W.S.
Gast #7197380
Lesenswert?

W.S. schrieb:

Servus W.S.,

> Du brauchst also nur etwas in diesem Forum zu suchen, um dir deine
> Fragen beantworten zu können und sehen zu können, wie sowas bereits von
> anderen gemacht wurde.

ich hätte oben natürlich dazuschreiben müssen, dass ich seit Tagen mir 
die schon vorhandenen Libraries reingezogen habe. Leider habe ich keine 
zum Laufen gebracht und so manchen Code auch nicht verstanden.

Wollte keine unnötigen Fragen stellen, sorry.
Gast #7197803
Lesenswert?

Chris schrieb:
> ich hätte oben natürlich dazuschreiben müssen, dass ich seit Tagen mir
> die schon vorhandenen Libraries reingezogen habe. Leider habe ich keine
> zum Laufen gebracht und so manchen Code auch nicht verstanden.

Ich vermute mal, daß du mental auf dem falschen Dampfer bist. Wenn man 
vorhat, ein Grafikdisplay zu benutzen, dann ist es weitaus hilfreicher, 
zu lesen um die Prinzipien verstehen zu lernen als krampfhaft nach 
fertigen Libs zu suchen, die hoffentlich auf das eigene Vorhaben passen 
ohne daß es irgendwelcher Nacharbeiten bedarf. Entsprechendes gilt auch 
für alle anderen Vorhaben. Also verstehen lernen, damit man es dann 
selber kann.

Den Spruch jemandem einen Fisch zu geben versus ihn fischen zu lehren 
kennst du sicherlich.

Ich vermute mal, daß du zunächst vorhast, das Grafikdisplay als reines 
Textdisplay zu benutzen. Deshalb die Beschränkung auf einen Font mit 
durchgängig gleicher Zeichenbreite und -höhe.

Aber so ein Grafikdisplay kann weitaus mehr, so daß man recht bald zum 
einen Fonts verschiedener Größe und Aussehen und mit variabler 
Zeichenbreite als auch freie Positionierung der Zeichen auf dem Display 
haben will - selbst auf einem noch kleineren Display als deinem, siehe 
Bild von meiner Eigenbau-Lötstation. Dazu ist es aber erforderlich, daß 
du in der Lage bist, dir eigene Gedanken darüber zu machen, wie man so 
etwas macht.

W.S.
Angehängte Dateien:
Gast #7199025
Lesenswert?

W.S. schrieb:

Sehr schönes Bild. Informationen gut umgesetzt.

> Ich vermute mal, daß du zunächst vorhast, das Grafikdisplay als reines
> Textdisplay zu benutzen. Deshalb die Beschränkung auf einen Font mit
> durchgängig gleicher Zeichenbreite und -höhe.

Nein. Ich bau mir einen Joystick für eine selbstentwickelte Anwendung. 
Dazu sind im Display einigen Anzeigen notwendig. XYZ Koordinaten in 
größerer Schrift, Rahmen drum, gespeicherte Punkte, Schrittmotor 
Auflösung, etc. Will es also schon als Graphikanzeige nutzen.

Der Eindruck täuscht, dass ich nicht selbst in die Tiefe gehen will. Nur 
wenn eine Library schon fertig ist, warum nicht nutzen. Aber ich schaff 
das schon. Schließlich ist doch genau dafür dieses Forum da, um sich 
einen Gedankenanstoß zu holen, wenn ich beim alleine basteln wieder 
einmal in einer Sackgasse bin.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren