Witam.
Dziękuję kolegom za zainteresowanie, moim problemem. Problem rozwiązałem następująco"
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz troszkę objaśnienia do tej procedury:
Tablice bitmap wyglądu znaku graficznego kodu ASCII mają zmiennej ilości bajtów, inna jest dla cyfry 1 - 3 bajty, i inna dla cyfry 2 -5 bajtów, dlatego utworzyłem tyle tablic ile chcę wyświetlić różnych znaków graficznych. Aby móc prawidłowo wyświetlić bitmapę znaku dodałem jako pierwszy bajt informujący z ilu bajtów składa się dana bitmapa znaku. Tak więc teraz dla cyfry 1 tablica ma 4 bajty, a dla cyfry 2 ma 6 bajtów.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Te tablice umieściłem w pamięci programu t.j. FLASH-u i są typu Read-only . Aby móc pobrać odpowiednią bitmapę znaku graficznego utworzyłem kolejną tablicę Znak[] uporządkowaną zgodnie z kodami znaków ASCII i przechowuję w niej adresy (wskaźniki - 2 bajtowe), do bitmap znaków. Ta tablica nie zawiera znaków nie drukowanych wiec pierwszym adresem jest adres bitmapy znaku - SPACJA kod 32.
I teraz chcąc wysłać do LCD znak SPACJA o kodzie 32 muszę odjąć ilość nie drukowanych znaków która wynosi 32, stąd adres tablicy bitmapy znaku SPACJA=32-32=0 a to jest pierwszy adres w tablicy Znak[] inaczej Znak[0]:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Mając adres tablicy z bitmapą znaku np: C32 odczytuję jej [0] element mówiący ile kolejnych bajtów zajmuje bitmapa wyglądu znaku, dodatkowo asekuracyjnie ograniczyłem maską 0x07 maksymalną wielość odczytywanej bitmapy - jest to równocześnie maksymalna szerokość wyświetlanego na LCD znaku. Odczytane bajty wysyłam do LCD i po wysłaniu całej bitmapy wysyłam jeszcze odstęp pomiędzy znakami o wielkości 1 piksela. W zależności czy znaki generuję na białym tle czy zanegowane (mówi o tym zmienna
color) wysyłam odpowiednio 0x00 lub 0xFF.
Kończąc dziękuję za podpowiedź koledze
APAP75.
Pozdrawiam wszystkich i do następnego "problemu" z C dla AVR-ów.
P.S. Właśnie w tej chwili odebrałem od kolegi
rskup poprawki do mojego zapytania. Ze względu na porę zapoznam się z nimi jutro niemniej jednak bardzo serdecznie koledze dziękuję za odpowiedź.