RTV forum PL | NewsGroups PL

Problem z wyświetlaniem znaków na LCD 16x1 w projekcie z MEGA16 i CodeVision

MEGA16 + CodeVision + LCD + dlaczego ?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Problem z wyświetlaniem znaków na LCD 16x1 w projekcie z MEGA16 i CodeVision

Sunnyvalian
Guest

Sun Nov 21, 2004 6:57 am   



Hi,

amator jestem, laik , lamer i beginner

mam AVR MEGA16 na STK500 (Atmelowski Board) z oscyl. 4MHz do tego LCD 16x1
firmy LUMEX
i program w CodeVisionAVR

#include <mega16.h>

#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

void time(int k)
{
int i,n;
for(i=0;i<250;i++) for(n=0;n<k;n++) ;
}

void main(void)
{

.....tu byly inicjalizacje itd......

lcd_init(16);
lcd_putsf("LCD Poczatek");

while (1)
{

// jak nacisne przelacznik to na LCD ma sie cos dziac

if(PIND == ~0x01) lcd_clear();
if(PIND == ~0x02) lcd_putsf("Z");
if(PIND == ~0x04) lcd_putsf("1234567890");
if(PIND == ~0x08)
{
lcd_clear();
lcd_gotoxy(3,0);
lcd_putsf("ABCDEFGHIJK");
}
if(PIND == ~0x10)
{
lcd_clear();
lcd_putsf("M");
time(20);
lcd_clear();
lcd_putsf("Ma");
time(20);
lcd_clear();
lcd_putsf("Mag");
time(20);
lcd_clear();
lcd_putsf("Magd");
time(20);
lcd_clear();
lcd_putsf("Magda");
time(20);
lcd_clear();
lcd_putsf("Magdal");
time(20);
lcd_clear();
lcd_putsf("Magdale");
time(20);
lcd_clear();
lcd_putsf("Magdalen");
time(20);
lcd_clear();
lcd_putsf("Magdalena");
time(20);
lcd_clear();
lcd_putsf("Magdalena ");
time(20);
}
if(PIND == ~0x20)
{
lcd_putchar('M');
time(200);
lcd_putchar('a');
time(200);
lcd_putchar('g');
time(200);
lcd_putchar('d');
time(200);
lcd_putchar('a');
time(200);
lcd_putchar('l');
time(200);
lcd_putchar('e');
time(200);
lcd_putchar('n');
time(200);
lcd_putchar('a');
time(200);
lcd_putchar(' ');
time(200);
}
time(222);
};
}

przy starcie wyswietla tylko 8 znakow -> To zabaw

wiec naciskam sobie przelaczniki na plytce i .....
jakos moj LCD ma problem z wyswietlaniem 8-mego i dalszych znakow

kiedy ciagle naciskam drugi guzik ten od lcd_putsf("Z"); literki z
szybko wypisuja
sie az do 8 miejsca potem pare sekund przerwy i mam z-ki do konca

wypisywanie Magdalena na oba sposoby konczy sie na Magdalen

wiec ludzie pomozcie prosze bo mnie zaraz cos trafi i moja przygoda z
uC skonczy sie szybko

pozdrawiam

peters
Guest

Sun Nov 21, 2004 9:52 am   



Quote:
kiedy ciagle naciskam drugi guzik ten od lcd_putsf("Z"); literki z
szybko wypisuja
sie az do 8 miejsca potem pare sekund przerwy i mam z-ki do konca

Witam. Jak pamietam (a pamiec mam bardzo kiepska) przyczyna moze byc taka,
ze kontroler wyswietlacza widzi znaki powyzej 9-tego tak jakby byly w nowym
wierszu.
I chyba tak wlasnie jest w wyswietlaczach 1x16. Mowie chyba, bo od wielu lat
takim sie nie bawilem

peters

Ostry
Guest

Sun Nov 21, 2004 10:12 am   



peters wrote:

Quote:
Witam. Jak pamietam (a pamiec mam bardzo kiepska) przyczyna moze byc
taka, ze kontroler wyswietlacza widzi znaki powyzej 9-tego tak jakby
byly w nowym wierszu.
I chyba tak wlasnie jest w wyswietlaczach 1x16. Mowie chyba, bo od
wielu lat takim sie nie bawilem

True, mam taki sam, znaki od 9-go do 16-go mają takie adresy jakby należały
do drugiej linii.

--
Ostry

Piotrek Sz.
Guest

Sun Nov 21, 2004 2:20 pm   



Ostry <tocomm@pf.pl.bezzzspamu> napisał(a):
...
Quote:
True, mam taki sam, znaki od 9-go do 16-go mają takie adresy jakby należały
do drugiej linii.

Witam.

One należą do 2-giej linii Wink
LCD 16*1 to jest takie dziwne ustrojstwo . Składa się z 2 wierszy , a każdy
wiersz posiada bufor , w którym mieści się 40 znaków z tym , że na
wyświetlaczu widzimy po 8 znaków z każdej linii.W wyswietlaczu znajduje się
rejestr indeksowy od wartości którego zależy ,które z 8 znaków z bufora widzimy
na wyświetlaczu.
przykład:
bufor_Linia1:1234567890123456789012345678901234567890
bufor_Linia2:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN

index=0:na wyświetlaczu widzimy 12345678abcdefgh
index=5:na wyświetlaczu widzimy 67890123fghijklm
index=25:na wyświetlaczu widzimy 67890123zABCDEFG

Tak to mniejwięcej wygląda ;-)

Pozdrawiam
Piotrek Sz.

PS
Wielkość bufora zależy od typu LCD.Tu opisałem STC1C16DRG


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Sunnyvalian
Guest

Mon Nov 22, 2004 5:34 am   



dzieki jest tak jak piszecie


"Piotrek Sz." <zumek.WYTNIJ@gazeta.pl> wrote in message
news:cnq4mb$mrm$1@inews.gazeta.pl...
Quote:
Ostry <tocomm@pf.pl.bezzzspamu> napisał(a):
..
True, mam taki sam, znaki od 9-go do 16-go mają takie adresy jakby
należały
do drugiej linii.

Witam.
One należą do 2-giej linii Wink
LCD 16*1 to jest takie dziwne ustrojstwo . Składa się z 2 wierszy , a
każdy
wiersz posiada bufor , w którym mieści się 40 znaków z tym , że na
wyświetlaczu widzimy po 8 znaków z każdej linii.W wyswietlaczu znajduje
się
rejestr indeksowy od wartości którego zależy ,które z 8 znaków z bufora
widzimy
na wyświetlaczu.
przykład:
bufor_Linia1:1234567890123456789012345678901234567890
bufor_Linia2:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN

index=0:na wyświetlaczu widzimy 12345678abcdefgh
index=5:na wyświetlaczu widzimy 67890123fghijklm
index=25:na wyświetlaczu widzimy 67890123zABCDEFG

Tak to mniejwięcej wygląda ;-)

Pozdrawiam
Piotrek Sz.

PS
Wielkość bufora zależy od typu LCD.Tu opisałem STC1C16DRG


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -
http://www.gazeta.pl/usenet/


elektroda NewsGroups Forum Index - Elektronika Polska - Problem z wyświetlaniem znaków na LCD 16x1 w projekcie z MEGA16 i CodeVision

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map