- Nepieciešamās sastāvdaļas
- 4 ciparu 7 segmentu displejs
- 74HC595 maiņu reģistra IC
- DS3231 RTC modulis
- Ķēdes shēma
- Arduino UNO programmēšana septiņu segmentu displeja multipleksēšanai
Digitālie sienas pulksteņi mūsdienās kļūst arvien populārāki, un tie ir labāki nekā analogais pulkstenis, jo tas nodrošina precīzu laiku stundās, minūtēs un sekundēs, kā arī to ir viegli nolasīt. Dažiem digitālajiem pulksteņiem ir arī daudzas iespējas, piemēram, temperatūras, mitruma parādīšana, vairāku trauksmju iestatīšana utt. Lielākajā daļā digitālo pulksteņu tiek izmantots septiņu segmentu displejs.
Iepriekš mēs izveidojām daudzas digitālo pulksteņu shēmas, izmantojot 7 segmentu displejus vai 16x2 LCD. Šeit jūs varat pabeigt AVR bāzes digitālā pulksteņa PCB dizainu. Šī apmācība ir par digitālā pulksteņa izveidošanu, multipleksējot četrus - 7 segmentu displejus, izmantojot Arduino UNO, un laika attēlojumu HH: MM formātā.
Nepieciešamās sastāvdaļas
- 4 ciparu 7 segmentu displejs
- 74HC595 IC
- DS3231 RTC modulis
- Arduino UNO
- Maizes dēlis
- Savienojošie vadi
4 ciparu 7 segmentu displejs
4 ciparu 7 segmentu displejā ir četri septiņi segmentu displeji, kas savienoti kopā vai, mēs varam teikt, multipleksēti kopā. Tos izmanto, lai parādītu skaitliskās vērtības, kā arī dažus alfabētus ar decimāldaļām un kolu. Displeju var izmantot abos virzienos. Četri cipari ir noderīgi digitālo pulksteņu izgatavošanai vai līdzīgam skaitļu skaitīšanai no 0 līdz 9999. Zemāk ir 4 ciparu 7 segmentu displeja iekšējā diagramma.
Katrā segmentā ir viens LED ar individuālu LED vadību. Ir divu veidu septiņi segmentu displeji, piemēram, kopējais anods un kopējais katods. Iepriekš redzamajā attēlā parādīts kopējais anoda tipa 7 segmenta displejs.
Parastais anods
Kopējā anodā visi 8 gaismas diodes visi pozitīvie spailes (anodi) ir savienoti kopā ar nosaukumu COM. Un visi negatīvie spailes tiek atstāti atsevišķi vai savienoti ar mikrokontrolleru tapām. Izmantojot mikrokontrolleru, ja loģika LOW ir iestatīta, lai apgaismotu konkrēto LED segmentu, un iestatiet loģiku Augsts, lai izslēgtu LED.
Parastais katods
Kopējā katodā visi negatīvo spailes (katodi) no visiem 8 gaismas diodēm ir savienoti kopā, saukti par COM. Un visi pozitīvie spailes tiek atstāti atsevišķi vai savienoti ar mikrokontrolleru tapām. Izmantojot mikrokontrolleru, ja LED apgaismojumam ir iestatīta loģika HIGH, bet LED izslēgšanai - iestatiet LOW.
Uzziniet vairāk par 7 segmentu displejiem šeit un pārbaudiet, kā to var sasaistīt ar citiem mikrokontrolleriem:
- 7 segmentu displeja mijiedarbība ar Arduino
- 7 segmentu displeja mijiedarbība ar Raspberry Pi
- Septiņu segmentu displejs ar ARM7-LPC2148
- 7 segmentu displeja mijiedarbība ar PIC mikrokontrolleru
- 7 segmentu displeja mijiedarbība ar 8051 mikrokontrolleru
74HC595 maiņu reģistra IC
IC 74HC595 pazīstams arī kā 8-bit sērijas IN - Paralēlā OUT Shift Register. Šis IC var saņemt datu ievadi sērijveidā un paralēli kontrolēt 8 izejas tapas. Tas ir noderīgi, lai samazinātu tapas, ko izmanto no mikrokontrollera. Visus ar 74HC595 maiņu reģistru saistītos projektus varat atrast šeit.
74HC595 IC darbība:
Šis IC izmanto trīs tapas, piemēram, Clock, Data & Latch ar mikrokontrolleru, lai kontrolētu IC 8 izejas tapas. Pulkstenis tiek izmantots nepārtrauktu impulsu nodrošināšanai no mikrokontrollera, un datu tapa tiek izmantota datu nosūtīšanai, piemēram, kura izeja attiecīgajā pulksteņa laikā ir jāieslēdz vai jāizslēdz.
Pinout:
PIN kods |
Piespraudes nosaukums |
Apraksts |
1,2,3,4,5,6,7 |
Izejas tapas (no Q1 līdz Q7) |
74HC595 ir 8 izejas tapas, no kurām 7 ir šīs tapas. Tos var kontrolēt sērijveidā |
8 |
Zeme |
Savienots ar mikrokontrollera zemi |
9 |
(Q7) Sērijas izeja |
Šo tapu izmanto, lai savienotu vairāk nekā vienu 74HC595 kā kaskādi |
10 |
(MR) Master Reset |
Visas izejas tiek atiestatītas kā zemas. Normālai darbībai ir jātur augstā stāvoklī |
11 |
(SH_CP) Pulkstenis |
Šī ir pulksteņa tapa, kurai pulksteņa signāls jānodrošina no MCU / MPU |
12 |
(ST_CP) Fiksators |
Fiksatora tapa tiek izmantota, lai atjauninātu datus uz izvades tapām. Tas ir aktīvi augsts |
13 |
(OE) Izeja iespējot |
Output Enable izmanto, lai izslēgtu izejas. Normālai darbībai jābūt zemai |
14 |
(DS) Sērijas dati |
Šī ir tapa, uz kuru tiek nosūtīti dati, pamatojoties uz kuru tiek kontrolētas 8 izejas |
15 |
(Q0) Izeja |
Pirmais izvades tapa. |
16 |
Vcc |
Šī tapa darbina IC, parasti tiek izmantots + 5V. |
DS3231 RTC modulis
DS3231 ir RTC modulis. RTC apzīmē reālā laika pulksteni. Šis modulis tiek izmantots, lai atcerētos laiku un datumu pat tad, ja ķēde nav barota. Tam ir akumulatora rezerves CR2032, lai moduli palaistu bez ārējas barošanas. Šajā modulī ietilpst arī temperatūras sensors. Moduli var izmantot iegultos projektos, piemēram, digitālā pulksteņa ar temperatūras indikatoru izgatavošanā utt. Šeit ir daži noderīgi projekti, kas to izmanto:
- Automātiska dzīvnieku barotava, izmantojot Arduino
- Saskarnes RTC modulis (DS3231) ar PIC mikrokontrolleru: digitālais pulkstenis
- Saskarne RTC modulim (DS3231) ar MSP430: Digitālais pulkstenis
- ESP32 reālā laika pulkstenis, izmantojot moduli DS3231
- Digitālais sienas pulkstenis uz PCB, izmantojot AVR mikrokontrolleru Atmega16 un DS3231 RTC
DS3231 pinout:
Piespraudes nosaukums |
Izmantot |
VCC |
Savienots ar strāvas avota pozitīvo |
GND |
Savienots ar zemi |
SDA |
Sērijas datu tapa (I2C) |
SCL |
Sērijas pulksteņa tapa (I2C) |
SQW |
Square Wave izejas tapa |
32K |
32K oscilatora izeja |
Funkcijas un specifikācijas:
- RTC skaita sekundes, minūtes, stundas un gadu
- Digitāls temperatūras sensors ar precizitāti ± 3 ° C
- Reģistrējieties Aging trim
- 400Khz I2C interfeiss
- Zems enerģijas patēriņš
- CR2032 akumulatora dublējums ar divu līdz trīs gadu kalpošanas laiku
- Darba spriegums: no 2,3 līdz 5,5 V
Ķēdes shēma
Ķēdes savienojums starp DS3231 RTC un Arduino UNO:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
Ķēdes savienojumi starp 74HC595 IC un Arduino Uno:
74HC595 IC |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (dati) |
4 |
13-OE (fiksators) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
Ķēdes savienojumi starp IC 74HC595 un četrciparu septiņu segmentu un Arduino UNO:
4-ciparu septiņu segmentu |
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 |
Arduino UNO programmēšana septiņu segmentu displeja multipleksēšanai
Pilns kods un darba video ir pievienoti šīs apmācības beigās. Programmēšanas sadaļā tiks paskaidrots, kā laiks (stunda un minūte) tiek ņemts no RTC moduļa 24 stundu formātā un pēc tam tiek pārveidots attiecīgajā formātā, lai tos parādītu četrciparu 7 segmentu displejā.
Lai saskarnei DS3231 RTC moduli savienotu ar Arduino UNO, tiek izmantota Arduino UNO I2C kopne. Sauca bibliotēku
Šajā koncepcijā stunda un minūte vispirms tiek ņemta no RTC, un tās tiek apvienotas, piemēram, 0930 (09:30 pm), un pēc tam atsevišķi cipari tiek atdalīti kā tūkstotis, simts, desmiti, vienība, un atsevišķi cipari tiek pārvērsti binārā formātā, piemēram, 0 uz 63 (0111111). Šis binārais kods tiek nosūtīts uz maiņu reģistru un pēc tam no maiņu reģistra uz septiņu segmentu, veiksmīgi parādot ciparu 0 septiņu segmentu displejā. Tādā veidā četri cipari tiek multipleksēti, un tiek parādīta stunda un minūte.
Sākumā ir iekļauta nepieciešamā bibliotēka, piemēram, DS3231 bibliotēka un Wire bibliotēka (I2C bibliotēka).
# iekļaut
Adatas ir noteiktas septiņu segmentu vadībai. Šīm vadības ierīcēm būs svarīga loma displeja multipleksēšanā.
#define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2
Mainīgie tiek deklarēti, lai saglabātu konvertēto vai neapstrādāto rezultātu, kas ņemts no RTC.
int h; // Mainīgais, kas deklarēts stundai int m; // Mainīgais, kas deklarēts par minūtes int tūkstošiem; int simtiem; int desmitiem; int vienība; bool h24; bool PM;
Pēc tam DS3231 klases objekts tiek deklarēts kā RTC, lai vienkāršotu izmantošanu turpmākajās rindās.
DS3231 RTC;
Tā kā RTC modulis ir saskarnē Arduino, izmantojot I2C sakarus. Tātad, wire.begin () tiek izmantots, lai sāktu I2C sakarus pēc noklusējuma RTC adreses, jo nav citu I2C moduļu.
Wire.begin ();
Pin režīms ir noteikti, vai GPIO darbosies kā izejas vai ieejas.
pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (11, OUTPUT); pinMode (12, OUTPUT); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (punkts, OUTPUT);
Cilpa darbojas bezgalīgi, un no RTC DS3231 moduļa nepieciešams laiks stundās un minūtēs. 'h24' norāda 24 stundu formāta mainīgo.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Tad stundu un minūti apvieno kā vienu skaitli (piemēram, ja stunda ir 10 un min ir 60, tad skaitlis ir 10 * 100 = 1000 + 60 = 1060).
int skaitlis = h * 100 + m;
Tiek iegūti individuālie cipari no skaitļa (piemērs 1060–1 ir tūkstotis, 0 tiek uzlauzts, 1 ir desmitais un 0 ir pēdējais cipars). Ciparu atdalīšanai tiek izmantots moduļa operators. Piemēram, 1060. gadā, lai iegūtu 1, tad 1060/1000 = 1,06% 10 = 1). Tātad atsevišķi cipari tiek glabāti atsevišķos mainīgajos.
int tūkstoši = skaitlis / 1000% 10; int simtiem = skaitlis / 100% 10; int desmiti = skaitlis / 10% 10; int vienība = skaitlis% 10;
Pēc tam katram atsevišķam ciparam tiek noteikts pārslēgšanas gadījuma paziņojums, lai tos pārveidotu attiecīgajā formātā (binārā formātā) un nosūtītu, izmantojot maiņu reģistru, lai parādītu 7 segmentos. Piemēram (1 ciparam tas tiek mainīts uz 06 (0000 0110)). Tā, lai tas tiktu izsūtīts ar maiņu, un 7 ciparu segmentā tiek parādīts viens cipars (0 - LOW, 1 - HIGH).
slēdzis (t) { gadījums 0: vienība = 63; pārtraukums; 1. gadījums: vienība = 06; pārtraukums; 2. gadījums: vienība = 91; pārtraukums; 3. gadījums: vienība = 79; pārtraukums; 4. gadījums: vienība = 102; pārtraukums; 5. gadījums: vienība = 109; pārtraukums; 6. gadījums: vienība = 125; 7. gadījums: vienība = 07; pārtraukums; 8. gadījums: vienība = 127; pārtraukums; 9. gadījums: vienība = 103; pārtraukums; }
Pēc tam individuālais cipars binārā formātā tiek nosūtīts, izmantojot 'shiftout' funkciju, vispirms izmantojot MSB, un attiecīgā cipara tapa tiek padarīta AUGSTA, un fiksatora tapa ir AUGSTA.
digitalWrite (9, LOW); digitalWrite (latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, tūkstoši); digitalWrite (latchPin, HIGH); digitalWrite (9, HIGH); kavēšanās (5);
Tādējādi tiek pabeigts viss kods. Lielākā daļa funkciju skaidrojumu ir sniegta koda komentāru sadaļā tieši blakus koda rindiņai. Pulksteņa frekvence izlems multipleksēšanas laika un kvalitātes skatu, ti, ja tiek izmantots zems pulkstenis, tad var redzēt mirgošanu, it kā pulksteņa ātrums būtu liels, tad šāda mirgošana nebūs un var redzēt vienmērīgu laiku.
Ievērojiet, ka, lai piekļūtu RTC modulim, jāsaglabā I2C kopnes spriegums. Lai sniegtu ieteikumus vai ja jums būtu kādas šaubas, lūdzu, komentējiet tālāk.