Czcionka 10 i 20 na LCD z Nokii 3310

Dyskusje ogólne na temat "cyfrówki" czyli wszystko o TTL/CMOS, językach VHDL i VERILOG, bramkach, rejestrach, przerzutnikach... Dobre miejsce na pytania odnośnie uniwersalnych programatorów (np. Willem) a także podłączania własnych peryferiów do komputera PC.
ODPOWIEDZ
Awatar użytkownika
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

Post autor: Aro » 07 lut 2007, 20:34

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.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 07 lut 2007, 21:14

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.

Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 08 lut 2007, 20:48

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:

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
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?

ODPOWIEDZ