JedlaTech

Elektronika, programování AVR a jedna bílá Felicie

 

Ovládání displeje Nokia3310 procesory AVR

Pro různé konstrukce s jednoduchými malými mikroprocesory je zapotřebí zobrazovacích jednotek. Pro nejjednodušší a aplikace si vystačíme se sedmisegmentovými LED displeji ale výhodnější je použití LCD displeje s malou spotřebou a většími možnostvmi zobrazovaných informací. Běžně dostupené jsou znakové LCD displeje 2x16, 4x20, grafické... se standardními řadiči HD44780. Jsou však poměrně drahé a grafické typy velmi velké vzhledem k poměrně malému rozlišení (128x64).

Zajímavým řešením může být displej z mobilního telefonu Nokia 3310, který má příjemné rozměry, rozlišení 84x48 (tj. při velikosti znaků 5x8 je možno zapsat 6 řádků po 14 znacích) a kompletní mobilní telefon se dá sehnat okolo 100Kč.

Popis připojení displeje

Po rozebrání mobilu získáme displej s řadičem zalitý v plastu spolu s maticí klávesnice.

Připojení displeje k elektronice mobilního telefonu je provedeno přes pružné kontakty. Displej je na tyto kontakty přitlačován plastovými západkami a šesti malými torx šrouby, které drží pohromadě komplet displej-elektronika-plastové pouzdro.

Popis jednotlivých pinů:

 

Pro připojení displeje je tedy potřeba vyřešit propojení s průžnými kontakty, nabízí se 3 přístupy:

 

Mé řešení tedy bylo napájení kontaktů k kabelu s konektorem PSL10. Propojení vodičů mezi konektorem a displejem je uvedeno na obrázku, čísla odpovídají číslu žíly plochého vodiče.

Schéma zapojení displeje k procesoru ATmega32:

Na obrázku je uvedeno připojení displeje k SPI rozhraní procesoru. Pro současné připojení ISP programátoru k procesoru je doporučeno použití oddělovacích odporů 1kOhm.

Software - ATmega32

Vykreslování na tento displej se provádí jednoduše komunikací s použitým řadičem (PCD8544) připojeným k rozhraní SPI.

Podrobnosti samotné komunikace zde uvádět nebudu, vše je snadno nastudovatelné z přiložených knihoven a datasheetu. Raději se tedy podíváme na to, jak vypisovat na displej potřebné informace pomocí přiložené knihovny.

Struktura jednoduchého programu pro komunikaci vypadá takto:

  1. Inicializace SPI rozhraní. Jedná se o nastavení registru SPCR, displej je schopen pracovat s frekvencemi sběrnice 0-4MHz, není tedy potřeba žádné nastavení měnit.

    spi_init();
     
  2. Inicializace a spuštění displeje.
    Sekvence příkazů potřebná pro správnou inicializaci displeje je uvedena v datasheetu řadiče, stačí opět použit nadefinovanou funkci pro inicializaci. Jediný parametr který je potřeba nastavit je kontrast displeje. Zde bych měl jen poznámku že některé displeje které jsem měl k dispozici nedovolovaly změnu kontrastu, při jakémkoliv parametru byl kontrast vždy stejný (naštěstí tak akorát).

    kontrast = 25;
    LCD_init();


    Nyní je displej správně inicializován a připraven k vykreslování.
     
  3. Pro vypisování textu/kreslení obrázků na displej bylo vytvořeno několik základních funkcí:
    • LCD_clear();        - smaže aktuální obrazovku
    • LCD_kresli();    - vykreslí nadefinovaný obrázek v rozlišení 84x48
    • LCD_pis("text %d", promenna);    - vypíše libovolný text. Zalamuje řádky a umožňuje přímé vkládání proměnných
    • LCD_pis_velke(radek, sloupec, "cislo %d", promenna)   - vypisuje velké číslice. Je potřeba zadat řádek (0-5) a sloupec (0-83)

Tvorba obrázků

Pro vytváření dat pro obrázky v rozlišení 84x48 je možno použít jednoduchý prográmek FastLCD (nebo nějaký jiný který dokáže generovat data v požadovaném formátu). Převod jednoduchého obrázku autíčka je znázorněn ve foto návodu. Jak bude dále možno vidět, displej svým rozlišením není vhodný na kreslení nějakých extra pěkných obrázků, na jednoduché ikonky však postačí.

Demontrace možností displeje

Ukázkový program pro vykreslení těchto obrazek je dostupný níže.

Download

Datasheet řadiče PCD8544

Samotné knihovny pro ovládání displeje

Kompletní vzorový projekt v AVRStudio4

Program pro převod obrázků