Posuvný register 74HC595 sme už v tomto blogu spomínali v súvislosti s možnosťami ich prepojenia a ich využitie v projektoch s Arduinom a Ethernet shieldom či už v režime webservera, alebo klienta s ovládaním celkovo 96 LED diód riadených prostredníctvom webového rozhrania.
Dnes si ukážeme na možnosti ovládania 7-segmentového displeja prostredníctvom posuvného registra 74HC595. Projekt je škálovateľný a umožňuje pripojenie viacerých registrov a displejov tak ako v minulom projekte. Pre ovládanie posuvného registra 74HC595 používame 3 signály - dátový (SER), hodinový (SRCLK) a preklápací (RCLK).
8-bitový posuvný register 74HC595 môže ovládať 8 výstupov (QA až QH) a to osmicou bitov (jedným bajtom), ktorú do neho zapíšeme príkazom shiftOut.
7-segmentový displej má na ovládanie 8 vývodov. 7 vývodov riadi jednotlivé segmenty (A až G), posledný vývod riadi bodku (DP). Všetky vývody majú pripojený 220ohm až 1kohm predradný rezistor (rovnako ako u klasických LED diód), ktorý obmedzuje pretekajúci prúd obvodom.
V našom prípade sa využíva iba 7 vývodov riadených z posuvného registra bez ovládania bodky. To znamená, že na ovládanie využívame hodnoty 0 až 127 (celkovo 128 funkčných hodnôt), nakoľko bitová hodnota 128 až 255 zasahuje už do ôsmeho bitu, ktorý sa už nevyužíva (nevyužívame DP signál - bodku). Okrem výpisu jednotlivých číslic prinášajú isté bitové kombinácie posuvného registra, ktoré na displej vypíšu aj inak nepoužívané znaky, ktoré je možné v projektoch využit.
Napríklad znaky: c, d, U, E, H, S, Z, J, o, ° a mnohé ďalšie, ktoré môžu slúžiť na výpis chybových kódov, problémov, diagnostiky, ako to poznáme z mikrovĺnnych trúb, či zváračiek, testerov matičných dosiek. Nájdu preto uplatnenie v širokej palete projektov, kde je možné využiť 7-segmentový displej.
Pri testovaní prechádzania celého cyklu s následovným zapojením bolo zistené, pri akých hodnotách bajtu sa zobrazujú čísla 0-9.
POZOR, tieto hodnoty platia iba pre shiftOut() metódou MSB FIRST!
Zapojenie 74HC595 --> Arduino (Uno, R3):
Vcc |
5V |
GND |
GND |
SER (Data) |
D6 |
RCLK (Preklápací --> Latch) |
D7 |
SRCLK (Clock) |
D8 |
OE |
GND |
SRCLR |
5V |
Zapojenie 74HC595 --> 7-segmentový displej:
Vývod 74HC595 |
Vstup 7-segmentového displeja |
QA |
G |
QB |
F |
QC |
A |
QD |
B |
QE |
E |
QF |
D |
QG |
C |
Hodnoty pre bajt (osmicu bitov) a vizualizované číslo na 7-segmentovom displeji:
00000001 == 1 (DEC) |
0 |
00110111 == 55 (DEC) |
1 |
01000010 == 66 (DEC) |
2 |
00010010 == 18 (DEC) |
3 |
00110100 == 52 (DEC) |
4 |
00011000 == 24 (DEC) |
5 |
00001000 == 8 (DEC) |
6 |
00110011 == 51 (DEC) |
7 |
00000000 == 0 (DEC) |
8 |
00010000 == 16 (DEC) |
9 |
POZOR, tieto hodnoty platia iba pre shiftOut() metódou MSB FIRST, pri metóde LSB FIRST budú hodnot v celom intervale intertované!
Celé zapojenie aj s vizualizáciou číslic a ostatných znakov všetkých možných 7-bitových kombinácii je možné vyskúšať v simuláre TinkerCAD. Použité je zapojenie so spoločnou anódou, na ktorú je privedených 5V! Pri zapojení so spoločnou katódou je nutné pripojiť GND!
Programová implementácia obsahuje výpis čísel 0 až 9 na displeji (bez opakovania) vo funkcii setup(). Jednou zo zakomentovaných častí je aj výpis celého 7-bitového intervalu so sekundovou pauzou na displej.
TinkerCAD projekt: https://www.tinkercad.com/things/6G6qyM6YI4h
Minulý projekt s kaskádou posuvných registrov je možné nájsť na: http://arduino.clanweb.eu/register-74hc595.php
Zapojenie môže byť rozšírené pre pripojenie viacerých posuvných registrov 74HC595 zapojených do kaskády s väčším počtom 7-segmentových displejov. Tento článok môže slúžiť ako základ pre projekty typu: Digitálna váha, hodiny, vizualizácia nastavených údajov, regulácie v Arduino projektoch. Častokrát je problémom kontrast 7-segmentových displejov, kedy sa jednotlivé segmenty "zlievajú" a znižuje to čitateľnosť displeja.
Riešenie je veĺmi jednoduché s využitím farebnej fólie, ktoré zvýši kontrast displeja.