Schriftdarstellung auf seriellem grafischem Display

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Ich möchte ein grafisches Display (132x132 Pixel bei 4092 Farben,
seriell) über einen PIC16F876 ansteuern. Von den Farben genügen mir auch
deutlich weniger. Das Problem ist allerdings, dass mein Display keinen
eingebauten Zeichensatz hat. Das bedeutet, dass ich im PIC Ascii Daten
in Grafik umwandeln muss. Zudem sollte die Schrift in mindestens zwei
Größen zur Verfügung stehen.

Bei einer Zeichengröße von 16x16 Pixel ergibt das 16 x 2Byte x 200
Zeichen (unwichtige weggelassen) = 6,4 KB.
Für die doppelte Schriftgröße 32 x32 Pixel wären dies 32 x 4 x200 = 25,6
KB
Also insgesamt etwa 30 KB.

Dafür könnte ich dann zum Beispiel ein I2C EEProm verwenden (der PIC hat
leider zu wenig Speicher). Über die Geschwindigkeit dabei habe ich mir
noch keine Gedanken gemacht. Sollte aber unproblematisch sein, da der
Displayinhalt relativ selten aktualisiert wird.

Ist diese Vorgehensweise sinnvoll, oder gibt es bessere Möglichkeiten,
zum Beispiel fertige Schriftsatz Speicher ?
Sollte die kleinere Schrift durch schrumpfen der großen dynamisch
erstellt werden ? Zum Beispiel zusammenfassen von 4 Pixeln. Bei >2
schwarz, wir der Pixel schwarz dargestellt, bei <=2 weiß.

Bekomme ich irgendwoher fertige Zeichensätze gratis oder relativ
günstig, oder muss ich diese komplett selbst erstellen ?


Ich bin nicht absolut auf den PIC festgelegt. Sollte es allerdings damit
gehen, wäre es mir am liebsten, da ich schon viel damit gearbeitet habe
und so die Einarbeitung entfällt.

--
Viele Grüße
Wolfgang Berger

We've slightly trimmed the long signature. Click to see the full one.
Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

By the way: Nimm immer oder nimmer Klartextadressen.

Michael



Re: Schriftdarstellung auf seriellem grafischem Display


Quoted text here. Click to load it

Von Atmel gibts SPI Flash-Bausteine mit 128k und darüber.

Quoted text here. Click to load it

Nein, bloß nicht, das wird unleserlich.

Quoted text here. Click to load it

Nimm Dir ein Linux-System und schau in den Font-Ordner. Da gibts Schriften in
allen Größen und Formen - auch Bitmap-Schriften. Die Datenformate sind bekannt
und nicht allzu kompliziert.

Quoted text here. Click to load it

AVR wäre eine Alternative. Es gibt Prozessoren mit ziemlich viel Flash (128k),
und das sollte eigentlich für alles ausreichen. Und flott sind die auch noch.

Mit freundlichen Grüßen

Dipl.-Ing. Frank-Christian Krügel

Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

Nur Ram für den aktuellen Displayinhalt. Keinen Speicher für
Zeichensätze.

Quoted text here. Click to load it

Ok. Aber 100 sind auf jeden Fall nötig. Dann benötige ich immer noch 15K
Speicher.

Quoted text here. Click to load it



Die Größenangaben waren nur zur groben Abschätzung. Es soll später keine
Schrift mit fester breite genutzt werden. Ich könnte zum Beispiel in den
ersten beiden Bytes die Breite abspeichern. Allerdings gewinne ich
dadurch nicht viel, da ich immer diese 2 Bytes Overhead habe.


Quoted text here. Click to load it

Werde ich mal versuchen. Den kann ich nämlich noch im Speicher des PIC
unterbringen. Allerdings schätze ich, dass beim einfachen hochskalieren
1Pixel -> 4 Pixel die Schrift nicht mehr so toll aussieht. Einen Versuch
ist es aber auf jeden Fall wert.

Gruß
Wolfgang

Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

Du kannst die Fonts auch komprimiert abspeichern.  Hier gibt es ein
paar Ideen dazu:

http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=utf-8&threadm=af3f5bb5.0209041444.a67814%40posting.google.com&rnum=1&prev=/groups%3Fq%3Djetmarc%2Bfont%2Bcompression%26sourceid%3Dopera%26num%3D0%26ie%3Dutf-8%26oe%3Dutf-8

In Deinem Fall (2 Fonts) kommst Du sicher mit 1kb locker weg.

Marc

Re: Schriftdarstellung auf seriellem grafischem Display
Wolfgang Berger schrieb:
Quoted text here. Click to load it
Hallo Wolfgang. warum schliesst Du nicht jedes Zeichen mit einer Null
ab? --> Overhead 1 Byte pro Zeichen. Ausserdem kannst Du durch einfaches
Nullen Zählen das Zeichen finden, und Sparst Dir so ein Inhaltsverzeichis.

