Wyświetlacz kolorowy z kursu EdW

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
ODPOWIEDZ
slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Wyświetlacz kolorowy z kursu EdW

Post autor: slawek55 » 11 mar 2007, 11:43

Cześć.
Chciałem się zapytać o wyświetlacz kolorowy od Nokii 3510i z kursu EdW.
Otóż przeczytałem marcowe EdW i zastanawia mnie kilka rzeczy.
1. Do wyświetlacza jest wysyłana komenda która przyjmuje np 5
paramerów. Co się stanie w sytuacji jak wyślemy inną liczbe danych niż
wymaga komenda (mniejszą lub większą)?
2. A jak wygląda sprwa organizacji pamięci wyświetlacza we
współrzędne. Tzn jak jest liczona jego rozdzielczośc gdzie jest punkt
X=0 i Y=0 oraz jakie są max wartości X i Y.
W przypadku wyświatacza od Nokii 3310 w EdW 11/06 na stronie 41 jest
taki rysunek pokazujący organizację pamięci wyświetlacza. A jak to
wygląda w tym kolorowym wyświetaczu. Jak się mają teraz punkty
(piksele) do subpikseli RGB.
3. Jak się odbywa sterowanie jasnością pikseli? Dlaczego korzystamy z
takiego "dziwnego" trybu 12bpp a nie łatwiejszego 8bpp.
Jak w tych dwóch przypadkach spowodować narysowanie jednej poziomej
lub dla utrudnienia pionowej linii, albo np jednego koloru.
Ostatnio zmieniony 13 mar 2007, 6:54 przez slawek55, łącznie zmieniany 4 razy.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 11 mar 2007, 12:19

Na podstronie dotyczącej wyświetlacza 3510i umieściłem oryginalnego pdf'a opisującego sterownik. Zapraszam: https://elportal.pl/n0017
Co się stanie w sytuacji jak wyślemy inną liczbę danych niż
wymaga komenda (mniejszą lub większą).
Mniejszą - nie mam pojęcia. Większą - można spodziewać się, że wyświetlacz zignoruje resztę danych. Producent raczej nie spodziewał się takiego pytania. Pytanie: po co wysyłać mniejszą lub większą ilość danych niż wymaga komenda?
A jak wygląda sprwa organizacji pamięci wyświetlacza we
współrzędne. Tzn jak jest liczona jego rozdzielczośc gdzie jest punkt
X=0 i Y=0 oraz jakie są max wartości X i Y.
W wyświetlaczu określamy okno dostępu. Początek powinien mieć mniejszą wartość niż koniec okna. Nie da się jednoznacznie odpowiedzieć na to pytanie, kierunek zmian współrzędnych oraz ich początek możemy dowolnie określać. Można przyjąć, że przy domyślnej konfiguracji, bez podawania okna - tak jak w artykule, punkt 0,0 jest w lewym-górnym rogu jeśli za górę uznamy stronę na której znajduje się sterownik i złącze.
w przypadku wyświatacza od Nokii 3310 w EdW 11/06 na stronie 41 jest
taki rysunek pokazujący organizację pamięci wyświetlacza. A jak to
wygląda w tym kolorowym wyświetaczu. Jak się mają teraz punkty
(piksele) do subpikseli RGB.
Uznałem, że w tym przypadku nie ma sensu pokazywanie takiego rysunku. W wyświetlaczu każda komórka pamięci ma 12 bitów i jednoznacznie odpowiada jednemu pikselowi.
Jak sie odbywa sterowanie jasnościa pikseli?
No przepraszam, ale w tym przypadku odsyłam do artykułu. Wyjaśniam tam zarówno krzywą gamma jak i ustalanie poszczególnych składowych.
Dlaczego korzystamy z
takiego "dziwnego" trybu 12bpp a nie łatwiejszego 8bpp.
Ponieważ daje on większe możliwości (więcej kolorów). Proszę zauważyć, że gdybyśmy mogli ustawić szerokość danych wysyłanych przez nasz SPI na 12 bitów nie byłoby żadnego problemu. Problem wynika jedynie z faktu, że przesyłamy 12 bitowe słowa przez interfejs o sztywnej szerokości 8 bitów. Ponadto tryb 8 bitów wymaga ustawienia palety kolorów (inaczej prawdopodobnie nic nie zobaczymy, podczas prób bez konfiguracji palety wyświetlacz pozostawał ciemny). Tryb 8bpp będzie wykorzystany w części 16.
jak w tych dwóch przypadkach spowodować narysowanie jednej poziomej
lib dla utrudnienia pionowej linii, albo np jednego koloru
Poziomy pasek już rysujemy. Powiem szczerze, że tym zagadnieniem w ramach kursu już nie będziemy się zajmować, ponieważ przypominam, że poznajemy wyświetlacz kolorowy aby poznać kolejne zagadnienie C jakim jest obsługa pamięci zewnętrznej. Rysowanie linii już było, w najbliższej części będziemy obsługiwać wyświetlacz z wykorzystaniem bufora w pamięci naszego zestawu. Tam rysowanie linii odbywa się identycznie jak miało to miejsce w przypadku LCD3310, w przypadku trybu 8bpp będzie trzeba jedynie pamiętać, że teraz współrzędna y nie będzie rozdzielana na adres i przesunięcie w bajcie. Po prostu jedna komórka odpowiada jednemu pikselowi. Tworzenie bufora 12bpp wymagałoby raczej wykorzystania 2 bajtów na każdą komórkę pamięci (dla ułatwienia obliczeń). W przypadku naszej płytki zajmie to ponad 1/3 dostępnego ram'u i nie wiem na ile jest sensowne, jednak idea jest ta sama, teraz jednak wskaźnik będzie wskazywał na liczbę 16bit, kompilator zadba aby przesunięcie o 1 pozycję spowodowało przesunięcie o 2 bajty.

slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Post autor: slawek55 » 11 mar 2007, 15:42

No przepraszam, ale w tym przypadku odsyłam do artykułu. Wyjaśniam tam zarówno krzywą gamma jak i ustalanie poszczególnych składowych
Przeczytałem ponownie i czy tam nie ma opisanej tylko idei.

Ja mam na myśli coś takiego: W LCD3310 jeden bit odpowiadał jednemu pikselowi, a tu jest inaczej. Czy tak? Np rysunek 69, co oznacza stwierdzenie "indeks piksela, którego dotyczą dane"?


A tak bardzo prosto pytając: Jeśłi mam dany piksel to co mam podać do LCD aby ostawić jakiś kolor, i czy w ogóle istnieje coś takiego jak pozycja kursora? CZy będziemy wykorzystywać polecenia typu GotoXY?

W EdW nie widziałem też opisu polecenia CASET i PASET?

Jeszcze coś mnie zainteresowało. Po co sie ustawia bit B/T w DISCTL. Na co to wpływa?

Awatar użytkownika
gwozdex
Użytkownik
Posty: 879
Rejestracja: 24 lut 2006, 10:04
Lokalizacja: Czechowice-Dziedzice
Kontakt:

Post autor: gwozdex » 14 mar 2007, 18:24

Witam!
Mam takie-"orientujące mnie"- pytanie:"Czy można oprogramować ten wyświetlacz w BASCOM? Czytałem gdzieś, że nowa wersja tj. BASCOM 1.11.8.3 posiada nowa bibliotekę do obsługi takich wyświetlaczy (tj. "komórkowych") w których zastosowano sterowniki PCF8533 lub sterowniki EPSON. Dodatkowo wątpliwości mogą budzić odmienne opisy wyprowadzeń. Ja osobiście stawialym na to że można to zrobic. Pozdrawiam.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 16 mar 2007, 12:08

