HMI - ovládání, zobrazování, vizualizace

HMI-AUTOMATIZACE - ŘÍZENÍ - HW GENERÁTOR
Provoz webu zajišťuje:

www.hapesoft.cz

Hardwarový generátor znaků

Charakteristika

Pokud nepoužíváme nějaké sofistikované řešení pro zobrazování hodnot, textů a pod. je potřeba převést binární informaci ze systému na zobrazovač. Zpravidla je v jednoduchých případech binární informace uložena v kódu BCD nebo podle kódu tabulky ASCII. Generátor znaků, znakový dekodér, je technický prostředek, který provádí dekódování informace uložené v binárním tvaru (BCD, ASCII) a převádí ji na grafickou informaci, jejíž podání odpovídá (přibližuje se) běžnému psanému podání znaku. Generátor znaků je možno realizovat jako programový nebo hardwarový podle konkrétní aplikace a použití.

Hardwarový (součástkový) generátor znaků je realizován logickými obvody a funkcemi součástkové základny (integrované obvody) základní logiky nebo i jednočipových mikroprocesorů u maticových generátorů. Význam "hardwarový" je zde v tom smyslu, že generátor používáme jako externí součástku, s pevně danou logikou a neřešíme, jak je vnitřně řešena (logikou propojení hradel, paměťovou funkcí, mikročip). Tvar zobrazení znaků závisí na dispozicích zobrazovače podle počtu, tvaru a rozmístění indikačních bodů i představivosti programátora, konkrétně se může jednat o 7 / 16 segmentový zobrazovač nebo maticový zobrazovač.

Generátor pro 7 segmentové zobrazovače

Funkci hardwarového znakového generátoru si popíšeme na nejjednodušším zobrazovači se 7 segmenty. 7 segmentový zobrazovač s rozmístěním znaků je uveden na obrázku 1. Na obrázku je zároveň naznačeno zapojení ochranných odporů pro omezení proudu, nastavení intenzity jasu a směr protékajícího proudu, v tomto případě se jedná o zobrazovač se společnou anodou.

7 seg. zobrazovač,
        rozmístění a označení segmentů, propojení s generátorem znaků
Obrázek 1
7 seg. zobrazovač, rozmístění a označení segmentů, propojení s generátorem znaků.

Hardwarový generátor generuje informaci o tom, které segmenty zobrazovače mají být rozsvíceny, a to podle vstupní binární informace přivedené na vstupy DATA. Tato informace je převedena na informaci o požadovaném svitu segmentů na výstupech a-g a tím řídí svit jednotlivých segmentů zobrazovače podle požadovaného znaku. Pro konkrétní případ je svit segmentu aktivován přizemněním (spojením s nulovým potenciálem) konkrétního výstupu segmentu.

Hardwarový generátor pracuje podle tabulky, která určuje, které segmenty mají být rozsvíceny pro konkrétní znak. Tabulka obsahuje tolik řádků, kolik znaků chceme zobrazovat a pořadí řádku určuje hodnotu kódu znaku. Hodnota "1" bitu/segmentu v tabulce určuje, které segmenty mají být pro konkrétní znak rozsvíceny. Praktický příklad pro znaky 0-9 je uveden v tabulce 1a.

řádekznakbin.
kód
segmentkód
HGFEDCBA
bit
76543210
100000--1111113Fh
210001-----11-06h
320010-1-11-115Bh
430011-1--11114Fh
540100-11--1--64h
540100-11--11-66h
650101-11-11-16Dh
760110-11111-17Dh
760110-11111--7Ch
870111-----11107h
981000-11111117Fh
1091001-11-11116Fh
1091001-11--11167h

Tabulka 1a
Tabulka pro generování znaků 0-9 na 7 segmentovém zobrazovači.

Poznámka
V tabulce jsou zvýrazněny 3 řádky (4, 6, 9), které představují alternativu pro zobrazení znaku, prakticky se použije pouze jeden řádek pro jednu hodnotu.

