LCD displej

8. 10. 2000

Displeje se u nás objevili koncem 80 let. Tehdy se považovali za zázrak techniky. Dnes jsou LCD 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 kterého výrobce displej je. Pro dosažení plné kompatibility displeje, je zapojení přívodního konektoru stejné. To zjednodušuje použití displeje v praxi. Displeje se vyrábí v několika variantách a liší se počtem znaků a řádků 8x2, 16x1, 16x2, 16x4, 20x2, 20x4, 24x2, 24x4, 40x2, 40x4. Pro použití ve tmě se vyrábí s LED podsvícením nejčastěji barva žluto-zelená.

Displeje LCD prodáva firma 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 standardní zapojení vývodů, název signálu a popis. Většinou se vyskytuje standardní zapojení vývodů, ale již jsem se setkal s jiným zapojením (prohozený napájení pin 1 a 2).

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

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

Pro komunikaci s displejem je potřeba minimálně 6 až 11 vodičů a 2 vodiče napájení +5V. Před připojením k procesoru si zvolíme datovou sběrnici 8-bitovou nebo 4-bitovou.

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

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 zobrazení znaků.

Pro rychlé vyzkoušení komunikace procesoru a LCD displeje, zapojte procesor podle následujícího obrázku a stáhněte zkušební program Test LCD v.2. Displej můžete použít 1x16, 2x8, 2x16 až 4x40 znaků. Program vyzkouší v displeji i 8 pozic CGRAM paměti pro uložení vlastních znaků. Po zapnutí napájení se zobrazí na displeji Test LCD, 2.0 2010 po 2 sekundách Line 1, Line 2 po 2 sekundách CZ znaky, áíěščřžý. Test se opakuje stále dokola. Pokud se nezobrazí české znaky je problém s pamětí CGRAM. Program je určen pro procesor PIC16F84 a PIC16F628. Při programování zkontrolujte nastavení XT krystal a WatchDog off.

čára

Zobrazení znaků

Ukážeme si zobrazení znaku na displeji 2x16 znaků. Každý znak, který je zobrazen na displeji LCD má svojí adresu v paměti DDRAM (Display Data Random Acces Memory) od adresy 00h - 7Fh. Podle tabulky instrukcí zjistíme (nastavení adresy DDRAM), že bit7=1 proto adresa bude o 80h vyšší. Adresa pro 1 řádek 1znak je 80h (00h+80h) pro 2 řádek 1 znak je C0h (40h+80h).

Na displeji je možné zobrazit znak na konkrétním místě, zobrazit kurzor, nastavit blikání kurzoru, definovat posouvání zobrazených znaků, smazat displej apod.

V tabulce jsou uvedeny adresy DDRAM, na kterých jsou uloženy znaky pro zobrazení na jednotlivých řá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


Znaková sada v paměti ROM - kodování A00

Každý znak je zobrazen jako matice 5x8 bodů. Definice jednotlivých znaků je uložena napevno ve vnitřní paměti ROM. Podle tabulky najdeme znak velké A = 41h a číslo 0 = 30h.

Tabulka zaků v paměti ROM

Poznámka:
Prázdné místo v prvním sloupci 00h - 0Fh odpovídá Generátoru Znaků RAM (CGRAM). Na toto místo se definuje 8 uživatelských znaků (číslo znaku 0 - 7). Čísla znaků 16 - 31 a 128 - 159 nejsou dostupné.

