Znakové LCD displeje

Displeje se u nás objevili koncem 80 let. Tehdy se považovali za zázrak techniky. Dnes jsou LCD zobrazovací displeje všude okolo nás. Setkáváme se s nimi při koupi jízdenky na autobus nebo vlak, v telefonních automatech, na parkovištích ve faxech atd.
Každý displej má v sobě speciální integrovaný obvod - řadič, který ovládá celý displej a komunikuje s okolím. Standartem se stal řadíč HD44780 od firmy HITACHI. Všichni výrobci používají HD44780 nebo jeho ekvivalent. Proto je jedno od jakého výrobce displej je. Pro dosažení plné kompatibiliti displeje, je zapojení přívodního konektoru stejné. To zjednodušuje použití displejů v praxi.
Displej se vyrábí v několika variantách 8x2, 16x1, 16x2, 16x4, 20x2, 20x4, 24x2, 24x4, 40x2, 40x4, které se liší počtem sloupců a řádků. Moduly se vyrábí s podsvícením LED nebo výbojkou.

Displeje LCD prodávají firmy GMe, Shop HW, Elatec, Powertip a Koala kde také najdete přehled displejů a datasheety. Firma GMe prodává displeje označené např. MC1602E-SYL (2x16 znaků) od výrobce Everbouquet.

MC1602E-SYL

MC1602E-SYL/H

MC1602E-SYL MC1602E-SYL/H
MC1602E-SYL MC1602E-SYL/H

čára

Zapojení vývodů

V tabulce je zobrazeno zapojení vývodů, název signálu a popis. Většinou se vyskytuje standartní zapojení vývodů, ale již jsem se setkal u displeje LCD 4x40 (neznámý výrobce) s jiným zapojením.

vývod
standard
vývod
LCD4x40
název popis
1 13 Vss napájení GND
2 14 Vdd napájení +5V
3 12 Vo kontrast 0V .. 5V (typ. 0,8V)
4 11 RS Register Select (0=instrukce, 1=data)
5 10 R/W Read / Write (0=zápis, 1=čtení)
6 9 E Enable (1, hrana z 1 -> do 0)
7 8 DB0 Data Bus 0
8 7 DB1 Data Bus 1
9 6 DB2 Data Bus 2
10 5 DB3 Data Bus 3
11 4 DB4 Data Bus 4
12 3 DB5 Data Bus 5
13 2 DB6 Data Bus 6
14 1 DB7 Data Bus 7
15  - A podsvícení - anoda LED (jen některé typy)
16  - K podsvícení - katoda LED (jen některé typy)
 - 15 E2 Enable (1, hrana z 1 -> do 0)
 - 16 nc nezapojen

DB0 - DB3 (Data Bus), nižší bity 3-stavové sběrnice. Nevyužito při 4-bitovém ovládání.
DB4 - DB7 (Data Bus), vyšší bity 3-stavové sběrnice


Komunikace s modulem

Pro komunikaci s displejem je potřeba minimálně 6 vodičů až maximálně 11 vodičů a napájení +5V. Před zapojením s procesorem si musíme zvolit datovou komunikaci. Komunikace s modulem muže být po 8-bitové sběrnici (DB0-DB7) nebo 4-bitové sběrnici (DB4-DB7).