Samotný počet 7 segmentů dovoluje zobrazení i dalších znaků, které zpravidla rozšiřují použití zobrazovače pro zobrazení hexadecimální soustavy, tedy znaků A-F. Pro tento případ postačí rozšíření předchozí tabulky o další řádky s kódem pro další znaky, tak jak je uvedeno v tabulce 1b.

řádekznakbin.
kód
segmentkód
HGFEDCBA
bit
76543210
11A1010-111-11177h
12b1011-11111--7Ch
13C1100--111--139h
14d1101-1-1111-5Eh
15E1110-1111--179h
16F1111-111---171h

Tabulka 1b
Rozšířená tabulka pro zobrazování znaků A-F na 7 segmentovém zobrazovači.

Pokud je potřeba zobrazovat jiné znaky, je potřeba zvolit jiný dekodér s jinými předdefinovanými znaky nebo si vytvořit dekodér vlastní (postačí malá paměť PROM). Pokud je ale potřeba zobrazovat i předchozí znaky, je nutno rozšířit počet řádků tabulky a zároveň přidat potřebný počet adresových bitů tabulky (kód).

Poznámka
Pokud je potřeba zobrazovat více znaků než z dekadické/hexadecimální soustavy (0-9/A-F), kde postačí BCD/HEX kód, je při větším počtu znaků vhodné použít kódování podle ASCII tabulky.

Upozornění
Na 7 segmentovém zobrazovači nelze relevantně zobrazit ani všechny základní znaky abecedy. V případě požadavku na odpovídající zobrazování více znaků je vhodné použít alespoň 14/16 segmentový zobrazovač nebo raději zobrazovač maticový.

Tabulky neobsahují aktivaci segmentu H, respektive 7 bitu, protože tento je určen pro zobrazení desetinné tečky. Tato však není součástí znaku ale reprezentace hodnoty. Desetinnou tečku je tedy nutno do zobrazení doplnit použitím samostatné programové instrukce.

Řízení

Na datové vstupy přivedeme binární informaci (A = bit 0, ..., D = bit 3), která představuje kód požadovaného znaku a na výstupech a-g obdržíme informaci o tom, které segmenty mají být rozsvíceny.

Na obrázku 1 jsou u dekodéru znázorněny další vstupy a to LT a EN. LT představuje vstup pro TEST LAMP, tedy jsou rozsvíceny všechny segmenty. EN představuje vstup pro aktivaci funkce, pokud je vstup EN aktivní, jsou znaky zobrazovány, pokud je vstup EN neaktivní, není zobrazován žádný znak (žádná segment nesvítí). Tohoto je možno využít pro řízení spotřeby a intenzity svitu segmentu.

Programová obsluha

Při zpracování v programu je potřeba číslo vyjádřené v binárním tvaru převést do tvaru BCD, kdy funkce zajistí to, že na čtveřici bitů je vyjádřena jedna číslovka čísla ve formátu BCD. Tato čtveřice bitů je potom adresou řádku (vstupy A-D dekodéru) na kterém se nachází kód pro aktivaci odpovídajících segmentů.

Generátor pro více segmentové zobrazovače

Hardwarový generátor pro více segmentové zobrazovače (9, 14, 16 segmentů) se od předchozího logicky liší větším počtem použitých segmentů pro zobrazení znaku a od tohoto se odvíjí počet signálů, které je nutno obsluhovat (9, 14, 16). S vyšším počtem segmentů došlo i potřebě upravit jejich značení, segmenty, které byly rozděleny, dostaly rozšířené označení 1 a 2, nové (další doplněné segmenty) pak označení podle dalších písmen abecedy.

Dále je uveden popis pro 16 segmentový zobrazovač. Pro aplikace se v praxi ustálilo zapojení, že vstupnímu signálu d0 odpovídá řídící bit 0, signálu 7 pak řídící bit 7. Výstupy a1 ... m jsou potom propojeny s odpovídajícími segmenty. Řízení desetinné tečky je zde nutno řešit samostatně. 16 segmentový zobrazovač s rozmístěním znaků je uveden na obrázku 2. Na obrázku je zároveň naznačeno zapojení ochranných odporů pro omezení proudu, nastavení intenzity jasu a směr protékajícího proudu, v tomto případě se jedná o zobrazovač se společnou anodou.