čá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 a 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í

  • Smazat Displej (Clear Display)

  • Smaže displej. Zapíše kód 20H (kód 20H je prázdný znak) do všech adres DDRAM. Potom nastavý DDRAM  adresu 0 adresového čítače a návrat displej k jeho originálnímu stavu, jestliže byl posunutý. Jinými slovy, displej zmizí a kurzor nebo blikání směřuje displej doleva (v 1řádce 2řádkového displeje). To také nastaví I / D na 1 (zvýšení) v nastavovacím módu. S se v módu nastavení nezmění.
  • Vrátit se na začátek (Return Home)

  • Vrátí se na začátek. Nastaví adresu DDRAM na 0 a vrátí displej do jeho originálnímu stavu jestliže byl posunut. Nezmění se obsah DDRAM. Kurzor nebo blikání směřuje displej doleva (v 1řádce 2řádkového displeje).
  • Vlož nastavení módu (Entry Mode Set)

  • I / D: Zvětší (I / D = 1) nebo zmenší (I / D = 0) adresu DDRAM o 1, když kód znaku je zapsán do nebo čten z DDRAM. Kurzor nebo blikající pohyb doprava zvětšen o 1 a doleva zmenšený o 1. Stejné platí při zápisu a čtení z CGRAM.
    S: Posune celý displej o jeden znak doprava (I / D = 0) nebo doleva (I / D = 1), když S je 1. Displej se neposune jestliže S je 0. Jestliže S je 1, bude se zdát jako by se kurzor nepohyboval ale displej pracuje. Displej se neposune, když čte z DDRAM. Také psaní do nebo čtení z vnější CGRAM displej neposune.
  • Displej zap / vyp (Display on / off control)

  • D: Displej zapnut když D je 1 a vypnut když D je 0. Když je vypnut, data displeje zůstanou v DDRAM, ale můžou být zobrazena okamžitě tím, že D je 1.
    C: Kurzor je zobrazen když C je 1 a nezobrazen když C je 0. Dokonce jestliže kurzor zmizí, funkce I / D nebo jiné specifikace nebudou se měnit během zápisu dat displeje. Kurzor je zobrazen pomocí 5 teček v 8-mé řádce pro 5x8 bodů a v 11-té řádce pro 5x10 bodů.
    B: Znak ukázaný kurzorem bliká když B je 1. Blikání je zobrazováno jako přepíná mezi celým prázdným místem a zobrazovaným znakem rychlostí 409,6 ms, když fcp nebo fosc je 250 kHz. Kurzor a blikání může být zobrazováno současně. (Frekvence blikání podle fosc nebo podobný z fcp. Například, když fcp je 270 kHz, 409,6 x 250 / 270  = 379,2 ms.)
  • Posun kurzoru nebo displeje (Cursor or display shift)

  • Posun kurzoru nebo displeje změní místo kurzoru nebo displeje doprava nebo doleva bez psaní nebo čtení zobrazovaných dat. Tato funkce opravuje nebo hledá na displeji. Na 2řádek se kurzor přemístí z 1řádky, když bude přes 40-té číslo 1 řady. Poznamenávám, že první a druhá řádka displeje se posouvá zároveň. Když zobrazovaná data jsou posouvána opakovaně každá řádka se pohybuje jenom vodorovně. Z druhé řádky se neposune do první řádky. Čítač adres (AC) nebude měnit obsah jestliže se jenom vykonaná posun displeje.
  • Nastavení funkce (Function set)

  • DL: Nastaví délku datového rozhraní. Data jsou poslaná nebo přijatá 8-bitově (DB7 - DB0) když DL je 1, a 4-bitově (DB7 k DB4) když DL 0. Při vybrání 4-bitové délky, data musí být poslána nebo přijata dvakrát.
    N: Nastaví počet řádků displeje.
    F: Nastaví velikost znaku.

    Poznámka: Provést na začátku programu předtím než vykoná nějakou instrukci (s vyjímkou čtení busy flag a instrukce adres). Od tohoto okamžiku nastavení funkce instrukcí nemůže být vykonána změna délky datového rozhraní.
  • Nastavení adresy CGRAM (Set CGRAM address)

  • Nastavením adresy CGRAM dá CGRAM binární adresu AAAAAA do adresového čítače. Data jsou pak zapsána nebo čtena od MPU pro CGRAM.
  • Nastavení adresy DDRAM (Set DDRAM address)

  • Nastavením adresy DDRAM dá DDRAM binární adresu AAAAAAA do adresového čítače. Data jsou pak zapsána nebo čtena od MPU pro DDRAM. Nicméně, když N je 0 (1-řádkový displej), AAAAAAA může být 00H - 4FH. Když N je 1 (2-řádkový displej ), AAAAAAA může být 00H - 27H pro 1 řádek a 40H - 67H pro 2 řádek.
  • Číst busy flag a adresy (Read busy flag & address)

  • Čtení busy flag a čtení adresy busy flag (BF) ukazuje, že systém vnitřně pracuje na předchozí přijaté instrukci. Jestliže BF je 1, vnitřní operace je v běhu. Příští instrukce nebude přijata do okamžiku než BF je 0. Kontrolovat BF stav před příštím zápisem operace. U stejný čas, hodnota adresový čítač v binární AAAAAAA je čten ven. Tento adresový čítač je použitý u obou CG a DDRAM adresy a jeho hodnota je předurčená předchozí instrukcí. Adresový obsah je stejný pokud jde o instrukce nastavení adresy CGRAM a nastavení adresy DDRAM.
  • Zapiš data do CG nebo DDRAM (Write data to CG or DDRAM)

  • Zapisuje data do DDRAM nebo CGRAM.
  • Čti data z CG nebo DDRAM (Read data from CG or DDRAM)

  • Čte data z CGRAM nebo DDRAM.

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

čára

Funkce reset

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

Definování uživatelských znaků

Prvních 8 znaků (znak 0 - 7) je možné nadefinovat podle vlastní potřeby, třeba jako grafické symboly nebo české znaky. Pro české znaky je 8 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ů, zobrazí se jen 5x8 (sloupce x řádky) nebo 5x10 podle zvoleného nastavení displeje při inicializaci.
Pro rychlé vytvoření vlastních znaků napsal jednoduchý program Filip Zajíček s názvem LCDChar v.1.3.1.

Tabulka českých znaků

