Vaša IP adresa: 18.217.139.162
Počet návštev: 30509

Posuvný register

Funkčný diagram registra 74HC595. Obr. 1: Funkčný diagram registra 74HC595.
SERSerial Data InputDátový vstup
SCKShift Register Clock InputHodinový signál pre vstupné dáta (SER)
SCLMaster Reset InputVymazanie posuvného registra (Shift Register)
RCKStorage Register Clock InputHodinový signál na presun dát z posuvného registra (Shift Register) do pamäťového registra (Storage Register)
OEOutput EnableAktivácia výstupov registra QA-QH
QA - QHParallel Data OutputParalelný výstup registra
QH*Serial Data OutputSériový výstup registra. Slúži na pripojenie ďalšieho posuvného registra.
Časový diagram registra 74HC595. Obr. 2: Časový diagram registra 74HC595. Pripojenie dipleja k posuvnému registru v Arduino Multifunction Shield. Obr. 3: Pripojenie dipleja k posuvnému registru v Arduino Multifunction Shield.

Postup pri nastavovaní posuvných registrov

Postup pri nastavovaní posuvných registrov si budeme demonštrovať na nasledujúcom príklade. Register U2 umožňuje pomocou výstupov QA – QD vybrať pozíciu číslice na štvormiestnom displeji. Register U3 umožňuje pomocou výstupov QA – QH zobraziť požadované číslo na sedem segmentovom displeji. Oba registre majú dokopy 16 výstupov. Dvojicu registrov si môžeme predstaviť ako policu, na ktorú sa zmestí 16 kníh. Kniha môže mať názov 1 (modrý obal) alebo 0 (oranžový obal). Knihy sa pridávajú na policu vždy z ľavej strany a po jednej.

Kvôli prehľadnosti a zrozumiteľnosti ďalšieho kódu si zadefinujme nasledujúce konštanty a funkcie:

#define SCK PORTD7
#define SER PORTB0
#define RCK PORTD4
#define SCK_H() PORTD|=(1<<SCK)
#define SCK_L() PORTD&=~(1<<SCK)
#define RCK_H() PORTD|=(1<<RCK)
#define RCK_L() PORTD&=~(1<<RCK)

Postup pri nastavovaní posuvných registrov si ukážeme na konkrétnom príklade. Na displeji by sme chceli rozsvietiť číslo 2 na prvej pozícii. Do posuvného registra musíme postupne poslať 16-bitové číslo 0b1000000000100101 ako je to uvedené na obrázku nižšie.

Krok 1

Register začíname plniť od najmenej významného bitu (LSB). Najmenej významný bit má hodnotu 1, čo predstavuje modrú knihu (1). Knihu umiestnime na policu pomocou nábežnej hrany na linke hodinového signálu SCK. Následne je potrebné vrátiť vstup SCK na logickú nulu, aby bolo možné umiestniť ďalšiu knihu.

Výber knihy (modrá alebo oranžová) znamená nastavenie príslušnej logickej úrovne na linke SER. Kód na zápis prvej hodnoty do posuvného registra vyzerá nasledovne:

PORTB|=(1<<SER);
SCK_H();
_delay_us(1);
SCK_L();
_delay_us(1);

Krok 2

V druhom kroku potrebujeme do registra zapísať hodnotu logickej nuly, t.j. na policu pridať oranžovú knihu. Umiestnenie knihy na policu realizujeme opäť nábežnou hranou na linke SCK.

Tejto operácii zodpovedá nasledujúci úsek kódu.

PORTB&=~(1<<SER);
SCK_H();
_delay_us(1);
SCK_L();
_delay_us(1);

Krok 3

Krok 8

Krok 16

Finálny krok

Po naplnení registra 16 bitmi (zaplnení celej police 16 knihami) je potrebné preniesť obsah Shift registra do Storage registra, aby sa všetkých 16 bitov zobrazilo na paralelnom výstupe registrov U2 a U3. Túto operáciu zrealizujeme nábežnou hranou na vývode RCK. Podobne ako predtým a z rovnakého dôvodu, po určitom čase vrátime úroveň linky RCK do logickej nuly.

RCK_H();
_delay_us(1);
RCK_L();
_delay_us(1);

Po vykonaní hore uvedenej časti kódu dôjde k rozsvieteniu čísla 2 na prvom mieste štvormiestneho LED displeja.