Pytanie do tych ktorzy programowali juz wyswietlacze.
Masz problem? Zapytaj na forum elektroda.pl
From: Doker <doker0_at_nospam_wp.pl>
Subject: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 09 Jul 2006 09:12:06 +0200
Podpialem swoj wyswietlacz ( http://www.artronic.pl/o_produkcie.php?id=617 )
Linie danych - 8 bitow - pod PORTD, a reszte pod PORTC - RST, R/W, A0,
E1, E2.
Napisalem taki oto program, ktorego celem jest wyswietlenie kilku
pixeli. Czegokolwiek..
Oczywiscie nic sie nie dzieje. Zupelnie nic.
Oto program w c++. Czy ktos wie dlaczego to nie dziala bo np. mial
doswiadczenie z podobnym wyswietlaczem?
#include <avr/io.h>
#include <avr/iom8.h>
void pause(unsigned char time)
{
for(unsigned char i = 0 ; i < time; ++i)
for(unsigned char j = 0 ; j < 255; ++j)
;
}
#define DANE PORTD
#define INSTR PORTC
#define A0 1 << 4
#define E1 1 << 3
#define E2 1 << 2
#define READ 1 << 1
#define RST 1 << 5
#define P0 1
#define P1 2
#define P2 4
#define P3 8
#define P4 16
#define P5 32
#define P6 64
#define P7 128
void SetI(const char & x)
{
INSTR = RST | x;
}
void SetD(const char& x)
{
DANE = x;
}
int main()
{
//DDRB = ~0;
DDRD = ~0; //out dir
DDRC = ~0; //out dir
// Turn on display OPTIONAL???
SetI (0 | E1 | E2);
pause(1);
SetD(0xe2);
SetI(READ | E1 | E2);
pause(1);
SetD(0xAF);
SetI( E1 | E2);
pause(1);
SetD (P0|P2|P4|P5|P7);
SetI (E1|A0 | E2);
pause(1);
while(1)
{
}
}
From: Tomasz Piasecki <mtbrider_at_nospam_poczta.__nospam__.onet.pl>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 09 Jul 2006 15:32:42 +0200
Doker wrote:
Oto program w c++. Czy ktos wie dlaczego to nie dziala bo np. mial
doswiadczenie z podobnym wyswietlaczem?
Z takim wyświetlaczem nie miałem do czynienia, nie znam sterownika. Mam
jednak parę uwag do kodu (przyjmuję, że to avrgcc).
void pause(unsigned char time)
{
for(unsigned char i = 0 ; i < time; ++i)
for(unsigned char j = 0 ; j < 255; ++j)
;
}
Co to? Nie prościej:
#include <avr/delay.h>
i użyć funkcji _delay_us() i _delay_ms() stosownie do potrzeby? Uwaga!
potrzebna prawidlowa definicja F_CPU w makefile czy gdzieś.
#define A0 1 << 4
Hm... To jest niebezpieczne. Lepiej
#define A0 (1 << 4)
bo nie masz pewności jakie wiązanie i priorytet będą miały operatory
pomiędzy ktorymi będziesz stosował te definicje.
TP.
--
| _ _ _ |
| _____ _| |_| | __ (o) | | __ __ _at_nospam_poczta.onet.pl |
| | \ | | |o \| \| |/o |/ _\| \ |
| |_|_|_| \_| |__/|_| |_|\__|\__||_| Tomasz Piasecki |
From: Doker <doker0_at_nospam_wp.pl>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 09 Jul 2006 18:54:51 +0200
Tomasz Piasecki napisał(a):
Doker wrote:
Oto program w c++. Czy ktos wie dlaczego to nie dziala bo np. mial
doswiadczenie z podobnym wyswietlaczem?
Z takim wyświetlaczem nie miałem do czynienia, nie znam sterownika. Mam
jednak parę uwag do kodu (przyjmuję, że to avrgcc).
void pause(unsigned char time)
{
for(unsigned char i = 0 ; i < time; ++i)
for(unsigned char j = 0 ; j < 255; ++j)
;
}
Co to? Nie prościej:
#include <avr/delay.h>
Pewnie prosciej. Pewnie uzyje.
i użyć funkcji _delay_us() i _delay_ms() stosownie do potrzeby? Uwaga!
potrzebna prawidlowa definicja F_CPU w makefile czy gdzieś.
#define A0 1 << 4
Hm... To jest niebezpieczne. Lepiej
#define A0 (1 << 4)
bo nie masz pewności jakie wiązanie i priorytet będą miały operatory
pomiędzy ktorymi będziesz stosował te definicje.
Dobra uwaga.
Skoro juz troche wiesz o wyswietlaczach to powiedz mi prosze czy to
normalne, ze nie ma tam miejsca na takt - SCK. Bo jesli ustawiam rejestr
po rejestrze bo informacji jest wiecej niz 8 bitow, to nie wiem jak
kontrolowac kiedy chce zeby wlasnie wtedy odczytal informacje ode mnie.
Nie rozumiem jak to dziala
From: =?ISO-8859-2?Q?Pawe=B3_Wi=EAcek?= <coven_at_nospam_vmh.net>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 9 Jul 2006 20:01:36 +0200
Thus wrote Doker <doker0_at_nospam_wp.pl>:
po rejestrze bo informacji jest wiecej niz 8 bitow, to nie wiem jak
kontrolowac kiedy chce zeby wlasnie wtedy odczytal informacje ode mnie.
Normalnie. Ustawiasz linie danych, r/w, d/c, a w następnie ustawiasz enable
(stosowne w zależności od tego z którym kontrolerem chcesz gadać) i wtedy
sobie odczytuje dane. Potem gasisz enable, zmieniasz ustawianie pozostałych
linii, itd.
Paweł
--
(___) | Pawel Wiecek ------ Coven / Svart ------ http://www.coven.vmh.net/ |
< o o > | <coven_at_nospam_vmh.net> GPG/PGP info in headers GSM: +48603240006 |
\ ^ / | * * Either throw the windows out of your computer, * * |
(") | * * or throw your computer out the window! -- RMS |
From: "Miller Artur" <armi_at_nospam_nowhere.com>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 9 Jul 2006 19:57:12 +0200
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8qafr$li2$1_at_nospam_node5.news.atman.pl...
Podpialem swoj wyswietlacz (
http://www.artronic.pl/o_produkcie.php?id=617 )
[pac]
ponawiam w zasadzie swoje pytanie - jaki kontroler ma ten LCD ? bo na
stronie artronica jes podane oznaczenie drivera a nie kontrolera. przedtem
to wrozenie z krysztalowej kuli ... inaczej programuje sie kontrolery z
serii SED/S1D, inaczej T6963 itd
_at_nospam_
From: Doker <doker0_at_nospam_wp.pl>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 09 Jul 2006 20:44:20 +0200
Miller Artur napisał(a):
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8qafr$li2$1_at_nospam_node5.news.atman.pl...
Podpialem swoj wyswietlacz (
http://www.artronic.pl/o_produkcie.php?id=617 )
[pac]
ponawiam w zasadzie swoje pytanie - jaki kontroler ma ten LCD ? bo na
stronie artronica jes podane oznaczenie drivera a nie kontrolera. przedtem
to wrozenie z krysztalowej kuli ... inaczej programuje sie kontrolery z
serii SED/S1D, inaczej T6963 itd
Jestes pewien ze " kontroler: S6B0086" oznacza driver nie kontroler?
Na module nie jest nic napisane....
update :)
na stronie producenta znalazlem takie dane:
Item No. Old No. Outline V.A Size
ABG122032G HY-12232G 80.0*36.0 60.5*18.5
Dot Size Dot Pitch Controller duty-bias
0.40*0.45 0.44*0.49 NJU6450 1/32 - 1/5
B/L LCD Type
LED STN
Dorzucam jeszcze karte katalogowa:
http://www.av-display.com.cn/products/G_ABG122032G.pdf
From: "Miller Artur" <armi_at_nospam_nowhere.com>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 9 Jul 2006 23:10:00 +0200
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8rj60$8ho$1_at_nospam_node4.news.atman.pl...
Miller Artur napisał(a):
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8qafr$li2$1_at_nospam_node5.news.atman.pl...
Podpialem swoj wyswietlacz (
http://www.artronic.pl/o_produkcie.php?id=617 )
[pac]
ponawiam w zasadzie swoje pytanie - jaki kontroler ma ten LCD ? bo na
stronie artronica jes podane oznaczenie drivera a nie kontrolera.
przedtem
to wrozenie z krysztalowej kuli ... inaczej programuje sie kontrolery z
serii SED/S1D, inaczej T6963 itd
Jestes pewien ze " kontroler: S6B0086" oznacza driver nie kontroler?
Na module nie jest nic napisane....
update :)
na stronie producenta znalazlem takie dane:
Item No. Old No. Outline V.A Size
ABG122032G HY-12232G 80.0*36.0 60.5*18.5
Dot Size Dot Pitch Controller duty-bias
0.40*0.45 0.44*0.49 NJU6450 1/32 - 1/5
B/L LCD Type
LED STN
Dorzucam jeszcze karte katalogowa:
http://www.av-display.com.cn/products/G_ABG122032G.pdf
tyle, ze tam nie ma slowa o tym jaki kontroler ma ten LCD.
po krótkich poszukiwaniach okazalo sie jednak, ze tam podobno jest cudo
nazwane NJU6450 :-) w datasheecie (google Twoj przyjaciel) masz napisane
dokładnie co trzeba zrobic, aby na nim cos wyswietlic. dla pocieszenia
dodam, ze jest to duzo prostsze niz w inncyh kontrolerach, bo ten nie
zawiera generatora znaków :)
powodzenia
_at_nospam_
From: Doker <doker0_at_nospam_wp.pl>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Sun, 09 Jul 2006 23:24:46 +0200
Miller Artur napisał(a):
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8rj60$8ho$1_at_nospam_node4.news.atman.pl...
Miller Artur napisał(a):
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8qafr$li2$1_at_nospam_node5.news.atman.pl...
Podpialem swoj wyswietlacz (
http://www.artronic.pl/o_produkcie.php?id=617 )
[pac]
ponawiam w zasadzie swoje pytanie - jaki kontroler ma ten LCD ? bo na
stronie artronica jes podane oznaczenie drivera a nie kontrolera.
przedtem
to wrozenie z krysztalowej kuli ... inaczej programuje sie kontrolery z
serii SED/S1D, inaczej T6963 itd
Jestes pewien ze " kontroler: S6B0086" oznacza driver nie kontroler?
Na module nie jest nic napisane....
update :)
na stronie producenta znalazlem takie dane:
Item No. Old No. Outline V.A Size
ABG122032G HY-12232G 80.0*36.0 60.5*18.5
Dot Size Dot Pitch Controller duty-bias
0.40*0.45 0.44*0.49 NJU6450 1/32 - 1/5
B/L LCD Type
LED STN
Dorzucam jeszcze karte katalogowa:
http://www.av-display.com.cn/products/G_ABG122032G.pdf
tyle, ze tam nie ma slowa o tym jaki kontroler ma ten LCD.
No jak to nie ma ;>
>> Dot Size Dot Pitch Controller duty-bias
>> 0.40*0.45 0.44*0.49 NJU6450 1/32 - 1/5
Nie wiem jak to jest ale jakos mi sie to cos wiesza na czekaniu na Busy.
Poza tym nie jestem elektronikiem tylko programista i wielu rzeczy nie
rozumiem jak np "Duty" ale oczywiscie nikt mi tu nie odpisal co to znaczy.
Ponizszy program wiesza sie na "//4" - tzn na diodach kontrolnych wiesza
mi sie na numerze "4".
#include <avr/io.h>
#include <avr/iom8.h>
void pause(const unsigned int & time)
{
for(unsigned int i = 0 ; i < time; ++i)
for(unsigned char j = 0 ; j < 255; ++j)
;
}
void inline sleep(const unsigned int & time)
{
pause(time);
}
#define DANE PORTD
#define INSTR PORTC
#define A0 (1 << 4)
#define E1 (1 << 3)
#define E2 (1 << 2)
#define READ (1 << 1)
#define WRITE 0
#define RST (1 << 5)
#define P0 1
#define P1 2
#define P2 4
#define P3 8
#define P4 16
#define P5 32
#define P6 64
#define P7 128
void inline SetI(const char & x)
{
INSTR = x;
}
void inline SetD(const char& x)
{
DANE = x;
}
#define IN 0
#define OUT (~0)
void WaitBusy()
{
DDRD = IN;
SetI(READ);
while(PIND & P7);
}
void WaitReset()
{
DDRD = IN;
SetI(READ);
while(PIND & P4);
}
void TurnOn()
{
DDRD = OUT;
SetD(0xaf);
SetI(WRITE | E1 | E2);
}
void Write(const char & dane, const char & part)
{
DDRD = OUT;
SetD(dane);
SetI(part | A0 | WRITE);
}
void inline DiodaPlus()
{
PORTB +=1;
}
void init()
{
DDRC = OUT;
DDRB = OUT;
DiodaPlus(); //1
sleep(5000);
DiodaPlus(); //2
WaitBusy();
DiodaPlus(); //3
TurnOn();
DiodaPlus(); //4
WaitBusy();
DiodaPlus(); //5
Write(~0, E1 | E2);
DiodaPlus(); //6
}
int main()
{
init();
}
From: "Miller Artur" <armi_at_nospam_nowhere.com>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Mon, 10 Jul 2006 00:59:09 +0200
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8rsh2$b4f$1_at_nospam_node4.news.atman.pl...
Nie wiem jak to jest ale jakos mi sie to cos wiesza na czekaniu na Busy.
Poza tym nie jestem elektronikiem tylko programista i wielu rzeczy nie
rozumiem jak np "Duty" ale oczywiscie nikt mi tu nie odpisal co to znaczy.
Duty to calkowita liczba linii (wierszy) wyswietlacza odniesiona do liczby
jednoczesnie sterowanych wierszy. w malych lcd jednoczesnie sterowany jest
jeden wiersz, wiec duty bedzie 1/Y
Ponizszy program wiesza sie na "//4" - tzn na diodach kontrolnych wiesza
mi sie na numerze "4".
pomierz voltmiarka czy odpowiednie linie maja poprawne stany logiczne. ne
zapominaj o E1 i E2 !!
pozdr
_at_nospam_
From: Doker <doker0_at_nospam_wp.pl>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Mon, 10 Jul 2006 17:33:53 +0200
Miller Artur napisał(a):
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8rsh2$b4f$1_at_nospam_node4.news.atman.pl...
Nie wiem jak to jest ale jakos mi sie to cos wiesza na czekaniu na Busy.
Poza tym nie jestem elektronikiem tylko programista i wielu rzeczy nie
rozumiem jak np "Duty" ale oczywiscie nikt mi tu nie odpisal co to znaczy.
Duty to calkowita liczba linii (wierszy) wyswietlacza odniesiona do liczby
jednoczesnie sterowanych wierszy. w malych lcd jednoczesnie sterowany jest
jeden wiersz, wiec duty bedzie 1/Y
Ponizszy program wiesza sie na "//4" - tzn na diodach kontrolnych wiesza
mi sie na numerze "4".
pomierz voltmiarka czy odpowiednie linie maja poprawne stany logiczne. ne
zapominaj o E1 i E2 !!
Sprawdzam. niby wszystko w porzadku a tu nic sie nie wyswietla. Mysle za
zamowie nowa
plytke PCB taka z pinami na zlacze kolkowe tak zeby wyswietlacz wchodzil
w to bezposrednio
i wtedy zobaczymy.
Natoamist teraz mam jeszcze ostatnie pytanie. Czy strona - Page oznacza
cos takiego jak to bylo kiedys w dosie ze byly backbuforry na ktorych
mozna bylo rysowac a pozniej pokazywac na zmiane tworzac animacje
czy po prostu sektor - kawalek ekranu?
From: "Miller Artur" <armi_at_nospam_nowhere.com>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Mon, 10 Jul 2006 18:56:33 +0200
Użytkownik "Doker" <doker0_at_nospam_wp.pl> napisał w wiadomości
news:e8tsbi$m9a$1_at_nospam_node4.news.atman.pl...
Natoamist teraz mam jeszcze ostatnie pytanie. Czy strona - Page oznacza
cos takiego jak to bylo kiedys w dosie ze byly backbuforry na ktorych
mozna bylo rysowac a pozniej pokazywac na zmiane tworzac animacje
czy po prostu sektor - kawalek ekranu?
wyglada z datasheeta (nigdy nie programowalem tego cuda, wiec wnioskuje z
opisu), ze nie starczyoby pamieci na 4 strony. RAMu tegoz jest az 2560
bitow, co wystarcza na 80x32 pixele. lcd jest 122x32, ale ma 2 kontrolery,
wiec ma pewnien zapas tylko (pewien obszar RAMu nie jest pokazywany na
wyswietlaczu)
_at_nospam_
From: Doker <doker0_at_nospam_wp.pl>
Subject: Re: Pytanie do tych ktorzy programowali juz wyswietlacze.
Date: Wed, 12 Jul 2006 19:30:05 +0200
Serdecznie dziekuje i pozdrawiam.
PS. Wlasne mysle nad plytka. jak zrobie to wszystko sie okaze.