www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

GLCD izpisovanje font

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Pon Jul 06, 2015 10:43 am    Naslov sporočila:  GLCD izpisovanje font Odgovori s citatom

Pozdravljeni,

uporabljam LCD HEM6464, in nanj znam izpisati font velikosti 8 x 8 pik. Ne znam pa izpisati font ki bil 16 x 16, torej enkrat večji.

Kodo ki mi pogleda v char polje in izpiše piksle sem našel nekje na internetu. Naprej ne znam, bila je pisana samo za 8x8.

In je takšna:

Koda:
void PotisniPiko(int znak, int font, int x, int y){
   byte i_byte;

   GotoXY(x, y);
      if(font == 1){
         for(i_byte = 0; i_byte < 8; i_byte++){
            ZapisiNaLCD(font1[(8 * znak) + i_byte]);
         }
      }


Sam sem si zadevo zamisllil tako da naprej izpiše prvo polovico, zgornjo potem pa še spodnjo in sem napisal nekako takole:

Koda:
      if(font == 3){
         for(k_byte = 0; k_byte <= 8; k_byte++){
            if(k_byte < 8){
            ZapisiNaLCD(font4[(16 * (znak)) + k_byte]);
            }else{
               y = y + 1;
               GotoXY(x, (y));
               for(k_n_byte = k_byte; k_n_byte < 16; k_n_byte++){
                  ZapisiNaLCD(font4[(16 * (znak)) + k_n_byte]);               }
            }
         }
      }


Izpišejo se nakako čudni znaki, ne vem niso zamaknjeni ali kaj podobnega pač nekaj.

Recimo za A znak imam v polju napisano takole:

Koda:
0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,


Za A ki pa deluje (8x8) pa imam napisano takole:
Koda:
0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00, //65/ --> A

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
bolha95
Član
Član



Pridružen-a: Pet 14 Dec 2007 21:33
Prispevkov: 296
Aktiv.: 1.49
Kraj: Križe / Tržič

PrispevekObjavljeno: Pon Jul 06, 2015 1:30 pm    Naslov sporočila:   Odgovori s citatom

A si poskusil poiskati kakšne že narejene knjižnice? Jaz na AVR uporabljam tole: http://en.radzio.dxp.pl/

Preveri, če je podprt tvoj kontroler. Naj bi bil tudi ARM podprt

_________________
LP,
Robi
Kjer se znanje konča, se domišljija začne
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Tor Jul 07, 2015 3:37 pm    Naslov sporočila:   Odgovori s citatom

Sem rešil takole:


Koda:
if(font == 3){
         for(k_byte = 0; k_byte <= 16; k_byte++){
            if(k_byte < 16){
            ZapisiNaLCD(font6[(32 * (znak - 48)) + k_byte]);

            }else{
               y = y + 1;
               //x = x + 6;
               GotoXY(x, (y));
               for(k_n_byte = k_byte; k_n_byte < 32; k_n_byte++){
                  ZapisiNaLCD(font6[(32 * (znak - 48)) + k_n_byte]);
               }
            }
         }
      }

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
dejko1
Član
Član



Pridružen-a: Ned 16 Mar 2008 0:21
Prispevkov: 265
Aktiv.: 1.36
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jul 08, 2015 12:11 am    Naslov sporočila:   Odgovori s citatom

Se mi zdi da si malce zakompliciral zaradi baziranja na prvi kodi Wink

Zdaj imaš prvo zanko ki gre od 0-16 pri čemer se pri 16 izvede druga zanka s 16-31 (enako bi delalo tudi če bi drugo zanko premaknil ven in za prvo zanke). Veliko lažje za razumevanje kode je če imaš samo eno zanko in gre števec od 0-31.

Nekaj takega:
Koda:

if(font == 3){
  for(k_byte = 0; k_byte < 32; k_byte++){
    if(k_byte == 16) {
      y = y + 1;
      GotoXY(x, (y));
    }
    ZapisiNaLCD(font6[(32 * (znak - 48)) + k_byte]);
  }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 47 dni


Powered by phpBB © 2001, 2005 phpBB Group