Czcionka 10 i 20 na LCD z Nokii 3310
- Aro
- Użytkownik
- Posty: 677
- Rejestracja: 30 paź 2006, 18:49
- Lokalizacja: Świerczyniec | Wrocław
- Kontakt:
Czcionka 10 i 20 na LCD z Nokii 3310
Normalna czcionka na ten wyświetlacz to 8. Pisanie tekstu w tym rozmiarze jest proste, wystarczy wpisywac kolejne bajty prosto z tablicy czcinek. Ja potrzebuje czcionek 10 i 20 więc chyba jedynym rozwiązaniem jest zrobienie bufora obrazu. Myśle żeby zrobic to w ten sposób - czcionke zapisywac dwóbajtową stałą. Bufor to będzie tablica[84,6] i zastosowac takie polecenie do wpisu tablica[x,y]=czcionka | tablica[x-1,y] , "|" żeby nie zmazac poprzedniej lini. Mam takie pytanie - czy to dobra metoda i warto to zrobic, czy jest może lepszy (szybszy) sposób? Chodzi ogólnie o cały program.
Zajrzyj na https://elportal.pl/n0017 . W materiałach do części 14 kursu jest zaawansowana biblioteka LCD. Czcionka ma maksymalną wysokość 16pikseli, ale możesz zobaczyć jak to działa. Do tego czcionka o zmiennej szerokości. Kurs kończy się już niedługo i wtedy temat tej biblioteki zostanie rozwinięty na stronie. Chwilowo projekt stanął z braku mocy przerobowych.
- Aro
- Użytkownik
- Posty: 677
- Rejestracja: 30 paź 2006, 18:49
- Lokalizacja: Świerczyniec | Wrocław
- Kontakt:
Troche to skomplikowane, i trudno sie połapac. Na dodatek zajmuje aż 5KB! Ja potrzebuje jak najmniejszej minimalizacji, najlepiej jakby procedury obsługi LCD i tekstu nie zajmowały więcej niż 2KB. Na czcionke 20 byłoby trochę przerabiania. Zastosowanie tablicy jako bufora wydaje się proste(choc pamięciożerne bo aż 0,5KB czyli połowa pamięci) i wpisywanie go jak obrazka. Program dla '10' wyglądałby tak:
tak będzie wyglądac z czcionką 10-16. Ale nie jestem pewny czy to dobry sposób. Może da się szybciej i oszczędniej?
Kod: Zaznacz cały
for(x=0;x<6;x++){ //pętla do wpisu pojedynczego znaku
tab[y,x+szer]=font[x] | tab[y,x+szer]; //wpis starszej części do bufora z zachowaniem
//jego ostatniej wartości żeby nie "uszkodzic" znaków w poprzedniej lini
//przed wpisem całego tekstu czyszczenie bufora żeby nie było śmieci
tab[y+1,x+szer]=(font[x]<<8); //wpis młodszej części, zachowanie poprzedniej niepotrzebne
}
//uint8_t tab[6,84]-bufor obrazu
//uint16_t font[6] znak czcionki