- Požadované komponenty
- 4místný 7segmentový displej
- 74HC595 Shift Register IC
- Modul RTC DS3231
- Kruhový diagram
- Programování Arduino UNO pro multiplexování sedmisegmentového displeje
Digitální nástěnné hodiny jsou dnes stále populárnější a jsou lepší než analogové hodiny, protože poskytují přesný čas v hodinách, minutách a sekundách a jsou snadno čitelné. Některé digitální hodiny mají také mnoho funkcí, jako je zobrazování teploty, vlhkosti, nastavení více alarmů atd. Většina digitálních hodin používá sedmisegmentový displej.
Dříve jsme stavěli mnoho obvodů digitálních hodin buď pomocí 7 segmentových displejů, nebo pomocí 16x2 LCD. Zde můžete provést kompletní desku plošných spojů digitálních hodin založených na AVR. Tento výukový program je o vytváření digitálních hodin multiplexováním čtyř- a 7 segmentových displejů pomocí Arduino UNO a zobrazováním času ve formátu HH: MM.
Požadované komponenty
- 4místný 7segmentový displej
- 74HC595 IC
- Modul RTC DS3231
- Arduino UNO
- Nepájivá deska
- Připojovací vodiče
4místný 7segmentový displej
Čtyřmístný 7segmentový displej má čtyři sedmisegmentové displeje spojené dohromady nebo můžeme říci multiplexované dohromady. Používají se k zobrazení číselných hodnot a také některých abeced s desetinnými místy a dvojtečkou. Displej lze používat v obou směrech. Čtyři číslice jsou užitečné pro výrobu digitálních hodin nebo pro počítání čísel od 0 do 9999. Níže je interní diagram pro 4místný 7segmentový displej.
Každý segment má jednu LED s individuálním ovládáním LED. Existují dva typy sedmi segmentových displejů, jako je běžná anoda a běžná katoda. Výše uvedený obrázek ukazuje běžný 7 segmentový displej typu anoda.
Společná anoda
Ve společné anodě jsou všechny kladné svorky (anody) všech 8 LED spojeny dohromady, pojmenovaných jako COM. A všechny záporné svorky zůstanou samy nebo připojeny k pinům mikrokontroléru. Pomocí mikrokontroléru, pokud je nastavena logika LOW na osvětlení konkrétního segmentu LED a nastavení logiky High na vypnutí LED.
Společná katoda
Ve společné katodě jsou všechny záporné svorky (katoda) všech 8 LED spojeny dohromady, pojmenovaných jako COM. A všechny kladné svorky zůstávají samy nebo jsou připojeny k pinům mikrokontroléru. Použitím mikrokontroléru, pokud je nastavena logika HIGH pro rozsvícení LED a nastavením LOW pro vypnutí LED.
Zde se dozvíte více o 7 segmentových displejích a podívejte se, jak jej lze propojit s jinými mikrokontroléry:
- Rozhraní 7 segmentového displeje s Arduino
- Rozhraní 7 segmentového displeje s Raspberry Pi
- Propojení sedmisegmentového displeje s ARM7-LPC2148
- Rozhraní 7 segmentového displeje s mikrokontrolérem PIC
- 7 segmentové rozhraní s mikrokontrolérem 8051
74HC595 Shift Register IC
IC 74HC595 také známý jako 8-Bit Serial IN - Parallel OUT Shift Register. Tento IC může přijímat datové vstupy sériově a může paralelně ovládat 8 výstupních pinů. To je užitečné při redukci pinů použitých z mikrokontroléru. Zde naleznete všechny projekty související s registrem posunu 74HC595.
Práce s 74HC595 IC:
Tento IC používá tři piny jako Clock, Data & Latch s mikrokontrolérem pro ovládání 8 výstupních pinů IC. Hodiny se používají k poskytování nepřetržitých pulzů z mikrokontroléru a datový kolík se používá k odesílání dat, jako je třeba, aby byl výstup zapnut nebo vypnut v příslušném čase.
Pinout:
Číslo PIN |
Název PIN |
Popis |
1,2,3,4,5,6,7 |
Výstupní piny (Q1 až Q7) |
74HC595 má 8 výstupních pinů, z nichž 7 je těchto pinů. Mohou být ovládány sériově |
8 |
Přízemní |
Připojeno k uzemnění mikrokontroléru |
9 |
(Q7) Sériový výstup |
Tento pin se používá k připojení více než jednoho 74HC595 jako kaskádové |
10 |
(MR) Hlavní reset |
Resetuje všechny výstupy na nízkou úroveň. Pro normální provoz musí být držen vysoko |
11 |
(SH_CP) Hodiny |
Jedná se o hodinový kolík, kterému musí být poskytován hodinový signál z MCU / MPU |
12 |
(ST_CP) Západka |
Kolík západky se používá k aktualizaci dat na výstupní kolíky. Je aktivní vysoko |
13 |
(OE) Výstup povolen |
Povolení výstupu se používá k vypnutí výstupů. Pro normální provoz musí být udržována nízko |
14 |
(DS) Sériová data |
Jedná se o kolík, na který se odesílají data, na základě kterého je řízeno 8 výstupů |
15 |
(Q0) Výstup |
První výstupní kolík. |
16 |
Vcc |
Tento pin napájí IC, obvykle se používá + 5V. |
Modul RTC DS3231
DS3231 je modul RTC. RTC je zkratka pro hodiny reálného času. Tento modul slouží k zapamatování času a data, i když obvod není napájen. Má záložní baterii CR2032 pro provoz modulu bez externího napájení. Tento modul také obsahuje teplotní čidlo. Modul lze použít ve vestavěných projektech, jako je výroba digitálních hodin s indikátorem teploty atd. Zde je několik užitečných projektů, které jej používají:
- Automatický podavač zvířat pomocí Arduina
- Propojovací modul RTC (DS3231) s mikrokontrolérem PIC: digitální hodiny
- Propojení modulu RTC (DS3231) s MSP430: digitální hodiny
- Hodiny reálného času ESP32 pomocí modulu DS3231
- Digitální nástěnné hodiny na desce plošných spojů pomocí mikrokontroléru AVR Atmega16 a DS3231 RTC
Pinout DS3231:
Název PIN |
Použití |
VCC |
Připojeno na kladný zdroj energie |
GND |
Připojeno k zemi |
SDA |
Sériový datový kolík (I2C) |
SCL |
Pin sériových hodin (I2C) |
SQW |
Výstupní kolík obdélníkové vlny |
32 tis |
32K výstup oscilátoru |
Vlastnosti a specifikace:
- RTC počítá sekundy, minuty, hodiny a rok
- Digitální teplotní senzor s přesností ± 3 ° C
- Zaregistrujte se pro stárnutí
- 400kHz I2C rozhraní
- Nízká spotřeba energie
- Záloha baterie CR2032 se životností dvou až tří let
- Provozní napětí: 2,3 až 5,5 V
Kruhový diagram
Okruhové připojení mezi DS3231 RTC a Arduino UNO:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
Připojení obvodu mezi 74HC595 IC a Arduino Uno:
74HC595 IC |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (data) |
4 |
13-OE (západka) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
Propojení obvodů mezi IC 74HC595 a čtyřmístným sedmisegmentem a Arduino UNO:
4-místnýSevenSegment |
IC 74HC595 |
Arduino UNO |
A |
Q0 |
- |
B |
Q1 |
- |
C |
Q2 |
- |
D |
Q3 |
- |
E |
Q4 |
- |
F |
Q5 |
- |
G |
Q6 |
- |
D1 |
- |
10 |
D2 |
- |
11 |
D3 |
- |
12 |
D4 |
- |
9 |
Programování Arduino UNO pro multiplexování sedmisegmentového displeje
Celý kód a pracovní video jsou připojeny na konci tohoto kurzu. V sekci programování bude vysvětleno, jak je čas (hodina a minuta) odebírán z modulu RTC ve 24hodinovém formátu a poté je převeden do příslušného formátu pro jejich zobrazení na čtyřmístném 7segmentovém displeji.
K propojení modulu RTC DS3231 s Arduino UNO se používá sběrnice I2C Arduino UNO. Volala knihovna
V tomto konceptu jsou hodiny a minuty brány nejprve z RTC a jsou spojeny dohromady jako 0930 (21:30) a poté jsou jednotlivé číslice odděleny jako tisíce, stovky, desítky, jednotka a jednotlivé číslice převedeny do binárního formátu jako 0 do 63 (0111111). Tento binární kód je odeslán do posuvného registru a poté z posuvného registru do sedmisegmentu, přičemž se úspěšně zobrazuje číslice 0 na sedmisegmentovém displeji. Tímto způsobem jsou čtyři číslice multiplexovány a jsou zobrazeny hodiny a minuty.
Zpočátku je zahrnuta potřebná knihovna, jako je knihovna DS3231 a knihovna Wire (knihovna I2C).
#zahrnout
Kolíky jsou definovány pro ovládání sedmi segmentů. Tyto ovládací prvky budou hrát důležitou roli při multiplexování displeje.
#define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2
Proměnné jsou deklarovány k uložení převedeného nebo nezpracovaného výsledku převzatého z RTC.
int h; // Proměnná deklarovaná pro hodinu int m; // Proměnná deklarovaná pro minutu int tisíce; int stovky; int desítky; int jednotka; bool h24; bool PM;
Dále je objekt třídy DS3231 deklarován jako RTC, aby se zjednodušilo použití v dalších řádcích.
DS3231 RTC;
Protože je modul RTC propojen s Arduino pomocí komunikace I2C. Wire.begin () se tedy používá ke spuštění komunikace I2C na výchozí adresu RTC, protože neexistují žádné další moduly I2C.
Wire.begin ();
Režim pinů je definován, ať už se GPIO bude chovat jako výstup nebo vstup.
pinMode (9, VÝSTUP); pinMode (10, VÝSTUP); pinMode (11, VÝSTUP); pinMode (12, VÝSTUP); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (tečka, VÝSTUP);
Smyčka běží nekonečně dlouho a zabere jí čas v hodinách a minutách od modulu RTC DS3231. „h24“ označuje proměnnou formátu 24 hodin.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Pak se hodina a minuta spojí jako jedno číslo (příklad, pokud je hodina 10 a min 60, pak číslo 10 * 100 = 1000 + 60 = 1060).
int číslo = h * 100 + m;
Tyto jednotlivé číslice od čísla se získá (příklad 1060- 1 tisíc, 0 je hundered, 1 je desátý a 0, je poslední číslice). K oddělení číslic se používá operátor modulu. Například v 1060 získat 1 pak 1060/1000 = 1,06% 10 = 1). Samostatné číslice jsou tedy uloženy v samostatných proměnných.
int tisíce = počet / 1000% 10; int stovky = počet / 100% 10; int desítky = počet / 10% 10; int jednotka = číslo% 10;
Poté je definován příkaz pro přepnutí případu pro každou jednotlivou číslici pro jejich převod do příslušného formátu (binární formát) a odeslání přes posuvný registr k zobrazení v 7 segmentech. Například (pro 1 číslici se změní na 06 (0000 0110)). Aby bylo odesláno směnou a 1 číslice se zobrazí v 7segmentu (0 pro LOW, 1 pro HIGH).
switch (t) { case 0: unit = 63; přestávka; případ 1: jednotka = 06; přestávka; případ 2: jednotka = 91; přestávka; případ 3: jednotka = 79; přestávka; případ 4: jednotka = 102; přestávka; případ 5: jednotka = 109; přestávka; případ 6: jednotka = 125; případ 7: jednotka = 07; přestávka; případ 8: jednotka = 127; přestávka; případ 9: jednotka = 103; přestávka; }
Poté je jednotlivá číslice v binárním formátu odeslána pomocí funkce 'shiftout' s MSB jako první a odpovídající číslice je označena jako VYSOKÁ a západka je označena jako VYSOKÁ.
digitalWrite (9, LOW); digitalWrite (latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, tisíce); digitalWrite (latchPin, HIGH); digitalWrite (9, HIGH); zpoždění (5);
Tím je dokončen kompletní kód. Většina vysvětlení funkce je uvedena v sekci komentáře ke kódu hned vedle řádku kódu. Frekvence hodin rozhodne o pohledu na čas a kvalitu multiplexování, tj. Pokud se použijí nízké hodiny, pak je vidět blikání, kde, jako kdyby byla vysoká rychlost hodin, pak nebude takové blikání a je vidět stabilní čas.
Pamatujte, že pro přístup k modulu RTC musí být udržováno napětí sběrnice I2C. Chcete-li poskytnout jakýkoli návrh nebo máte-li jakékoli pochybnosti, prosím komentujte níže.