Schriftdarstellung auf seriellem grafischem Display

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

Reply to
Wolfgang Berger
Loading thread data ...

Wolfgang Berger schrieb:

By the way: Nimm immer oder nimmer Klartextadressen.

Michael

Reply to
Michael Redmann

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

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.

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

Reply to
Frank-Christian Kruegel

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

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

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.

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

Reply to
Wolfgang Berger

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

Reply to
Georg Meister

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

Reply to
Arne Rossius

Arne Rossius schrieb:

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

Reply to
Martin Lenz

Ach so!

Ich nicht. Absichtlich.

Gruß, Arne

Reply to
Arne Rossius

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

Viele Grüße Wolfgang

Reply to
Wolfgang Berger

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:

formatting link

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:

formatting link

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

formatting link

Viel Spass!

--
thomas.kindler@gmx.de, www.kreapc.de
Reply to
Thomas Kindler

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

formatting link

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

Marc

Reply to
jetmarc

Wolfgang Berger schrieb:

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

Gruss Jochen

Reply to
jochen rapp

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:

Reply to
jochen rapp

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

Reply to
Georg Meister

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

Reply to
Georg Meister

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

Reply to
jochen rapp

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.