PICAXE a LED displeje (3)

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 posuvných registrů. Příklady budou uváděny pro platformu PICAXE.

Stále zůstává naší snahou obsloužit co nejvíce míst displeje se znakovkami co nejjednodušším a nejrychlejším způsobem. Pomocí čítačů sice vystačíme dokonce s jediným vodičem a velmi jednoduchým programem, ale zněma obsahu vícemístného displeje může být neúnosně časově náročná.

Obětujeme trochu z jednoduchosti programu, kódování na segmenty (podobu znaků) opět vrátíme mikrokontroléru, použijeme dva piny. Každé číslicovce přiřadíme posuvný registr a protože ty vhodné mají 8 bitů, obsloužíme rovnou desetinnou tečku spolu se segmenty. Výstupy posuvného registru budou přímo ovládat segmenty. K obsloužení jednoho místa stačí vyslat do posuvného registru osm pulzů bez ohledu na počet míst displeje, takže se změna vícemístného displeje zkrátí o několik řádů. V okamžiku změny „projedou“ rosvícené segmenty celým displejem, což vidíme jako bliknutí, ale protože počet pulzů je relativně malý, bliknutí příliš nevadí a hlavně přenos nezdržuje. Reset (vynulování) displeje není třeba používat, nový údaj jednoduše „vytlačí ven“ ten starý.

V příkladu zapojení aplikujeme osmibitové registry 4094, které mají další velmi zajímavou vlastnost. V součinnosti se sedmisegmentovkou se společnou anodou a s nízkou spotřebou není nutné omezovat proud do LED přídavnými rezistory, výstup obvodu omezí proud sám. Tím odpadá nutnost osazovat 8 rezistorů ke každé sedmisegmentovce. Výhodou tohoto uspořádání je na rozdíl od předchozích zapojení využívajících dekodéry číslic v obvodech možnost zobrazit libovolnou kombinaci segmentů, tedy i písmena nebo mezeru, a samozřejmě malý počet obsazených výstupů mikrokontroléru, nevýhodou je o něco složitější obslužný program. Displej je statický z pohledu obsluhy i zobrazení. Příklad zobrazuje cyklicky čísla 00 až $FF.

LED8

Vícemístný displej se znakovkami a posuvnými registry

REM LED dispej přes posuvný registr 4094 - PICAXE 20M2
;desetinná tečka je zapojena jako osmý segment
setfreq m32
do                   ;pošli postupně čísla 0 - $FF
  for b1=0 to $ff gosub zobraz pause 8000 next b1  
  loop
  
zobraz:  ;zobrazí na LED cislo uložené v b1 (2 místa)
  b0=b1/16            ;oddělit vyšší řád
  gosub prevod        ;v b0 předá hex číslo na prevod
  b0=b1 and %00001111 ;oddělit nižší řád
  gosub prevod        ;v b0 předá hex číslo na prevod
  return 

prevod:  ;převod hodnoty 0-$F na sedmisegment do registru
  select case b0
    case 0  b2=%11000000 ;znak 0
    case 1  b2=%11111001 ;znak 1
    case 2  b2=%10100100 ;znak 2
    case 3  b2=%10110000 ;znak 3
    case 4  b2=%10011001 ;znak 4
    case 5  b2=%10010010 ;znak 5
    case 6  b2=%10000010 ;znak 6
    case 7  b2=%11111000 ;znak 7
    case 8  b2=%10000000 ;znak 8
    case 9  b2=%10010000 ;znak 9  
    case 10 b2=%10001000 ;znak A
    case 11 b2=%10000011 ;znak b
    case 12 b2=%11000110 ;znak C
    case 13 b2=%10100001 ;znak d
    case 14 b2=%10000110 ;znak E
    case 15 b2=%10001110 ;znak F   
    endselect
    b3=%10000000      ;v b3 maska pro výběr bitu 
    for b4=0 to 7     ;cyklus pro všechny bity
      b5=b2 and b3    ;vymaskovat bit
      if b5=0 then low b.0 else high b.0 endif ;data
      pulsout b.1,4   ;pulz hodin pro zápis dat
      b3=b3/2         ;maska pro další bit
      next b4
    return

Protože tento způsob ovládání sedmisegmentovek je často vhodný a zvládne opravdu hodně míst displeje, uvedeme si ještě drobné vylepšení úpravou zapojení, které s minimem součástek a bez nároků na změnu programu potlačí bliknutí displeje při změně hodnoty. Místo toho displej na krátký okamžik zhasne, což je méně rušivé. Na snímku z osciloskopu je na černé stopě signál CLK z výstupu mikrokontroléru, červená stopa je vygenerovaný signál OE (zhášení displeje). Je-li k dispozici dostatek výstupních pinů, lze téhož dosáhnout tím, že spojené vstupy OE všech segmentovek po dobu zápisu na displej uvedeme do stavu L.

LED8_2

Zhášení displeje po dobu změny hodnoty

new_hantek407_2

Pulzy do posuvného registru a generovaný signál OE

Obsluha displeje posuvnými registry je asi nejuniverzálnější a zvládá největší počet míst displeje nebo více displejů, ale samozřejmě za to něco vyžaduje, každá znakovka musí mít svůj obslužný obvod – posuvný registr.