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 

pomik (scrolling) lcd displaya

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



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 8.47
Kraj: Krško

PrispevekObjavljeno: Sre Avg 16, 2006 7:45 am    Naslov sporočila:  pomik (scrolling) lcd displaya Odgovori s citatom

Ojla,

na 16x1 lcd moram napisati sporočilo, dolgo cca 25 znakov. Takoj sem pomislil na scroll, pa še lepo elegantno je, ko se ti napis pripelje in odpelje Smile Problem je, ker je moj display organiziran kot dvovrstični, torej znaki 1-16 imajo adrese 01h-09h ter 40h-49h.

Display sem konfiguriral tako, da sem vključil scroll, se postavil na zadnji (16.) znak in pisal. Zaradi omenjene konfiguracije pa zadeva ne deluje.

Zdaj vidim edino možnost v tem, da sam napišem scroll rutino in za vsak nov znak napišem cel tekst na display.

Se je že kdo srečal s tem problemom? Kako ste to rešili?


lp, Damo
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Sre Avg 16, 2006 9:29 am    Naslov sporočila:   Odgovori s citatom

Lahko dodajas samo po en znak na konec vsake vrstice, ce imas nastavljem pomik - namesto 16 znakov bos tako poslal samo 2, moras pa zato menjati pozicijo kurzorja.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 8.47
Kraj: Krško

PrispevekObjavljeno: Sre Avg 16, 2006 2:27 pm    Naslov sporočila:   Odgovori s citatom

ja, pomik imam nastavljen, problem pa je, ker so lokacije organizirane 0-7 in 40-47.

Popoldne bom poskusil naslednje (recimo, da imam 20 znakov dolg text):

1. napišem sporočilo na lokacijo 0x08....0x28 (ki bo itak skrito)

2. postavim kurzor na 16i znak (adresa 0x47), vključim avt. pomik

3. for (a=1;a<=20;a++) lcd_data (text[a]); - scroll

4. for (a=1;a<=20;a++) lcd_data (" ");
(da napis odpotuje in imam na koncu le prazen lcd)

5. izključim avt. pomik

lcd_data je podprogram, ki pošlje podatek na lcd display


bom javil, kako mi je ratalo
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
damo
Član
Član



Pridružen-a: Čet 31 Jul 2003 13:45
Prispevkov: 2008
Aktiv.: 8.47
Kraj: Krško

PrispevekObjavljeno: Sre Avg 16, 2006 10:00 pm    Naslov sporočila:  Tkole sem naredil: Odgovori s citatom

//---------------------------------------------------------------
// lcd_scroll - scroll izpis teksta
//---------------------------------------------------------------

void lcd_scroll (unsigned char text[40])
{
unsigned char x=0;

lcd_clear;

lcd_code (128+0x10);

while (text[x++]!=0) lcd_data (text[x]);

x=0;
lcd_code (0x07); // set scroll mode on
lcd_code (128+0x47);


while (text[x++]!=0)
{
lcd_data (text[x]);
delay(400);
}

lcd_code (0x06); // set scroll mode off

return;
}



Pomanjkljivost je edino ta, da se mora string začeti s presledkom, ker pa "požre". Ker je ura pozna, se mi ne da več raziskovat zakaj, pa tudi moti me ne preveč.


lp
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
domobranko
Član
Član



Pridružen-a: Pet 03 Mar 2006 17:55
Prispevkov: 35
Aktiv.: 0.15
Kraj: Koper

PrispevekObjavljeno: Pet Avg 18, 2006 6:58 pm    Naslov sporočila:   Odgovori s citatom

poskusi naslednje:

void lcd_scroll (unsigned char text[40])
{
unsigned char x=0;

lcd_clear;

lcd_code (128+0x10);

while (text[x+1]!=0) {
lcd_data (text[x]);
x++;
}


x=0; lcd_code (0x07); // set scroll mode on
lcd_code (128+0x47);


while (text[x+1]!=0)
{
lcd_data (text[x]);
x++;
delay(400);
}


lcd_code (0x06); // set scroll mode off

return;
}

ko si dal text[x++] v while pogoj je x povečalo za ena še preden se je zanka začela izvajat, tako da se je v prvem koraku izvedlo lcd_data(text[1]) in ne lcd_data(text[0]) kot si želiš.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Č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: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group