|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.66 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Pon Jul 06, 2015 10:43 am Naslov sporočila: GLCD izpisovanje font |
|
|
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 |
|
|
bolha95 Član
Pridružen-a: Pet 14 Dec 2007 21:33 Prispevkov: 296 Aktiv.: 1.49 Kraj: Križe / Tržič
|
Objavljeno: Pon Jul 06, 2015 1:30 pm Naslov sporočila: |
|
|
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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.66 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Tor Jul 07, 2015 3:37 pm Naslov sporočila: |
|
|
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 |
|
|
dejko1 Član
Pridružen-a: Ned 16 Mar 2008 0:21 Prispevkov: 265 Aktiv.: 1.35 Kraj: Ljubljana
|
Objavljeno: Sre Jul 08, 2015 12:11 am Naslov sporočila: |
|
|
Se mi zdi da si malce zakompliciral zaradi baziranja na prvi kodi
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 |
|
|
|
|
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: 74 dni
Powered by phpBB © 2001, 2005 phpBB Group
|