Auch wenn die Breite der Schrift variabel ist, so sollte doch die Höhe
gleich sein. Und es ist doch einen Unterschied, ob Du eine matrix von
16x8 oder 14x8 Pixel hast. Mach Dir mal Gedanken, wie gross die Zeichen
sein sollen, dann weisst Du auch, welchen Speicherplatz Du benötigst.
Mach Dir auch Gedanken, wie der Displaycontroller organisiert ist, das
Spart Usortierarbeiten in der Software (unter C gesht Du bei so was fast
am "Stock").
Quoted text here. Click to load it

Gruss Jochen


Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it


Am PC mit Visual Basic den kompletten Zeichensatz für eine Schriftart
 und -grösse deiner Wahl anzeigen, pixelweise auslesen und geeignet
abspeichern. Das sind nur ein paar Zeilen Code und du kannst die Tabellen
gleich als HEX-Datei oder ASM oder C-Source abspeichern.

Wenn es gut aussehen soll, Proportionalschriften verwenden und die Schriften
inkl. der Antialiasing-Graustufen speichern, was die Lesbarkeit sehr erhöht.

Die Zeichensätze in den benötigten Grössen in einem seriellen EEPROM oder
FLASH-PROM ablegen, billig, ausreichend Platz und einfach anzuschliessen.

Georg



Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it
Schriften
erhöht.
            ^^^^^^^^^^^^^^^^^^^^^^^
Also ich habe bei mir (Win98SE) keine einzige Schriftart, die Graustufen
hat (und ich habe knapp 1000 Schriftarten). Ich glaube auch kaum, dass
das TTF-Format sowas unterstützt.


Gruß,
Arne


Re: Schriftdarstellung auf seriellem grafischem Display
Arne Rossius schrieb:
Quoted text here. Click to load it
Das ist die Option "Bildschirmschriften glätten" aber das wird m.W.
nicht abgespeichert, sondern beim Skalieren der TTF (Vektor) Fonts in
Echtzeit gerechnet. Am Bildschirm hast du sehr wohl Graustufen für
"halbe" Pixel.

Martin

Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

Ach so!

Quoted text here. Click to load it

Ich nicht. Absichtlich.


Gruß,
Arne


Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

Das erhöht allerdings die Speichergröße und die Anzahl der zu
übertragenden Daten um ein Vielfaches.

Viele Grüße
Wolfgang

Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it
einem
Option

Klar ist damit ein etwas grösserer Aufwand verbunden. Man kann sich
allerdings eine einfache Komprimierung überlegen, um den Speicherbedarf
klein zu halten, und wie gesagt, wenige Graustufen reichen.

Georg



Re: Schriftdarstellung auf seriellem grafischem Display

Hallo Georg
Vergiss die TTF Fonts von Windows. Wenn Du diese Schriftarten in der
geforderten Pixelgrösse ausliest, dann sieht das einfach furchtbar aus.
Das beste ist immer noch, de Buchstaben Pixel für Pixel zu designen oder
eine Bitmap-Schrift mit entsprechend niedriger auflösung zu wählen.

Gruss Jochen


Georg Meister schrieb:

Quoted text here. Click to load it


Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

Bei den unzähligen TTF-Fonts kann man sich eine Schrift aussuchen, die einem
gefällt. Aber das hat natürlich keinen Sinn, wenn es um sehr kleine
Fontgrössen geht. Windows verwendet da übrigens auch automatisch
Bitmap-Fonts, hab ich mal wo gelesen.

Die Idee war ja, die Daten pixelweise vom Bildschirm auszulesen, um sich das
Selbstzeichnen zu ersparen. Man kann natürlich auch Bitmap-Fonts verwenden.

Georg



Re: Schriftdarstellung auf seriellem grafischem Display
Hallo,

ich denke, es ist einfacher, aus dem Datenblatt eines Dot-Matrix
Controllers z.B. Hitacht HD 44780 oder so den Zeichensatz abzumalen, und
zu skalieren und anschliessend mit einigen Pixeln noch ein wenig
Schönheitsoperation betreiben.

Gruss Jochen


Re: Schriftdarstellung auf seriellem grafischem Display
Quoted text here. Click to load it

Ich hab' für meinen MP3-Player einen netten Font-Converter geschrieben,
der u.a. auch mit PalmOS-Fonts umgehen kann. Die gibt's in 1000
Variationen, meistens sogar frei, und vorallem für die angestrebte
Auflösung gedacht & optimiert. Wenn dein Display eine ähnliche
Organisation wie ein SED1520 Display hat, sollte das Binärformat auch
schon gut geeignet sein.

Ich hab' auch ein fertiges Pack mit ca. 100 Fonts zum downloaden:

   http://www.kreapc.de/files/fontpack1.zip

Die grösse der im binärformat vorliegenden Fonts lässt sich ohne
Kompression kaum noch schlagen. (ca. 3-4kb für einen 10Pixel hohen
Proportionalfont mit AFARI 192 Chars)

Allerdings solltest du vor der Benutzung für dein eigenes Projekt
unbedingt den Autor der Fonts fragen:

   http://www.rainerzenz.de/palm/alphafonts.html

Die Software, um die Fonts selber umzuwandeln gibbet im
Sourcecode-Archiv für den Player (QtFont):

   http://www.kreapc.de/files/src2002-08-04.zip


Viel Spass!
--
snipped-for-privacy@gmx.de, www.kreapc.de


Site Timeline