Ovládání více LED současně

Ovládání více LED současně

     V předcházejícím  příkladu  byl  popsán podrobně celý postup  tvorby a  přenesení  programu  do  mikropočítače. Na každém programu se naučíme něco nového, ale také si můžeme sami vyzkoušet vliv změny parametrů příkazů, např. změna časové prodlevy u příkazu  Wait, nebo  použitím  jiných  příkazů  na celkovou  funkci programu. Stačí jen se nebát a zkoušet.

     V tomto příkladu si ukážeme, jak je možné jednoduchým zápisem čísla do výstupního portu ovládat  (zapínat a vypínat) 8 LED naráz. Seznámíme se také s jinými druhy číselných soustav, s binární – používá jen čísla 0 a 1, a hexadecimální (šestnáctková) – používá čísla 0 až 9 a písmena A až F.

obrazekObr. 1: Schéma zapojení úlohy  

obrazek Obr. 2: Realizace úlohy

Na jeden celý port, vývody PortD.0 až PortD.7 zapojíme přes sériové rezistory 8 LED. Program bude střídavě na 1 sekundu rozsvěcovat liché a sudé LEDky.

Výsledný zdrojový soubor s komentáři je uveden níže. Hlavní program je velmi krátký, změnou číselné hodnoty zapisované do portu můžeme ovládat svit libovolných kombinací LED.

’---------------------------------------------------------------------------------------------------

’ PROGRAM LED-PORT-1.bas Ukázka ovládání celého portu-osmice vývodů

’ Program, kterým ovládáme 8 LED současně pomocí zápisu binárního

’ nebo hexadecemálního čísla. Dobu blikání v sekundách měníme příkazem Wait.

’---------------------------------------------------------------------------------------------------

$regfile = “m8def.dat”                                                ‘soubor s deklaracemi

$crystal = 12000000                                                  ‘kmitočet oscilátoru v Hz

Config PORTD = Output                                            ‘nastav celý port PD (8 pinů) jako výstupní

’----------------------------------- HLAVNI PROGRAM  --------------------------------------

Do                                                                               ‘začátek smyčky Do-Loop

PORTD = &H55                                                           ‘do PortD pošle 0101 0101

Wait 1                                                                          ‘čekej 1 sekundu

PORTD = &B10101010                                               ‘do PortD pošle 1010 1010

Wait 1                                                                          ‘čekej 1 sekundu

Loop                                                                            ‘jdi na Do

’--------------------------  KONEC HLAVNIHO PROGRAMU  -------------------------------

End

‘Popis programu

‘$regfile - říká překladači jaký typ mikroprocesoru použijeme

‘$crystal - informuje překladač o tom, jaká je frekvence oscilátoru v mikroprocesoru

‘Config PortD = Output

‘celý port (8 vývodů), na kterém jsou diody, bude nastaven jako výstup,

‘V hlavním programu je nekonečná smyčka Do-Loop,

‘v ní se každou sekundu (wait 1) změní úroveň na celém portu D podle zapsané hodnoty.

‘H55 je hexadecimální vyjádření čísla 01010101, nultý bit je vpravo, nejnižší bit je vlevo.

‘Zápis do portu se může provést i v binárním tvaru B10101010, hexadecimální tvar by byl HAA.

.

Zdroje

Obrázky: 

  • Obr. 1, 2: Archiv autora. 
Přílohy
LED-PORT-1-program.zip Stáhnout
Úkol

Nastuduj podle výše uvedeného odkazu číselné soustavy a převody mezi nimi.

  • převeď binární číslo 11011001 do hexadecimální a desítkové soustavy
  • převeď desítkové číslo 193 do binární a hexadecimální soustavy