Zobrazení čísla na sedmisegmentovách LED jako výstup z mikrokontroléru je poměrně časté a podobně častý je i problém, který to přináší, potřebu příliš velkého počtu vývodů mikrokontroléru. Podívejme se, co se s tím dá dělat – tentokrát za pomoci integrovaných kodérů. Příklady budou uváděny pro platformu PICAXE.
Plná obsluha jedné sedmisegmentovky vyžaduje sedm vývodů, když se má použít i desetinná tečka, tak osm vývodů. Na první pohled v tom žádný další problém není, ale musíme si dávat pozor na to, abychom nepřekročili nejvyšší povolený proud mikrokontroléru. I když bude proud každého jednotlivého segmentu malý, třeba 10 mA, a to je podstatně méně než povolený proud jedním vývodem, není vyhráno. Platí ještě další omezení, a to je maximální povolený proud napájecími vývody mikrokontroléru. Pro naši sedmisegmentovku při zobrazeném čísle 8 to dělá 8×10=80 mA, a to už je nad možnosti obvodu. Důvodem, proč hledat jinou cestu tedy nemusí být jen úspora počtu vývodů, ale také nízké dostupné proudové zatížení, jinak řečeno, nemožnost LED „pořádně rozsvítit“.
Ukázka programu cyklicky zobrazuje číslice 0 až 9 a dále symboly A až F používané k vyjádření čísel v šestnáckové soustavě. Podobu znaků určuje program mikrokontroléru. Tento způsob se dá prakticky použít jen v případě, kdy obsluhujeme jedinou znakovku a záleží na tom, aby zapojení mělo co nejméně obvodů, pokud možno kromě mikrokontroléru žádný další.
REM LED dispej přímo - PICAXE 20M2 dirsB=%01111111 ;nastavit port B jako výstup pro pins ;desetinná tečka se může ovládat samostatně do for b0=0 to 15 gosub zobraz pause 1000 next b0 loop zobraz: ;zobrazí na LED znak uložený v b0 select case b0 case 0 pinsB=%11000000 ;znak 0 case 1 pinsB=%11111001 ;znak 1 case 2 pinsB=%10100100 ;znak 2 case 3 pinsB=%10110000 ;znak 3 case 4 pinsB=%10011001 ;znak 4 case 5 pinsB=%10010010 ;znak 5 case 6 pinsB=%10000010 ;znak 6 case 7 pinsB=%11111000 ;znak 7 case 8 pinsB=%10000000 ;znak 8 case 9 pinsB=%10010000 ;znak 9 case 10 pinsB=%10001000 ;znak A case 11 pinsB=%10000011 ;znak b case 12 pinsB=%11000110 ;znak C case 13 pinsB=%10100001 ;znak d case 14 pinsB=%10000110 ;znak E case 15 pinsB=%10001110 ;znak F endselect return
Když budeme chtít ušetřit čtyři vývody a současně vyřešit problém s proudem, můžeme mezi mikrokontrolér a znakovku zařadit integrovaný dekodér 4511. Znakovka bude muset mít společnou katodu. Současně se výrazně zjednoduší program, můžeme ale zobrazit jen ty znaky (číslice), které použitý převodník zná, v našem případě přijdeme o písmena A až F. Zobrazení je stejně jako předchozí statické, využívá se plný svit LED. Není-li změna, nevyžaduje zobrazení programovou obsluhu. Program zobrazuje cyklicky číslice 0 až 9. Při vícemístném displeji potřebujeme tolik vývodů, kolik je čtyřnásobek počtu míst.
REM LED dispej s 4511 - PICAXE 20M2 dirsB=%00001111 ;nastavit 4 bity port B jako výstup pro pins ;desetinná tečka se může ovládat samostatně do for b0=0 to 9 gosub zobraz pause 1000 next b0 loop zobraz: ;zobrazí na LED znak uložený v b0 pinsB=b0 return
Pro vícemístné displeje můžeme zkombinovat jak přímé připojení tak zapojení s dekodérem 4511 a multiplexní režim, v němž se jednotlivé pozice vícemístného displeje rozsvěcí postupně (rychle střídavě) a vlivem setrvačnosti oka se nám zdá, že svítí celý displej. Multiplexovaný displej svítí méně než přímo buzený a k zobrazení je nutné pravidelně cyklicky obsluhovat, zabere tedy poměrně hodně času řídícího mikrokontroléru.
V příkladu jsou jen dvě místa displeje a střídají se na nich čísla 00 až 99. Pro 2 místa s dekodérem potřebujeme 6 vývodů, obecně tolik, kolik je počet míst + 4.
REM LED dispej s 4511 - PICAXE 20M2 dirsB=%00001111 ;port B bity 0-3 jako výstup pins ;desetinná tečka se může ovládat samostatně setfreq m16 do ;pošli postupně čísla 0 - 99 for b1=0 to 99 for b2=0 to 10 gosub zobraz next b2 next b1 loop zobraz: ;zobrazí na LED číslo uložené v b1 (2 místa) b0=b1//10 ;nižší řád přes zbytek po dělení pinsB=b0 high b.5 pause 20 low b.5 b0=b1/10 ;vyšší řád pinsB=b0 high b.4 pause 20 low b.4 return
Příště se podíváme na jiné způsoby obsluhy znakovek s použítím dekodérů s čítači.