Jak skonfigurować LCD 16x1 z AVR MEGA16 w CodeVision, aby wyświetlał wszystkie znaki?
MEGA16 + CodeVision + LCD + dlaczego ?
From: "Sunnyvalian" <bzyfon_at_nospam_dslextreme.com>
Subject: MEGA16 + CodeVision + LCD + dlaczego ?
Date: Sat, 20 Nov 2004 22:57:10 -0800
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
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: MEGA16 + CodeVision + LCD + dlaczego ?
Date: Sun, 21 Nov 2004 10:52:38 +0100
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
From: "Ostry" <tocomm_at_nospam_pf.pl.bezzzspamu>
Subject: Re: MEGA16 + CodeVision + LCD + dlaczego ?
Date: Sun, 21 Nov 2004 11:12:10 +0100
peters wrote:
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
From: "Piotrek Sz." <zumek.WYTNIJ_at_nospam_gazeta.pl>
Subject: Re: MEGA16 + CodeVision + LCD + dlaczego ?
Date: Sun, 21 Nov 2004 13:20:11 +0000 (UTC)
Ostry <tocomm_at_nospam_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 ;)
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/
From: "Sunnyvalian" <bzyfon_at_nospam_dslextreme.com>
Subject: Re: MEGA16 + CodeVision + LCD + dlaczego ?
Date: Sun, 21 Nov 2004 21:34:34 -0800
dzieki jest tak jak piszecie
"Piotrek Sz." <zumek.WYTNIJ_at_nospam_gazeta.pl> wrote in message
news:cnq4mb$mrm$1_at_nospam_inews.gazeta.pl...
Ostry <tocomm_at_nospam_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 ;)
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/