Sida 1 av 2

Teckentabellsgenerator

Postat: 19 januari 2011, 17:00:41
av Korken
Godagens!

Jag har skrivit ett gäng med tabeller med data för tecken till grafiska LCDer och det tar satans så lång tid att göra varje ny tabell.
Så jag fick tummen ut och började designa ett program som man kan designa tecken i.
Såhär ser den nuvarande designen ut:
char_gen.png
För stunden gör den inget, men när den är klar så ska den generera tabeller i C och ASM är tanken.
Några tankar/idéer? Något som ska läggas till/tas bort?
Kom med förslag!

Mvh
Emil


Tabellkoden som bildas:

Kod: Markera allt

C kod:

const unsigned char char_array[][5] PROGMEM =
{
	{0b01111110, 0b10010000, 0b10010000, 0b10010000, 0b01111110}, //A
	{0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b01101100}, //B
	...
	...
	...
	{0b11100000, 0b00010000, 0b00011110, 0b00010000, 0b11100000}, //Y
	{0b10000110, 0b10001010, 0b10010010, 0b10100010, 0b11000010}  //Z
};


Assembler kod:

char_array:
.db 0b01111110, 0b10010000, 0b10010000, 0b10010000, 0b01111110, 0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b01101100  ;A, B
.db 0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01000100, 0b11111110, 0b10000010, 0b10000010, 0b01000100, 0b00111000  ;C, D
...
...
...
.db 0b01111100, 0b00000010, 0b00011100, 0b00000010, 0b01111100, 0b10000010, 0b01101100, 0b00010000, 0b01101100, 0b10000010  ;W, X
.db 0b11100000, 0b00010000, 0b00011110, 0b00010000, 0b11100000, 0b10000110, 0b10001010, 0b10010010, 0b10100010, 0b11000010  ;Y, Z

Re: Teckentabellsgenerator

Postat: 19 januari 2011, 21:13:24
av v-g
Dumt inlägg kanske men jag gjorde en enklare variant. Jag har en BMPbild där jag gör hela teckenserien (eller vilka bokstäver man nu önskar) sen kör jag om hela bilden till .asm. Därefter plockar man bara bort raderna man inte vill ha och det är klart.

Nu funkar iofs min kod mest till KS0108 men borde ju vara liknande principer.

För övrigt är min totalt fulkodad i VB6 och den "grafiska" presentationen är i en textbox :vissla:

Funkar gör det iaf :mrgreen:

Bild

Re: Teckentabellsgenerator

Postat: 19 januari 2011, 22:21:47
av LHelge
Jag har också gjort ett liknande program, skillnaden där var att jag tillät variabel teckenbredd genom att lagra varje teckens bredd i första byten. lite mer overhead men ser mycket bättre ut.

Är det någon som är intresserad lägger jag gärna upp källkoden, det är skrivet i C#.

Re: Teckentabellsgenerator

Postat: 19 januari 2011, 23:25:37
av Korken
Spännande! :)

Jag funderade också på samma lösning, men märkte att det skulle ta mer plats om jag gjorde så, dock de beror på hur jag designar mina tecken.
Lägg gärna upp koden om du vill! Tänkte lägga upp min när den är klar. :)

Re: Teckentabellsgenerator

Postat: 19 januari 2011, 23:39:43
av sneaky
Jag brukar använda The Dot Factory som jag tycker är trevligt. Det är Open Source så det kanske finns några godbitar där som du kan sno för att förbättra ditt eget program :)

Re: Teckentabellsgenerator

Postat: 20 januari 2011, 08:18:03
av LHelge
Jag övervägde väl egenligen två olika lösningar:

1. Man anpassar teckenbredden i minnet efter det bredaste tecknet + 1, låter den första byten vara den utnyttjade bredden som sedan är det man ritar ut. Fördelen med denna, det är ganska enkelt att hitta rätt bokstav (första bokstaven + offset) nackdel, det går åt mycket minne.

2. Man har variabel teckenbredd även i minnet. Fördel: Overheaden blir bara en byte per tecken. Nackdel: man måste loopa igenom hela alfabetet för att hitta vart i minnet ö befinner sig.

Mitt val föll på den första lösningen, mest för att det projekt jag byggde programmet för hade bättre marginaler vad gäller minne än vad gäller beräkningskraft.

Jag kan lägga upp programmet ikväll när jag kommer hem.

Re: Teckentabellsgenerator

Postat: 22 januari 2011, 23:03:07
av MadModder
Om man med variabel bredd istället har en lookup-tabell som talar om var alla tecken finns då? Behövs ju knappt någon beräkningskraft då. Och det blir snyggare text.
Funkar ju t.o.m rätt snabbt i basic på en C64... ;)

Re: Teckentabellsgenerator

Postat: 22 januari 2011, 23:45:03
av LHelge
Är medelbredden en pixel smalare än maxbredden så sparar du inget minne på det.

Re: Teckentabellsgenerator

Postat: 22 januari 2011, 23:53:16
av LHelge
Här finns mitt program om det är någon som vill titta på det. otroligt dåligt kommenterat och dokumenterat, men jag gjorde det för att jag behövde ett typsnitt till ett projekt, och tanken var väl att varken jag eller någon annan skulle använda det igen.

Re: Teckentabellsgenerator

Postat: 23 januari 2011, 18:19:46
av digitaliz
Bra projekt! :)
Jag gjorde ett liknande program i HTML/Javascript en gång för sisådär 10 år sedan. Letade efter det i förrgår när jag skulle fixa in Å och å i en LCD-modul, men kunde inte hitta det så det blev till att använda papper och penna denna gång... hade inte sett denna tråden i fredags... :)

Re: Teckentabellsgenerator

Postat: 24 januari 2011, 19:00:17
av MadModder
LHelge skrev:Är medelbredden en pixel smalare än maxbredden så sparar du inget minne på det.
Nej, men nu hade du ju ingen direkt begränsning av minne, så det är ju ett sätt att få snyggare text med lite kraft.

Re: Teckentabellsgenerator

Postat: 24 januari 2011, 20:41:03
av LHelge
Det är väl en smaksak, ingen större skillnad mot min lösning nr 1 på variabel teckenbredd eller? Varken prestandamässigt eller minnesmässigt?

Som jag skrev tidigare är programmet anpassat för lösning nr 1.

Re: Teckentabellsgenerator

Postat: 26 januari 2011, 20:07:58
av MadModder
Hmm... Läste genom första punkten noggrant nu. Jag fattade det först som att du även skrev ut alla med samma bredd... :p

Re: Teckentabellsgenerator

Postat: 27 januari 2011, 13:07:25
av v-g
Mitt superprogram har en fast teckenbredd så man får rita och göra alla tecken lika breda. Lite smådrygt vid punkter osv men men det funkar ju hyffsat.

Re: Teckentabellsgenerator

Postat: 27 januari 2011, 17:01:36
av LHelge
Funkar gör det definitivt, men jag störde mig mest på att det såg fult ut på skärmen.