16 seg. zobrazovač,
        rozmístění a označení segmentů, propojení s generátorem znaků.
Obrázek 2
16 seg. zobrazovač, rozmístění a označení segmentů, propojení s generátorem znaků.

Vzhledem k tomu, že 16 segmentový zobrazovač poskytuje možnost přiměřeného zobrazení všech běžných znaků, budeme pro obsluhu a řízení znakového generátoru již uvažovat kódování podle ASCII tabulky.

Stejně jako pro 7 segmentové zobrazovače, obsahuje hardwarový generátor tabulku, která bude definuje, které segmenty mají být rozsvíceny pro konkrétní znak. Tabulka obsahuje tolik řádků, kolik znaků chceme zobrazovat a pořadí řádku určuje hodnotu kódu znaku. Hodnota "1" bitu/segmentu v tabulce určuje, které segmenty mají být pro konkrétní znak rozsvíceny. V tabulce 2 je uveden příklad pro 16 segmentový zobrazovač a některé vybrané znaky (pro praktické využití je potřeba nadefinovat všechny potřebné znaky).

řádek znak kód ASCII segment segmentový
kód (hex)
m l k j i h g2 g1 f e d2 d1 c b a2 a1
bit
dec. hex. bin. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 řídící
znaky
0 00 00000000 nezobrazují se X
... ... ... ... X
32 31 1F 00011111 X
33 mezera 32 20 0010000 - - - - - - - - - - - - - - - - 0000
34 ! 33 21 00100001 - - - - - - - - - - - - 1 1 - - 000C 1)
35 " 34 22 00100010 - 1 - - - - - - 1 - - - - - - - 4080 2)
36 # 35 23 00100011 - 1 - - 1 - 1 1 1 1 1 1 - - - - 4BF0
... ... ... ... ... ... ...
49 0 48 30 00110000 1 - - 1 - - - - 1 1 1 1 1 1 1 1 90FF 3)
50 1 49 31 00110001 - - - 1 - - - - - - - - 1 1 - - 100C
51 2 50 32 00110010 1 - - - - - 1 - - - 1 1 - 1 1 1 8237
52 3 51 33 00110011 - - - 1 - - 1 - - - 1 1 1 - 1 1 123B
... ... ... ... ... ... ...
66 A 65 41 01000001 - - - - - - 1 1 1 1 - - 1 1 1 1 03CF
67 B 66 42 01000010 - 1 - - 1 - 1 - - - 1 1 1 1 1 1 4A3F
68 C 67 43 01000011 - - - - - - - - 1 1 1 1 - - 1 1 00F3
69 D 68 44 01000100 - 1 - - 1 - - - - - 1 1 1 1 1 1 483F
... ... ... ... ... ... ...
98 a 97 61 01100001 - 1 - - - - - 1 - 1 1 1 - - - - 4170
99 b 98 62 01100010 - - - - - - 1 1 1 1 1 1 1 - - - 03F8
100 c 99 63 01100011 - - - - - - 1 1 - 1 1 1 - - - - 0370
101 d 100 64 01100100 - - - - - - 1 1 - 1 1 1 1 1 - - 037C
... ... ... ... ...                                 ...
 
Poznámky: 1) k tomuto znaku (!) se rozsvěcuje desetinná tečka, vpravo od znaku
2) možnost variabilního zobrazení na pozici
3) znak 0 (nula) se zobrazuje jako proškrtnutá, aby se odlišila od znaku O (Ó)

Tabulka 2
Příklad generování znaků pro 16 segmentový zobrazovač.

Tabulka neobsahuje aktivaci segmentu DP (desetinné tečky) a tuto je nutno obsluhovat samostatně, v případě číslice jako oddělovač desetinných míst, u znaku "!" (vykřičník) jako součást tohoto znaku.

Řízení

