Ansluta Nokia 3310 LCD till USB med hjälp av AVR (9 / 9 steg)
Steg 9: Att göra ett eget teckensnitt
Tja, i fallet, varför inte göra din egen? Det är verkligen enkelt.
Varje tecken består av 5 byte, vilket betyder att de kommer att dyka upp som 8 x 5 pixlar på displayen. Detta är tillräckligt med utrymme för de flesta tecken. Teckensnitt är inbäddade på AVR för snabb åtkomst (det skulle ta evigheter att skicka via USB), i en array med namnet "teckensnitt" i Atmega8_LCD.h i källorna.
Det enklaste sak att göra är skriva över teckensnittet har jag redan gjort i matrisen teckensnitt som då du slipper bråka med annan kod. Helt enkelt ta bort allt inom hakparentesen i denna matris:
statisk const unsigned char teckensnitt [] = {
Ta bort allt inuti här
}
Sedan är det bara så gör din äga dopfunten, börjar på * utrymme * (33: ASCII-tecknet)!
Om du vill en ASCII uppslagstabell, för att se vilka tecken behöver du att göra, Detta är en bra referens. Kom ihåg att du behöver lägga till 5 byte för varje tecken som du gör, och du kan inte hoppa över några tecken!
Här är en plan som du kan kopiera:
0B00000000, / / karaktär * ingenting *
0B00000000,
0B00000000,
0B00000000,
0B00000000,
Om du av någon anledning inte önskar yo använda alla 5 byte, kan du använda speciell kod för att "hoppa":
0b10000000
Detta kommer helt enkelt inte rita något och flyttar inte X plats. Genom att göra detta kan du göra de tecken som har en enda pixel avståndet mellan dem oavsett hur stor eller liten karaktär är (i stället för en massa tomt utrymme mellan tecken). Det enda dåligt med detta är att du inte har en karaktär som använder den sista pixeln. Jag inte oroa sig om det, eftersom min font har 1 pixel avstånd där, så typsnittet ser trevligare.
Om det blir ett problem för din teckensnitt, kan du alltid ändra det till något annat i funktionen LCD_writeChar.
Här är ett exempel tecken för dig är det huvudstaden från min font:
statisk const unsigned char teckensnitt [] = {
....
0b01111000, / / karaktär A
0b00100100,
0b00100100,
0b01111000,
0b10000000, / / hoppa över sista pixel
....
}
(Regler skriver pixlar till LCD fortfarande räkna här, 1 bit = övre, 8 bit = lägre, Läs höger till vänster)
Observera att 1 pixel normalavståndet mellan tecken läggs automatiskt!