22x36Font Ausgeben

Gast #5300272
Lesenswert?

Moin
 Ich habe einen Font 22x36, mit meiner Routine zum auslesen klappt dies 
aber nicht .

Was mache ich hier Falsch?
mfg

1
//mit 6x8 Font geht's , mit 22x36 klappt dies leider nicht.
2
void Lcd_writechar(unsigned char c)
3
{   unsigned char x,y,w;
4
    for (y=0; y<8; y++)
5
    {   w=font[c][y];
6
        for (x=0; x<6; x++)
7
        {   if (w&1)
8
                Lcd_setpixel(x,y);
9
            else
10
                Lcd_clrpixel(x,y);
11
            w=w>>1;
12
        }   
13
    }
14
}
Angehängte Dateien:
Gast #5300338
Lesenswert?

JULIAN schrieb:
> Ich habe einen Font 22x36, mit meiner Routine zum auslesen klappt dies
> aber nicht .

Tja, traurig, gelle?

Also als erstes brauchst du eine Information, wie dein Font überhaupt 
aufgebaut ist, also was für eine Struktur er hat. Aber bei den Geraffel, 
was in deiner .h drinsteht, ist von sowas garnichts zu sehen.

Obendrein krieg ich nen Krampf, wenn ich sowas lesen muß:
const char font[256][108]=...

Mein Rat: beschaffe dir ein GDI mit ner Zeichenausgabe, die du verstehen 
und nachvollziehen kannst und beschaffe dir dazu passende Fonts.

Und nochwas: Zeugs wie Fonts gehört NICHT in eine .h Datei, sondern 
entweder als .inc in die .c Datei des GDI inkludiert oder als separate 
.c Datei, zu der natürlich eine .h gehört, die in alle anderen Quellen 
wie üblich inkludiert wird und deswegen nur die üblichen Definitionen 
enthält, aber nicht die Konstantenfelder selbst.

W.S.
Gast #5301057
Lesenswert?

JULIAN schrieb:
> void Lcd_writechar(unsigned char c)
> {   unsigned char x,y,w;
>     for (y=0; y<8; y++)
>     {   w=font
1
[y];
2
>         for (x=0; x<6; x++)
3
>         {   if (w&1)
4
>                 Lcd_setpixel(x,y);
5
>             else
6
>                 Lcd_clrpixel(x,y);
7
>             w=w>>1;
8
>         }
9
>     }
10
> }
11

12

13
Also so kommt nur Pixelsalat raus
14

15
[c]
16
void Lcd_writechar(unsigned char c)
17
{
18
  unsigned char x,y,w,n=0,x2=0,y2=0;
19
  for (y=0; y<36; y++)
20
  {   
21
     for(n=0; n<3; n++)
22
     {
23
        w=font[c][y+n];
24
        for (x=0; x<22; x++)
25
        {   
26
           if (w&1)
27
              LCD_setpixel(50+x, 100+y);
28
           else
29
              LCD_clrpixel(50+x, 100+y);
30
           w=w>>1;
31
        
32
           x2++;
33
        }
34
     }
35
     y2++;
36
     x2=0; 
37
  } 
38
}
Gast #5301068
Lesenswert?

> Also so kommt nur Pixelsalat raus

Tja, das leben kann SOOOOO hart sein!

Genau jetzt ist der Moment gekommen wo du deinen Code im Debugger im 
Singlestep durchgehen solltest. Und dann verfolgst du mal wann er 
welches Bit ausgibt und ueberlegst dir ob das dem entspricht was du dir 
gedacht hast als du das programmiert hast.
Das scheint mir eine relativ angenehme Moeglichkeit fuer die 
Tranformation von dumm nach klug. Frueher war das aufwendiger. :-)

Olaf

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