Řízení pro zobrazovač se 16 segmenty je principiálně stejné jako pro zobrazovač 7 segmentový. Na datové vstupy přivedeme binární informaci (d0 = bit 0, ..., d7 = bit 7), která představuje kód požadovaného znaku a na výstupech a1-m obdržíme informaci o tom, které segmenty mají být rozsvíceny.

Na obrázku 2 jsou u dekodéru znázorněny další vstupy a to LT a EN. LT představuje vstup pro TEST LAMP, tedy jsou rozsvíceny všechny segmenty. EN představuje vstup pro aktivaci funkce, pokud je vstup EN aktivní, jsou znaky zobrazovány, pokud je vstup EN neaktivní, není zobrazován žádný znak (žádná segment nesvítí). Tohoto je možno využít pro řízení spotřeby a intenzity svitu segmentu, viz samostatná kapitola.

Programová obsluha

Při zpracování v programu je potřeba znak (číslo) vyjádřené v binárním tvaru převést na stringový (znakový) řetězec, kdy funkce zajistí to, že na osmici bitů je vyjádřen jeden znak v kódu ASCII tabulky. Tyto bity jsou potom adresou řádku (vstupy d0-d7 dekodéru) na kterém se nachází kód pro aktivaci odpovídajících segmentů.

Generátor pro maticové zobrazovače

Hardwarový maticový generátor znaků poskytuje lepší zobrazení znaků na zobrazovači než je zobrazení segmentové. Jednotlivé indikační prvky jsou seskupeny do matice, v nejjednodušším případě do matice 5x7 bodů viz obrázek 3. Oproti segmentovým zobrazovačům obsahuje toto provedení již 35 světelných bodů, které je potřeba řídit v reálném čase. U segmentových zobrazovačů je řízení svitu segmentů principiálně statické, statické řízení 35 světelných bodů je ale signálově (počet vodičů) náročné, proto se používá zapojení v matici, kdy jsou body seskupeny do řádků a sloupců. Pro toto řešení postačí již jen 12 vodičů, což je srovnatelné s více segmentovými zobrazovači.

Maticový zobrazovač,
      5x7 bodů, propojení s generátorem znaků
Obrázek 3
Maticový zobrazovač, 5x7 bodů, propojení s generátorem znaků a pomocným dekodérem.

U řízení maticového zobrazovače je jeden znak postupně skládán po řádcích, kdy je frekvence postupného zobrazování řádkových bodů tak vysoká, že ji lidské okno již nepostřehne a blikání se pro oko "slije" do trvalého svitu. Princip postupného skládání znaku "2" je zobrazen na obrázku 4.

Maticový zobrazovač,
      5x7 bodů, skládání znaku
Obrázek 4
Maticový zobrazovač, 5x7 bodů, skládání znaku.

U segmentových zobrazovačů je informace o tom, které segmenty mají svítit uložena v jednom řádku tabulky. U maticového zobrazování je tato znaková informace rozložena do více řádků, podle toho, z kolika řádků je znak sestaven. Počet bitů výstupních dat potom odpovídá počtu sloupců znaku. Principielně je možno řízení i "otočit" a znaky generovat po sloupcích. Příklad kódu pro znak (číslici) "2" je uveden v tabulce 3 (jedná se pouze o výřez z tabulky, pro jeden konkrétní znak).

pořadí
v
tabulce
znak kód ASCII
data d7-d0
adresa
řádku
znakový
sloupec
kód (hex)
dec. hex. bin. a2 a1 a0 c4 c3 c2 c1 c0
... ... ... ... ... ... ... ...
51 2 50 32 00110010 0 0 0 0 1 1 1 0 0E
0 0 1 1 0 0 0 1 11
0 1 0 0 0 0 0 1 01
0 1 1 0 0 1 1 0 06
1 0 0 0 1 0 0 0 08
1 0 1 1 0 0 0 1 11
1 1 0 1 1 1 1 1 1F
... ... ... ... ... ... ... ...

Tabulka 3
Příklad generování znaku pro maticový zobrazovač.