Znaky se definují v matici 5x8 bodů (sloupce x řádky). Českých znaků je daleko víc, než se dá uložit do paměti displeje CGRAM. Musíme si tedy vybrat 8 nejvíce používaných znaků a zbytek přepisovat před zobrazením na displeji.
Pozor ! Pokud je již znak 0-7 zobrazen na displeji, tak se po přepsání v paměti CGRAM změní i na displeji !

	org	0x2100		; prednastaveni dat v pameti EEPROM

	de	0x02, 0x04, 0x1E, 0x01, 0x0F, 0x11, 0x0F, 0x00	; znak0 = á
	de	0x02, 0x04, 0x0C, 0x04, 0x04, 0x04, 0x0E, 0x00	; znak1 = í
	de	0x0A, 0x04, 0x0E, 0x11, 0x1F, 0x10, 0x0E, 0x00	; znak2 = ě
	de	0x0A, 0x04, 0x0E, 0x10, 0x0E, 0x01, 0x1E, 0x00	; znak3 = š
	de	0x0A, 0x04, 0x0E, 0x10, 0x10, 0x11, 0x0E, 0x00	; znak4 = č
	de	0x0A, 0x04, 0x16, 0x19, 0x10, 0x10, 0x10, 0x00	; znak5 = ř
	de	0x0A, 0x04, 0x1F, 0x02, 0x04, 0x08, 0x1F, 0x00	; znak6 = ž
	de	0x02, 0x04, 0x11, 0x11, 0x0F, 0x01, 0x0E, 0x00	; znak7 = ý

Bit = Hex   Bit = Hex
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 0   02 0 0 0 0 0 0 1 0   02
0 0 0 0 0 1 0 0 04 0 0 0 0 0 1 0 0 04
0 0 0 1 1 1 1 0 1E 0 0 0 0 1 1 0 0 0C
0 0 0 0 0 0 0 1 01 0 0 0 0 0 1 0 0 04
0 0 0 0 1 1 1 1 0F 0 0 0 0 0 1 0 0 04
0 0 0 1 0 0 0 1 11 0 0 0 0 0 1 0 0 04
0 0 0 0 1 1 1 1 0F 0 0 0 0 1 1 1 0 0E
0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00
Bit = Hex   Bit = Hex
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 1 0 1 0   0A 0 0 0 0 1 0 1 0   0A
0 0 0 0 0 1 0 0 04 0 0 0 0 0 1 0 0 04
0 0 0 0 1 1 1 0 0E 0 0 0 0 1 1 1 0 0E
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 0 10
0 0 0 1 1 1 1 1 1F 0 0 0 0 1 1 1 0 0E
0 0 0 1 0 0 0 0 10 0 0 0 0 0 0 0 1 01
0 0 0 0 1 1 1 0 0E 0 0 0 1 1 1 1 0 1E
0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00
Bit = Hex   Bit = Hex
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 1 0 1 0   0A 0 0 0 0 1 0 1 0   0A
0 0 0 0 0 1 0 0 04 0 0 0 0 0 1 0 0 04
0 0 0 0 1 1 1 0 0E 0 0 0 1 0 1 1 0 16
0 0 0 1 0 0 0 0 10 0 0 0 1 1 0 0 1 19
0 0 0 1 0 0 0 0 10 0 0 0 1 0 0 0 0 10
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 0 10
0 0 0 0 1 1 1 0 0E 0 0 0 1 0 0 0 0 10
0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00
Bit = Hex   Bit = Hex
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 1 0 1 0   0A 0 0 0 0 0 0 1 0   02
0 0 0 0 0 1 0 0 04 0 0 0 0 0 1 0 0 04
0 0 0 1 1 1 1 1 1F 0 0 0 1 0 0 0 1 11
0 0 0 0 0 0 1 0 02 0 0 0 1 0 0 0 1 11
0 0 0 0 0 1 0 0 04 0 0 0 0 1 1 1 1 1F
0 0 0 0 1 0 0 0 08 0 0 0 0 0 0 0 1 01
0 0 0 1 1 1 1 1 1F 0 0 0 0 1 1 1 0 0E
0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00
Bit = Hex   Bit = Hex
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 0   02 0 0 0 0 0 0 1 0   02
0 0 0 0 0 1 0 0 04 0 0 0 0 0 1 0 0 04
0 0 0 0 1 1 1 0 0E 0 0 0 0 1 1 1 0 0E
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 1 11
0 0 0 1 0 0 0 1 11 0 0 0 1 1 1 1 1 1F
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 0 10
0 0 0 0 1 1 1 0 0E 0 0 0 0 1 1 1 0 0E
0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00
Bit = Hex   Bit = Hex
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 0 1 1 0   06 0 0 0 0 0 0 1 0   02
0 0 0 0 0 1 1 0 06 0 0 0 0 0 1 0 0 04
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 1 11
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 1 11
0 0 0 1 0 0 0 1 11 0 0 0 1 0 0 0 1 11
0 0 0 1 0 0 1 1 13 0 0 0 1 0 0 1 1 13
0 0 0 0 1 1 0 1 0D 0 0 0 0 1 1 0 1 0D
0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00