PICAXE a LED displeje (1)

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ší.

led1

Připojení znakovky k PICAXE 20M2 přímo

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.

LED3

Připojení znakovky přes dekodér 4511

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.

LED4

Zapojení s dekodérem 4511 a multiplexováním

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.