Sida 1 av 1

Fonter till grafisk LCD

Postat: 7 december 2009, 13:35:06
av jesse
Hej

Jag är ute efter fonter till en 128x64. Där en byte motsvarar 8 bitar på höjden (Y-led). Finns väl någon här som lekt med sådant och har lite tabeller hemma? Gärna i hex-format. Vet i alla fall att Illuwatar har sysslat med sånt för ett par år sedan.

Re: Fonter till grafisk LCD

Postat: 7 december 2009, 15:03:37
av Fagge
FastLcd kan generera sådana.
http://www.fastavr.com/Downloads_act.htm

Re: Fonter till grafisk LCD

Postat: 7 december 2009, 21:06:00
av RDX*

Kod: Markera allt

/ Font 8x7 pixel
 const uint8_t font_standard[101][7] = {
  /* 00   */  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 01 ! */  CHAR_UNDEFINED,
  /* 02 " */  CHAR_UNDEFINED,
  /* 03 # */  {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00},
  /* 04 --*/  {0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00}, //  non-ASCII  $ => -- (long hyphen)
  /* 05 % */  CHAR_UNDEFINED,
  /* 06 d */  {0x60, 0x58, 0x46, 0x58, 0x60, 0x00, 0x00}, //  non-ASCII  & => (delta)
  /* 07 ' */  CHAR_UNDEFINED,
  /* 08 ( */  {0x3E, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 09 ) */  {0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 0A * */  {0x3e, 0x7F, 0x7F, 0x7F, 0x3e, 0x00, 0x00},//Sensor
  /* 0B + */  CHAR_UNDEFINED,
  /* 0C , */  {0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 0D - */  {0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
  /* 0E . */  {0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
  /* 0F _ */  {0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},

  /* 10 0 */  {0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00}, // digits are monospaced
  /* 11 1 */  {0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 0x00},
  /* 12 2 */  {0x71, 0x49, 0x49, 0x49, 0x46, 0x00, 0x00},
  /* 13 3 */  {0x41, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00},
  /* 14 4 */  {0x1C, 0x12, 0x11, 0x7F, 0x10, 0x00, 0x00},
  /* 15 5 */  {0x4F, 0x49, 0x49, 0x49, 0x31, 0x00, 0x00},
  /* 16 6 */  {0x3E, 0x49, 0x49, 0x49, 0x30, 0x00, 0x00},
  /* 17 7 */  {0x01, 0x71, 0x09, 0x05, 0x03, 0x00, 0x00},
  /* 18 8 */  {0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00},
  /* 19 9 */  {0x06, 0x49, 0x49, 0x49, 0x3E, 0x00, 0x00},
  /* 1A : */  {0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 1B   */  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //  non-ASCII  ; => (space in same width as digits)
  /* 1C / */  {0x00, 0x00, 0x40, 0x38, 0x07, 0x00, 0x00},
  /* 1D = */  {0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00},
  /* 1E > */  CHAR_UNDEFINED,
  /* 1F ? */  {0x02, 0x01, 0xB1, 0x09, 0x06, 0x00, 0x00},

  /* 20 @ */  CHAR_UNDEFINED,
  /* 21 A */  {0x78, 0x16, 0x11, 0x16, 0x78, 0x00, 0x00},
  /* 22 B */  {0x7f, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00},
  /* 23 C */  {0x3e, 0x41, 0x41, 0x41, 0x41, 0x00, 0x00},
  /* 24 D */  {0x7f, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x00},
  /* 25 E */  {0x7f, 0x49, 0x49, 0x49, 0x41, 0x00, 0x00},
  /* 26 F */  {0x7f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00},
  /* 27 G */  {0x3e, 0x41, 0x49, 0x49, 0x79, 0x00, 0x00},
  /* 28 H */  {0x7f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00},
  /* 29 I */  {0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 2A J */  {0x20, 0x40, 0x40, 0x3f, 0x00, 0x00, 0x00},
  /* 2B K */  {0x7f, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00},
  /* 2C L */  {0x7f, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},
  /* 2D M */  {0x7f, 0x06, 0x18, 0x06, 0x7f, 0x00, 0x00},
  /* 2E N */  {0x7f, 0x06, 0x08, 0x30, 0x7f, 0x00, 0x00},
  /* 2F O */  {0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00},

  /* 30 P */  {0x7f, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00},
  /* 31 Q */  {0x3e, 0x41, 0x41, 0x21, 0x5e, 0x40, 0x00},
  /* 32 R */  {0x7f, 0x09, 0x19, 0x29, 0x46, 0x00, 0x00},
  /* 33 S */  {0x46, 0x49, 0x49, 0x49, 0x31, 0x00, 0x00},
  /* 34 T */  {0x01, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00},
  /* 35 U */  {0x3f, 0x40, 0x40, 0x40, 0x3f, 0x00, 0x00},
  /* 36 V */  {0x07, 0x38, 0x40, 0x38, 0x07, 0x00, 0x00},
  /* 37 W */  {0x07, 0x38, 0x40, 0x38, 0x40, 0x38, 0x07},
  /* 38 X */  {0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x00},
  /* 39 Y */  {0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x00},
  /* 3A Z */  {0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x00},
  /* 3B [ */  {0x7f, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 3C \ */  CHAR_UNDEFINED,
  /* 3D ] */  {0x00, 0x00, 0x00, 0x41, 0x7f, 0x00, 0x00},
  /* 3E ^ */  CHAR_UNDEFINED,
  /* 3F _ */  CHAR_UNDEFINED,

  /* 40 ° */  {0x02, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00}, // non-ASCII  ` => °
  /* 41 a */  {0x20, 0x54, 0x54, 0x54, 0x78, 0x00, 0x00},
  /* 42 b */  {0x7f, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00},
  /* 43 c */  {0x38, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00},
  /* 44 d */  {0x38, 0x44, 0x44, 0x44, 0x7f, 0x00, 0x00},
  /* 45 e */  {0x38, 0x54, 0x54, 0x54, 0x58, 0x00, 0x00},
  /* 46 f */  {0x7e, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00},
  /* 47 g */  {0x18, 0xa4, 0xa4, 0xa4, 0x7c, 0x00, 0x00},
  /* 48 h */  {0x7f, 0x04, 0x04, 0x04, 0x78, 0x00, 0x00},
  /* 49 i */  {0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00},
  /* 4A j */  {0x80, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00},
  /* 4B k */  {0x7f, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00},
  /* 4C l */  {0x00, 0x02, 0x7E, 0x00, 0x00, 0x00, 0x00},
  /* 4D m */  {0x7c, 0x04, 0x7c, 0x04, 0x78, 0x00, 0x00},
  /* 4E n */  {0x7c, 0x04, 0x04, 0x04, 0x78, 0x00, 0x00},
  /* 4F o */  {0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00},

  /* 50 p */  {0xfc, 0x24, 0x24, 0x24, 0x18, 0x00, 0x00},
  /* 51 q */  {0x18, 0x24, 0x24, 0x24, 0xfc, 0x00, 0x00},
  /* 52 r */  {0x7c, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00},
  /* 53 s */  {0x58, 0x54, 0x54, 0x34, 0x00, 0x00, 0x00},
  /* 54 t */  {0x00, 0x3f, 0x44, 0x44, 0x00, 0x00, 0x00},
  /* 55 u */  {0x3c, 0x40, 0x40, 0x40, 0x7c, 0x00, 0x00},
  /* 56 v */  {0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00, 0x00},
  /* 57 w */  {0x3c, 0x40, 0x38, 0x40, 0x3c, 0x00, 0x00},
  /* 58 x */  {0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00},
  /* 59 y */  {0x1c, 0xa0, 0xa0, 0xa0, 0x7c, 0x00, 0x00},
  /* 5A z */  {0x64, 0x54, 0x54, 0x4c, 0x00, 0x00, 0x00},
  /* 5B ä */  {0x20, 0x55, 0x54, 0x54, 0x79, 0x00, 0x00}, // non-ASCII  { => ä
  /* 5C | */  CHAR_UNDEFINED,
  /* 5D ö */  {0x39, 0x44, 0x44, 0x44, 0x39, 0x00, 0x00}, // non-ASCII  } => ö
  /* 5E ü */  {0x3d, 0x40, 0x40, 0x40, 0x7d, 0x00, 0x00}, // non-ASCII  ~ => ü
  /* 5F   */  {0xF0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00},  // non-ASCII  ? => (empty char) (1 pixel space in text)
  /* 60   */  {0x38, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00},
  /* 61   */  {0x00, 0x40, 0x40, 0x40, 0x38, 0x00, 0x00},
  /* 62   */  {0x00, 0x00, 0x01, 0x01, 0x0E, 0x00, 0x00},
  /* 63   */  {0x0E, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00},
  /* 64   */  {0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00}
};

Re: Fonter till grafisk LCD

Postat: 7 december 2009, 22:59:44
av jesse
Fagge: tack för länken. Ska testa när jag orkar köra igång min windows XP.
RDX: tack för koden, 8 bitars är en bra början !

Nu vet jag inte vad som finns med i FastAVR, men jag är också ute efter fonter som är lite större, gärna 16 bitar på höjden eller större.

Re: Fonter till grafisk LCD

Postat: 9 december 2009, 14:29:56
av Korken
Denna kod kan kanske vara användbar: Länk

Re: Fonter till grafisk LCD

Postat: 9 december 2009, 14:37:12
av blueint

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 00:16:41
av jesse
Det var ju kul, nu har jag två st olika 5x7 fonter att leka med. Tackar! :P

exempel: (en pixel motsvarar ## )

Kod: Markera allt

RDX*

    ## 
  ##  ##  
  ##  ##
##########
##      ##
##      ##
##      ##
 

blueint

  ######
##      ##
##      ##
##      ##
##########
##      ##
##      ##



Re: Fonter till grafisk LCD

Postat: 10 december 2009, 03:15:22
av blueint
Hur är det med copyright på dom där fonterna..?

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 08:51:40
av Icecap
Jag har också lekt med fonter till grafiska display och jag hittade på ett roligt sätt att "skapa" valfri storlek:
Skriv bokstäverna i Paint eller liknande pixelbaserat program, sedan förstorar man och skriver ner hur de ska se ut.
Svårast är att på prickarna vid åäö att hamna rätt men är man lite kreativ går det lätt.

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 11:13:51
av jesse
blueint: de du hänvisar till verkar ju vara standardfonter som funnits sen 60-talet... finns väl knappast nån copyright på dem. Möjligtvis att själva C-koden skulle vara skyddad? Man får väl ändra namnet på arrayen så borde det problemet också vara löst.

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 13:31:35
av blueint
Var står det att dom härstammar från 60-talet?
Är ju författarens död + 70 år numera..

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 13:42:15
av Nerre
Det ska väl vara verkshöjd på grejerna också för att de skall omfattas av svensk upphovsrättslagstiftning?

Och just göra 5x7-font går ju inte att göra på så värst många olika sätt. Kan man ens göra 10 olika varianter av "A"?

Det blir ju i såna fall ungefär som att hävda upphovsrätt för ett gitarrackord.

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 16:55:28
av jesse
Var står det att dom härstammar från 60-talet?
Det är ju bara att leta upp en gammal utskrift från en matrisskrivare och jämföra. Men du kanske har designat dom helt själv?

Re: Fonter till grafisk LCD

Postat: 10 december 2009, 20:47:13
av RDX*
Jag har använt bmp2glcd för att skapa lite andra fonter.
Jag skriver texten i paint och skapar bilder för varje siffra/bokstav sedan är det bara att konvertera bilderna till hex-format.

Kod: Markera allt

#define 8_24_GLCD_HEIGHT 23 
#define 8_24_GLCD_WIDTH  18 
static char 8_24_glcd_bmp[]={
0x00, 0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0x9f, 0x0f, 0x0f, 0x9f, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0x00, 
0xe0, 0xf8, 0xf9, 0xff, 0xff, 0xff, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x3f, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0xe0, 
0x07, 0x0f, 0x1f, 0x3f, 0x3f, 0x7f, 0x7e, 0x78, 0x78, 0x78, 0x78, 0x7e, 0x7f, 0x3f, 0x3f, 0x1f, 0x0f, 0x03
};