Ovládání grafického LCD z telefonu

   Displej má označení HP97502QC-DYPO, ale na internetu jsem našel jen popis nejspíš stejného displeje s označením LPH7653. LCD pracuje s řadičem PCF8558. Displej jsem získal ze staršího bezdrátového telefonu od Philipsu, ale typ už nevím. Některé zahraniční firmy ho nabízejí jako náhradní díl za v přepočtu asi 200KČ.
   Dipsplej má rozlišení 97x35 bodů a je čistě grafický - nemá vlastní znakovou sadu. Výhodou tohoto displeje je, že je řízen sběrnicí I2C, takže postačí 2 vodiče. Pracuje s napájením 3V a ještě potřebuje záporných alespoň 5V. Díky nízkému odběru ho lze přizpůsobit 5V logice pomocí odporového děliče. Má i LED podsvětlění.
   Kontrast displeje není sice nijak uchvacující, ale postačuje. Rovněž odezva vlastního LCD je docela pomalá. Lze ho použít jako grafický nebo po vytvoření znakové sady jako znakový displej 4x16 znaků se standardním fontem 5x7 bodů. Znakovou sadu lze uložit třeba do sériové EEPROM 24Cxx připojené na stejnou sběrnici jako LCD.


Číslování a význam vývodů

   Vývody na pásku mají rozteč 1,27mm a číslování je naznačeno na obrázku.


Vývod Název Funkce
1 LED- GND pro podsvětlení
2 LED+ Napájení LED +5V 20mA
3 Vee Záporné napětí -6 až -8V - řídí kontrast (při -6V max 0,1mA)
4 Vcc napájení +3V max 0,1mA
5 GND GND displeje
6 SCL hodiny sběrnice I2C
7 SDA data sběrnice I2C

Komunikace s displejem

   Jak už jsem psal, dipslej komunikuje po I2C sběrnici. Do řadiče LCD lze pouze zapisovat. Způsob komunikace naznačuje obrázek.


   Nejprve se vyšle start podmínka. První vyslaný byte je kód řadiče (7A hexadecimálně). Druhý byte nastavuje funkci řadiče a volí řádek displeje. Třetí byte určuje sloupec displeje. Následuje 1 až 505 (klidně i víc - zapisuje se znovu od začátku) bytů obrazových dat. Nakonec se ještě musí vyslat stop podmínka. Stop podmínka může být vyslána po libovolném počtu bytů - třeba hned po nastavovacím bytu. Každý datový byte odpovídá svislé osmici bodů. Bit LSB je nahoře. Celý displej je rozdělěn na 5 svislých osmic bodů a 97 sloupců. Na pátou "osmici" zbývají jen 3 body. V následujících tabulkách je uveden význam 2 ovládacích bytů.

Nastavovací byty
Byte DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Význam
Příkaz 0 E D PD V Y2 Y1 Y0 Nastavuje řádek displeje a způsob adresování
Adresa v X 0 adresa Nastavuje sloupec 0 - 100

Adresy řádků
Y2 Y1 Y0 řádek
0 0 0 1
0 0 1 2
0 1 0 3
0 1 1 4
1 0 0 5
Ovládací bity
E D Funkce
0 0 smaže obsah displeje
0 1 neguje obsah displeje
1 0 rozsvítí všechny body
1 1 "odneguje" obsah displeje
Nastavovací bity
PD 0 - normální režim
1 - úsporný režim (vypne LCD)
V 0 - horizontální adresování
1 - vertikální adresování

   Bit PD slouží k uvedení displeje do úsporného režimu (displej se vypne). Bit V určuje způsob adresování. Horizontální adresování znamená, že při zapisování více datových bytů se automaticky zvyšuje hodnota sloupce X. Po naplnění řádku se začíná zapisovat na další opět zleva. Podstatné je, že při zapisování celého displeje najednou se na každý řádek musí poslat 101 bytů, přičemž poslední 4 nejsou zobrazeny. Je to způsobeno uspořádáním RAM řadiče. Vertikální adresování znamená, že po každém zápisu se zvyšuje hodnota řádku Y a po zapsání pěti bytů se zapisuje v následujícím sloupci od hora. Graficky je způsob zápisu nakraslen na obrázcích níže. Význam bitů E a D je uveden v tabulce.
   Bity Y2, Y1 a Y0 nastavují počáteční řádek zápisu. Adresa v X nastavuje počáteční sloupec zápisu v rozsahu 0-100 (vidět je jen 0-96).




Ukázkový program

   Záporné napětí generuje měnič s 555. Zenerka omezuje maximální napětí na -6,2V, což je pro displej akorát. Impulzy lze případně generovat i procesorem. Displej je napájen přes dělič napětím asi 2,6V. S procesorem je propojen přes dělič, který upravuje napěťové úrovně. Bez děliče a v případě, že je ve sloupci víc než 8 černých pixelů, výrazně poklesne kontrast celého sloupce. Program je určen pro krystal 12MHz Funkce je popsána ve zdrojáku.

Zdroják


Poslední aktualizace: 4.11.2004