PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EA DOGS102 LCD Font



EagleStar
10.03.2012, 10:04
Hallo zusammen,

ich habe vor ein paar Tagen das DOGS102-6 von Electronic Assembly in Betrieb genommen. Datenblatt (http://www.lcd-module.de/deu/pdf/grafik/dogs102-6.pdf)

Jetzt habe ich versucht andere / größere Schriften zu verwenden, dies ist mir allerdings nicht gelungen.
Momentan kann ich von den BASCOM Schriften nur die Font8x8tt.font benutzen.

Sobald ich eine andere Schrift wie Font8x8.font oder Font16x16.font mit $include "xxx" lade, läuft meine Software nicht weiter.

Hat jemand schon ähnliche Probleme gehabt oder eine brauchbare Lösung?

Momentan mit nem ATmega8 auf dem STK500 aufgebaut.
Habe mir die LIB glcdEADOGM128 in der Initialisierung angepasst und eingebunden.

Danke für Antworten, schönes WE.

MfG
EalgeStar

MagicWSmoke
10.03.2012, 10:16
mit $include "xxx" lade, läuft meine Software nicht weiter.
Du musst die Fontdatei nach dem "End" inkludieren, sonst wird versucht sie als Code auszuführen, was natürlich schief geht.

EagleStar
11.03.2012, 15:21
Servus MagicWSmoke,
danke für die Info, das hat mich jetzt schon mal weiter gebracht.
Allerdings wird die Schrift nicht richtig angezeigt.
Die Software läuft jetzt und aktualisiert auch den LCD in ungefähr dem richtigen bereich.
Die Zeichen sind ziehmlich verwürfelt, hab ein Bild angehängt.

21807

MfG
EagleStar

MagicWSmoke
11.03.2012, 15:35
Wo kommt der Font her, ist der passend für dieses Display ? Sieht so aus, als ob die Größendefinition der einzelnen Buchstaben nicht übernommen wird.
Du solltest Code und in diesem Fall auch den Font anhängen, sonst wird's schwierig. Man kann den Fehler nicht jedes Mal erraten :D

EagleStar
11.03.2012, 17:34
Servus,
ich vermute auch das die Schriftzeichen irgendwie halbiert sind...
Die Schrift ist die Font16x16.font aus Bascom/SAMPLES/LCDGRAPH.

Hoffe das dir noch was auffällt :)

MfG
EagleStar

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
$framesize = 298
$swstack = 256
$hwstack = 256

Config Portc = Input
Btn0 Alias Pinc.0
Btn1 Alias Pinc.1
Btn2 Alias Pinc.2
Btn3 Alias Pinc.3

$lib "glcdEADOGS102.lbx"
Config Graphlcd = 128 * 64eadogm , Cs1 = Portb.4 , A0 = Portb.1 , Si = Portb.3 , Sclk = Portb.5 , Rst = Portb.0


Initlcd
Wait 1

Setfont Font16x16

Cls
Lcdat 2 , 5 , "Start!"

Do
Debounce Btn0 , 0 , Btn0_isr , Sub
Debounce Btn1 , 0 , Btn1_isr , Sub
Debounce Btn2 , 0 , Btn2_isr , Sub
Debounce Btn3 , 0 , Btn3_isr , Sub

Loop

End

Btn0_isr:
Cls
Lcdat 1 , 1 , "Taste 1"
Return

Btn1_isr:
Cls
Lcdat 1 , 1 , "Taste 2"
Return

Btn2_isr:
Cls
Lcdat 1 , 1 , "Taste 3"
Return

Btn3_isr:
Cls
Lcdat 1 , 1 , "Taste 4"
Return


$include "Font16x16.font"
'$include "Font8x8tt.font"

EagleStar
11.03.2012, 17:40
Ich nochmal :)

Hab grad gelesen in BASCOM Help:

The third line contains 4 bytes: 1 (height in bytes of the font) , 8 (width in pixels of the font), 8 (block size of the font) and a 0 which was not used before the 'truetype' support, but used for aligning the data in memory. This because AVR object code is a word long.

Die FOntfile enthält am Anfang folgendes:

Font16x16:
$asm
.db 2 , 16 , 32 , 0