Po zapnutí procesoru a displeje je nutné provést základní inicializaci displeje. Nastaví se počet bitů datové komunikace (8 nebo 4 bity), směr psaní znaků, posun řádku, pozice kurzoru a blikání kurzoru. Po této inicializaci je displej připraven na komunikaci.

  • 8-bitová sběrnice (DB0-DB7). Pošle se 8 bitů a zapíšou se Enablem
  • 4-bitová sběrnice (DB4-DB7). Tuto komunikaci je vhodné použít při nedostatku vývodů na procesoru. Komunikace bude 2x pomalejší, protože se data posílají nadvakrát. Nejdříve se pošlou vyšší 4 bity a zapíšou se Enablem a pak nižší 4 bity a zapíšou se Enablem. Nižší 4 bity (DB0-DB3) na displeji je potřeba spojit se zemí. Zapojení displeje s procesorem je na obrázku.

  • Pokud potřebujete vyzkoušet komunikaci LCD displeje, zapojte procesor podle následujícího schématu a stáhněte si program test LCD. Displej můžete použít 1x16, 2x8, 2x16 až 4x40 znaků. Program Vám vyzkouší v displeji i pamět CGRAM pro uložení vlastních znaků. Po zapnutí se zobrazí na displeji Test LCD 1.0-2002 po 2 sekundách Line 1 Line 2 po dalších 2 sekundách CZ znaky áíěščřžý. Pokud se nezobrazí české znaky je problém s pamětí CGRAM. Program je určen pro procesor PIC16F84. Při programování nastavte XT krystal a WatchDog off.

    čára

    Zobrazení znaků

    Každý znak je zobrazován jako matice 5x8 bodů. Definice jednotlivých znaků je uložena napevno ve vnitřní paměti ROM code: A00. Dále je možno zobrazit kurzor, nastavit blikání kurzoru, definovat posouvání zobrazených znaků, smazat displej, zobrazovat na konkrétní pozici apod.

    Názorně si ukážeme zobrazení znaků na displeji 2x16 znaků. Data, která se mají zobrazit jsou uložena v paměti DDRAM (Display Data Random Acces Memory). Každý zobrazovaný znak má svojí adresu. Ve skutečnosti je adresa posazena o 80h. Hodnota pro 1 řádek 1znak je 80h pro 2 řádek 1 znak je C0h.

    V tabulce jsou uvedeny pozice, na kterých jsou uloženy znaky pro zobrazení na řádcích.

    Jednořádkové displeje

    Dvouřádkové displeje

    Čtyřřádkové displeje

    počet
    znaků

    pozice v DDRAM
    1 x 16
    1.řádek 00h..0Fh
    1 x 24
    1.řádek 00h..17h

    počet
    znaků

    pozice v DDRAM
    2 x 8
    1.řádek 00h..07h
    2.řádek 40h..47h
    2 x 16
    1.řádek 00h..0Fh
    2.řádek 40h..4Fh
    2 x 20
    1.řádek 00h..13h
    2.řádek 40h..53h
    2 x 24
    1.řádek 00h..17h
    2.řádek 40h..57h
    2 x 40
    1.řádek 00h..27h
    2.řádek 40h..67h

    počet
    znaků

    pozice v DDRAM
    4 x 16
    1.řádek 00h..0Fh
    2.řádek 40h..4Fh
    3.řádek 10h..1Fh
    4.řádek 50h..5Fh
    4 x 20
    1.řádek 00h..13h
    2.řádek 40h..53h
    3.řádek 14h..27h
    4.řádek 54h..67h
    4 x 24
    1.řádek 00h..17h
    2.řádek 40h..57h
    3.řádek 18h..6Fh
    4.řádek 58h..6Fh

    Poznámka: Některé jednořádkové displeje 1x16 znaků se musí inicializovat jako dvouřádkové! Je to zjednodušení a šetření ze strany výrobce, protože jeden řadič LCD displeje umí ovládat 2x8 znaků. Bližší informace najdete v datasheetu každého displeje.

    DDRAM bez posuvu
    pozice LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    adresa DDRAM 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    adresa DDRAM 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

    Pokud je nastaven posun displeje doleva , bude po provedení posunu zobrazeny následující adresy.

    Posun doleva
    pozice LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    adresa DDRAM 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
    adresa DDRAM 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50

    Pokud je nastaven posun displeje doprava , bude po provedení posunu zobrazeny následující adresy.

    Posun doprava
    pozice LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    adresa DDRAM 27 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E
    adresa DDRAM 67 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E

    čára

    Definování uživatelských znaků

    Prvních 8 znaků (znak 0 - 7) je možno nadefinovat uživatelem třeba jako české znaky nebo různé grafické symboly podle vlastního přání. Pro češtinu je osm znaků málo, proto se znaky můžou měnit v generátoru znaků před jejich zobrazením. Tento postup přepisování znaků nám ale přepíše i zobrazený znak (0 - 7) na displeji za nově nadefinovaný. Velikost znaku, které zapisujeme do paměti je 8x8 pixelů, ale zobrazí se jen 5x8 (šířka x výška) nebo 5x10 podle zvoleného nastavení displeje při inicializaci. Pro vytváření vlastních znaků napsal pěkný program Filip Zajíček s názvem LCDChar v.1.3.1.

    čára

    Tabulka instrukcí

    Instrukce Signál Popis čas
    **
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    Smazat displej 0 0 0 0 0 0 0 0 0 1 Smaže displej a nastaví adresu DDRAM na 0. 1.64ms
    Návrat na pozici 0 0 0 0 0 0 0 0 0 1 * Nastaví adresu DDRAM na 0. Vrátí kurzor na pozici 0 a posune displej zpět do původní pozice. Obsah DDRAM zůstane zachován. 1.64ms
    Nastavení módu 0 0 0 0 0 0 0 1 I/D S Nastaví směr pohybu kurzoru, a specifikuje posun displeje. Operace jsou prováděny během zápisu a čtení dat. 40us
    Kontrola displeje zap/vyp 0 0 0 0 0 0 1 D C B Zapne/vypne displej (D), zapne/vypne kurzor (C) a blikání kurzoru (B). 40us
    Posun kurzoru, displeje 0 0 0 0 0 1 S/C R/L * * Pohyb kurzoru a posun displeje bez změny obsahu DDRAM. 40us
    Nastavení funkce 0 0 0 0 1 DL N F * * Délka rozhraní (DL), počet řádek displeje (N) a velikost fontu (F). 40us
    Nastavení adresy CGRAM 0 0 0 1 CGRAM adresa Nastaví adresu CGRAM. Data jsou přenesena po tomto nastavení. 40us
    Nastavení adresy DDRAM 0 0 1 DDRAM adresa Nastaví adresu DDRAM. Data jsou přenesena po tomto nastavení. 40us
    Čtení příznaku Busy Flag a adresy 0 1 BF CGRAM / DDRAM adresa Čte příznak (BF), který indikuje provádění vnitřních operací a čte adresu CGRAM nebo DDRAM (v závislosti na předchozí instrukci). 0us
    Zápis dat do CGRAM nebo DDRAM 1 0 zápis dat Zapíše data do CGRAM nebo DDRAM. 40us
    Čtení dat z CGRAM nebo DDRAM 1 1 čtení dat Přečte data z CGRAM nebo DDRAM. 40us

    Vysvětlivky:
    DDRAM - Display Data RAM. (paměť zobrazovaných znaků)
    CGRAM - Character Generator RAM. (paměť pro uložení vlastního znaku)
    *   - Na hodnotě nezáleží.
    ** - Maximální čas při frekvenci oscilátoru 270KHz.

    Název bitu Popis
    I/D 0 - Snížení 1 - Zvýšení
    S 0 - Není posun displeje 1 - Posun displeje při zápisu dat
    D 0 - Vypnout displej 1 - Zapnout displej
    C 0 - Vypnout kurzor 1 - Zapnout kurzor
    B 0 - Vypnout blikání kurzoru 1 - Zapnout blikání kurzoru
    S/C 0 - Posun kurzoru 1 - Posun displeje
    R/L 0 - Posun doleva 1 - Posun doprava
    DL 0 - 4bitová komunikace 1 - 8bitová komunikace
    N 0 - 1 řádek 1 - 2 řádky
    F 0 - 5x8 bodů 1 - 5x10 bodů
    BF 0 - Operace je ukončena 1 - Operace probíhá

    čára

    Popis instrukcí

    Poznámka:
    Popis instrukcí je přeložen z originální dokumentace obvodu HD44780U od firmy HITACHI.

    čára

    Funkce resetu

    Vnitřní reset se automaticky inicializuje po zapnutí řadiče HD44780U a nastaví se takto:

    1.   Smazání displeje
    2.   Nastavení funkce:
          DL=1 8-bitový interface
          N=0 1-řádkový displej
          F=0 velikost znaku 5x8 bodů
    3.   Kontrola displeje zap/vyp:
          D=0 Displej: vyp
          C=0 Kursor: vyp
          B=0 Blikání kurzoru: vyp
    4.   Nastavení modu:
          I/D=1 zvýšení
          S=0 posun displeje: vyp

    Po zapnutí napájení a provedení vnitřního resetu se musí provést inicializace displeje. Nastaví se 8-bitová nebo 4-bitová komunikace a základní uživatelské nastavení. V následující tabulce je vypsána inicializace po jednotlivých instrukcích.

    Inicializace pro 8-bitovou komunikaci

    Zapnutí napájení (Power On)

    poznámka

    čekej minimálně 15 ms po náběhu Vcc nad 4,5V  
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 - - - -
    nelze testovat BF,
    nastaven 8-bitový interface

    čekej minimálně 4,1ms

     
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 - - - -
    nelze testovat BF,
    nastaven 8-bitový interface

    čekej minimálně 100µs

     
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 - - - -
    nelze testovat BF,
    nastaven 8-bitový interface
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 N(1) F(0) - -
    0 0 0 0 0 0 1 0 0 0
    0 0 0 0 0 0 0 0 0 1
    0 0 0 0 0 0 0 1 I/D(1) S(0)
    0 0 0 0 0 0 1 1 0 0
    čekej na BF=0 nebo 40us,
    2-řádky, font znaku 5x8
    Displej, kurzor, blikání vyp
    smazat displej
    posun kursoru do prava
    zapnout displej

    konec inicializace

     

    Inicializace pro 4-bitovou komunikaci

    Zapnutí napájení (Power On)

    poznámka

    čekej minimálně 15 ms po náběhu Vcc nad 4,5V  
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 - - - -
    nelze testovat BF,
    nastaven 8-bitový interface

    čekej minimálně 4,1ms

     
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 - - - -
    nelze testovat BF,
    nastaven 8-bitový interface

    čekej minimálně 100µs

     
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 1 - - - -
    nelze testovat BF,
    nastaven 8-bitový interface
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 0 - - - -
    čekej na BF=0 nebo 40us,
    nastaven 4-bitový interface
    RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    0 0 0 0 1 0        
    0 0 N(1) F(0) - -        
    0 0 0 0 0 0        
    0 0 1 0 0 0        
    0 0 0 0 0 0        
    0 0 0 0 0 1        
    0 0 0 0 0 0        
    0 0 0 1 I/D(1) S(0)        
    0 0 0 0 0 0        
    0 0 1 1 0 0        

    2-řádky, font znaku 5x8

    Displej, kurzor, blikání vyp

    smazat displej

    posun kursoru do prava

    zapnout displej

    konec inicializace

     

    čára

    Návrat domů

    Poslední změna: 25.2.2007
    Copyright DOVEDA BOYS © 1998 - 2012