Hi all! ich hab ein LCD das keinen Font hat also muss ich den ja selber machen. Ich dachte mir folgendes aus: unsigned char FNT[500]={0,0,0,0,0,0, . . 124,10,124,10,0, . . 12,12,0,0,0,0}; Des beispiel hingt jetzt ein bischen aber so in dem stil hab ich des mal in C gemacht aber es klappt nicht so wie ich mir es vorgestellt hatte. Jetzt mal an den Erfahrenen C Programierer wie macht ihr das wenn ihr einen Font erstellt und wie bindet man es ein? ich hoffe das ich nicht zu oberflächlich mein Problem darstellte. Gruss
500 Zeichen....was für ein Font soll es den sein?Der ganze darstellbare ASCII-Zeichensatz oder auch Sonderzeichen oder nur einige einzelne Zeichen? 8x8,10x8,12x8,12x10,...? Wie soll der Font gespeichert werden,pro Pixel ein Bit oder vielleicht farbig mit mehreren Bits pro Pixel?Wie kopierst du die Fontbitmap in den Grafikspeicher?Ist das Display korrekt angeschlossen,initialisiert? Wie ist das Display in den Adressraum des Mikrocontrollers eingeblendet und welchen verwendest du überhaupt? So könnte ich jetzt ewig weitermachen....
@Ronny Es soll ein 8x6 Font werden also 6 Byte ergeben ein Zeichen. LCD ist ein EA DIP 122-5 Grafik Display. Display ist Korrekt angeschlossen. Kein Farbdisplay. >Wie ist das Display in den Adressraum des Mikrocontrollers eingeblendet Display ist überhaupt nicht im Adressraum eingeblendet. >Wie kopierst du die Fontbitmap in den Grafikspeicher? Byte weise. Nun da mir etwas die Grundlagen zum erstellen von Fonts fehlen habe ich gehofft, dass jemand der Ahnung davon hat ein bischen unter die Arme greift.
Die letzte Bemerkung könnte ich persönlich nehmen.Schau dir mal an wie andere hier hier Fragen stellen (insbesondere wie das entsprechende Problem erklärt wird) und wielange es dauert bis eine Antwort kommt.Fällt dir was auf? Ok,du hast also das Display direkt dran gestöpselt und entsprechende CS Signale für linke und rechte Displayhälfte. Kannst du denn einzelne Pixel schreiben?Wenn ja,wie liest du ein Bit aus dem Font aus und wohin schreibst du es?
> mal in C gemacht aber es klappt nicht so wie ich mir es vorgestellt > hatte. > > dass jemand der Ahnung davon hat ein bischen unter die Arme > greift. Wenn dir jemand helfen soll, dann musst du 'aber es klappt nicht so wie ich mir es vorgestellt habe' etwas genauer erläutern. Prinzipiell ist dein Ansatz mit dem Array ja nicht schlecht. Was klappt den nicht? Was passiert stattdessen?
Ach ja. Das Array (eigentlich der Array-Inhalt) ist ja nun mal nur die halbe Miete. Aber wie gehts weiter? Was machst du mit dem Array?
Was ist denn dein Problem? Den Font als C-Array zu erzeugen, oder mit einem erstellten Array etwas anzufangen?
unter Linux könntest du zB den Font im *.xbm - Format mit Gimp erstellen, das Format ist C-Quelltext den du leicht wie eine Header-Datei einbinden kannst. Welches Grafikprogramm unter Windows xbm kann, keine Ahnung. Die Ausrichtung des Fonts sollte möglichst mit der Ausrichtung der Bytes auf deinem Display übereinstimmen, dann brauchst du nicht mit Pixeln zu Arbeiten. Beispiel im Anhang
gimp gibts auch fuer windows (und mac....) gähn ist zwar lang her als ichs mal unter win getestet hab aber iirc gabs da keinen unterschied. gruesse
Hallo Leute! Tut mir Leid das meine Antworten spät folgen liegt daran, das ich die ganze Zeit an dem Font gearbeitet hatte und habe das Problem soweit gelöst. Da hier einige sehr empfindlich sind möchte ich mich hiermit Entschuldigen. Wollt ja niemand mit meinem Code Kauderwelsch oder Schaltungsteteils langweilen. Um dem aber trotzdem gerecht zuwerden werde ich es doch erzählen. Ich hab mir ein kleines Experimentier Board gebastelt mit einen AT89C51Ed2 drauf. Das LCD - Display DIP 122-5 wird über I²C-Bus von zwei Porterweiterungsbausteine PCF8574 gesteuert. Eine 12*1 Tasturfeld ebenfalls mit zwei PCF8574 angesteuert. Dann sind noch 8 Tasten direkt an Port 1 angeschlossen. An Port0 und Port2 hängen dann noch LED's für Status Ausgaben oder andere Spielereien. Achja ne Uhr PCF8583 ist auch noch drauf auch über I²C-Bus. Alle Baugruppen funktionieren soweit und machen keine Probleme. Da ich die meiste Zeit damit verbracht habe in Assembler zu Programmieren, dachte ich mir, das ich meine C Kenntnisse ein bischen aufzufrischen sollte. Nachdem ich mir ein paar Routinen zur Ansteuerung des I²-Bus erstellt habe, machte ich auch gleich an die Routinen für LCD Ausgaben ran. Da das LCD keinen eigenen Font besitzt muss man es selber herstellen und im Speicher ablegen. Dabei soll es sich um ein 8x6 Font im Standard ASCII format handeln. bsp. Zeichen 'A' = 0x7C,0xA,0x9,0xA,7C,0 Die probleme die sich stellten waren, wenn das Array als unsigned char[546]= {......}; im xdata - Bereich abgelegt wurde, beim Auslesen nur pixelmist herausgekommen ist. Das nächste war ein reines Anfängerproblem, hab bei der Funktion zur Zeichenausgabe in der Parameterliste nur unsigned char anstatt int verwendet. Dadurch gab es eine Fehlberechnung des Arrays und alles fing ab 255 wieder bei null an. :(( Nachdem ich das Array im Code-Bereich abgelegt hatte funktioniert alles. Trotzdem frage ich mich, ob man die sache mit dem Font nicht einfacher und besser lösen könnte oder einfach anders. So! dann Danke ich mal allen die mich verseckelt haben und hoffe dass jetzt genügend Überblick über die Harware besteht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.