Was bedeutet denn nun diese "Blocksize" die in der Schrift auf 32 steht?

MfG
EagleStar

MagicWSmoke
11.03.2012, 17:52
.db 2 , 16 , 32 , 0
2 = 2 x 8 Pixel hoch
16 = 16 Pixel breit
32 = Anzahl der Bytes für ein Zeichen im Font

Einfach mal die Nullen in der ersten Zeichen-Zeile zählen.

Edit:
Wo kommt den die glcdEADOGS102.lbx her ?
Die ist nicht im Lib-Verzeichnis zu finden. Evtl. ist die fest auf 'ne gewisse Fontgröße fest eingestellt, dann wird der Font nicht akzeptiert, denn genauso sieht das Bild aus.

EagleStar
11.03.2012, 17:59
Gibts hier verschiedene Codierungen, das da vielleicht irgendwas nicht stimmt?

MagicWSmoke
11.03.2012, 18:06
Der Font muss natürlich zum Treiber passen.
Mich würde die genaue Zeichenkette interessieren, die zum oben gezeigten Bild führte.

EagleStar
11.03.2012, 18:14
Auf dein Edit:
Die glcdDOGS102.lbx ist eine Kopie der glcddogm128x6.lbx mit einem verändertem Kontrastwert.
Die Initialisierung sieht folgendermaßen aus:

.db &HE2 , &H40 , &HA1 , &HC0 , &HA6 , &HA2 , &H2F , &HF8 , &H00 , &H27 , &H81 , &H05 , &HAC , &H00 , &HAF
Kann es sein, dass die Software immer an eine falsche Stelle in der Schrift springt und daher diese halbierten Zeichen kommen?

EagleStar
11.03.2012, 18:26
Also das Bild von oben ist die Reaktion auf Taster0 --> lcdat 1,1,"Taste 1"
Und das Bild ist die Startsequenz --> Lcdat 2 , 5 , "Start!"
21809

MagicWSmoke
11.03.2012, 18:44
Wie sagst Du denn der Treiber-Lib dass Du nur 102 Spalten hast ? Laut Deinem Quellcode geht die von 128 Spalten aus, es gibt ja auch keine Einstellung für 102.
Daraus errechnet der Treiber aber die Adressierung.
Funktioniert denn beim 8x8 Font das Beschreiben des kompletter Displays ohne Probleme ?
Das Bild sieht so aus, als ob der Treiber den 16x16 Font nicht als solchen betrachtet und damit an falscher Position liest.
Gib doch mal "ABCDE" an Position 1,1 aus, vielleicht findet man dann mehr raus.

EagleStar
11.03.2012, 18:56
Du wirst lachen... :D
Habe grad geprüft, ob mit Font8x8tt das ganze Display zu beschreiben ist. Hat geklappt!
Danach habe ich auf 1,1 "ABCDE" ausgegeben. Hat auch geklappt!
Ich hab keine Ahnung was jetzt anders ist, aber jetzt tuts!!! :D :D :D
Ich prüfe mal ob ich raus finde warum das nicht geklappt hat...
Danke für deine Hilfe!

MagicWSmoke
11.03.2012, 19:04
Habe grad geprüft, ob mit Font8x8tt das ganze Display zu beschreiben ist. Hat geklappt!
Ein sehr positives Zeichen.

Danach habe ich auf 1,1 "ABCDE" ausgegeben. Hat auch geklappt!
Es wäre mit dem 16x16 Font interessant zu wissen ob der hinhaut, das ist jetzt der Fall ?

EagleStar
11.03.2012, 19:30
Meintest du jetzt, ob ich mit der 16x16 Schrift auch das ganze Display voll kriege?
Also das klappt auch!
Ich find aber nix, was ich verändert haben könnte?
Und es tut!!!! :)

MagicWSmoke
11.03.2012, 19:48
Meintest du jetzt, ob ich mit der 16x16 Schrift auch das ganze Display voll kriege?
Ja, weil 128 / 16 = 8 und 102 / 16 = 6,375 Zeichen. Scheint dann aber den Treiber nicht zu tangieren.
Gut, dass es jetzt passt :D