slawek55 pisze:Ja mam na myśli coś takiego: W LCD3310 jeden bit odpowiadał jednemu pikselowi, a tu jest inaczej. Czy tak? Np rysunek 69, co oznacza stwierdzenie "indeks piksela, którego dotyczą dane"?
W wyświetlaczu z 3510i 12 bitów odpowiada jednemu pikselowi. Indeks piksela - chodzi o to, że gdy określimy już okno zapisu, mamy indeks zerowy w górnym lewym rogu okna, pierwszy o jeden piksel na prawo... Oczywiście to przy założeniu domyślnych ustawień. Bo konfiguracja gdzie jest piksel 0 i jak zmieniają się ich indeksy jest praktycznie dowolna.
slawek55 pisze:A tak bardzo prosto pytając: Jeśłi mam dany piksel to co mam podać do LCD aby ostawić jakiś kolor, i czy w ogóle istnieje coś takiego jak pozycja kursora? CZy będziemy wykorzystywać polecenia typu GotoXY?
Istnieje coś takiego jak kursor, jednak nie mamy możliwości jego ustawienia. Jedyną możliwością jest takie skonfigurowanie okna aby jego początek znalazł się na interesującym nas pikselu. Instrukcji GoToXY nie będę w ramach kursu tworzył.
slawek55 pisze:W EdW nie widziałem też opisu polecenia CASET i PASET?
Polecenia CASET i PASET zostały celowo omówione we fragmencie dotyczącym dostępu do pamięci wyświetlacza.
slawek55 pisze:Jeszcze coś mnie zainteresowało. Po co sie ustawia bit B/T w DISCTL. Na co to wpływa?
Teoretycznie określa (co opisuję przy omówieniu stosownej komendy) gdzie jest sterownik - na górze czy na dole wyświetlacza. Określa to orientację pola odczytowego wyświetlacza. Umieszczenie sterownika na dole spowodowałoby lustrzane odbicie pikseli wyświetlacza. W praktyce manual sterownika zaleca konfigurację gdy sterownik znajduje się na górze. Odwrócić ekran można innymi instrukcjami (MADCTL).
gwozdex pisze:czy można oprogramować ten wyświetlacz w BASCOM?
Można - Zgodnie z zasadą - potrafię programować w każdym języku - pokażcie mi tylko jak się tutaj robi wstawki asemblera :P
gwozdex pisze:BASCOM 1.11.8.3 posiada nowa bibliotekę do obsługi takich wyświetlaczy (tj. "komórkowych") w których zastosowano sterowniki PCF8533 lub sterowniki EPSON.
Z tego co się orientowałem dotyczy to wyświetlaczy czarno-białych. Nawet jeśli byłaby możliwość programowania wyświetlaczy kolorowych, trzeba pamiętać, że w wersji demo, praktycznie nie bardzo nawet zmieścimy jeden obrazek w pamięci kontrolera. I szczerze mówiąc, BASCOM'a używam do bardzo specyficznych aplikacji i sięgam do niego nie częściej jak dwa razy do roku. Nie śledzę wszystkich pojawiających się w nim zmian, więc pytania te należałoby raczej skierować do użytkownika ZbeeGin.

ZbeeGin

Post autor: ZbeeGin » 16 mar 2007, 18:32

Skoro zostałem wywołany, to: Tak, są takie biblioteki które należy dołączyć do programu dyrektywą $LIB.
Aktualnie są dwie: LCD-EPSON.LBX oraz LCD-PCF8833.LBX. Po skonfigurowaniu wyświetlacza przez instrukcję CONFIG GRAPHLCD w nowej składni:

Config Graphlcd = Color, Controlport = PortC, Cs = 1, Rs = 0, Scl = 3, Sda = 2

Można już używać poleceń: LINE, CIRCLE, BOX.

Niestety więcej nie mogę powiedzieć na ten temat, bo nie zgłębiałem całości tematu. :sad:

ODPOWIEDZ