Podle obrázku 3, nastavíme na datových signálech d7-d0 generátoru informaci o tom, jaký znak z ASCII tabulky chceme zobrazit. Tato informace je přivedena do tabulky 3 a představuje bázovou adresu, kde je uložen první bodový řádek znaku. Na vstupy a2-a0 je přivedena binární informace z čítače, který určuje, který řádek r6-r0 znaku je právě výstupem q6-q0 dekodérem aktivován. Generátor tuto informaci o aktivním řádku přičte k bázové adrese (kód znaku) a na výstupech c4-c0 nastaví odpovídající kombinaci pro rozsvícení jednotlivých bodů na právě aktivním řádku. Následně se situace po zvýšení hodnoty čítače o +1 opakuje, až se vyčerpá počet zobrazovacích řádků znaku a zobrazování začne od řádku prvního.

Řízení

Volba zobrazovaného znaku je statická a je řešena přivedením kódu znaku (např. ASCII) na datové vstupy d0 ... d7. Ostatní řízení maticového zobrazovače probíhá dynamicky. Časovou základnu tvoří hodiny (oscilátor) s potřebnou frekvencí. Hodinové impulsy jsou přiváděny do kruhového čítače, který čítá v rozsahu odpovídajícímu počtu řádků zobrazovače, zde 7 (0 ... 6). Výstup z čítače na signálech a, b, c představuje binárně kódovanou informaci o hodnotě čítače, která je zároveň adresou pro zobrazení (aktivaci) řádku (r0 ... r6). Dekodér, podle této hodnoty na vstupech a0, a1, a2 aktivuje právě jeden odpovídající řádek na výstupech q0 ... q6 (na anody skupiny LED diod v řádku přivede napětí). Stejnou adresovou informaci o aktivním řádku obdrží i generátor znaků, který podle obsahu interní tabulky znaku vybere odpovídající řádek s informací o tom, které sloupce mají být pro daný řádek znaku aktivovány a vydá ji na sloupcové výstupy c0 ... c4 (přizemní katody LED diod ve sloupci. Po postupném zobrazení všech řádků znaku se cyklus opakuje.

Programová obsluha

Při zpracování v programu je potřeba znak (číslo) vyjádřené v binárním tvaru převést na STRING (znakový řetězec), kdy funkce zajistí to, že na osmici bitů je vyjádřen jeden znak v kódu ASCII tabulky. Tyto bity (vstupy d0-d7 dekodéru) jsou potom adresou skupiny řádků na kterých se nachází kódy pro aktivaci odpovídajících bodů maticového zobrazovače (skupina pro matici 5x7 = 7 řádků).

Aplikace

Pro řízení maticových zobrazovačů, jak je uvedeno výše, je možno tento princip aplikovat přímo.

Generátor pro maticové zobrazování našel i uplatnění u prvních počítačů, kde se používal jako generátor znaků pro CRT monitory nebo znakově orientovaných maticových zobrazovačů využívajících bitmapového vykreslování znaku. Pro toto užití musí být ale upraveno řízení. U zobrazovačů (např. LED) je horizontální i vertikální mezera mezi znaky dána rozměrovou konstrukcí. U CRT monitorů by ale docházelo k splynutí znaků, protože by byly znaky generovány těsně vedle sebe. Z tohoto důvodu je nutno řízení upravit tak, že se přidají "virtuální" řádky a sloupce a matice se virtuálně rozšíří na 7x9 bodů. Tyto virtuální vložené řádky a sloupce se nezobrazují a vytvářejí mezeru mezi znaky a řádky. Další úpravou, tentokrát časováním nebo násobením je možno na CRT monitorech jednoduše zobrazovat i znaky odpovídající násobku původního znaku.

Pro zobrazování znaků národních abeced není generátor s rastrem matice 5x7 bodů dostačující. V takovém případě je vhodné zvolit matici s větším počtem bodů např. 9x15 nebo přejít přímo na grafické zobrazování, byť složitější.

Poznámka
Ačkoliv generátor znaků pro maticové zobrazování vypadá složitě, není to nic jiného než vhodně naprogramovaná pevná paměť PROM/EPROM.

HMI-AUTOMATIZACE - ŘÍZENÍ - HW GENERÁTOR

 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.