- Komponen Diperlukan
- Paparan Segmen 4-Digit 7
- 74HC595 Shift Daftar IC
- Modul RTC DS3231
- Rajah Litar
- Pengaturcaraan Arduino UNO untuk Paparan Tujuh Segmen Multiplexing
Jam dinding digital semakin popular sekarang dan lebih baik daripada jam analog kerana memberikan waktu yang tepat dalam jam, minit dan saat dan mudah membaca nilainya. Beberapa jam digital juga mempunyai banyak kemudahan seperti menampilkan suhu, kelembapan, menetapkan banyak penggera dan lain-lain. Sebilangan besar jam digital menggunakan paparan tujuh segmen.
Kami sebelum ini banyak membina litar jam digital sama ada menggunakan paparan 7 segmen atau menggunakan LCD 16x2. Di sini anda boleh mendapatkan reka bentuk PCB jam Digital berasaskan AVR yang lengkap. Tutorial ini adalah mengenai membuat jam Digital dengan memfleksikan paparan segmen empat-7 menggunakan Arduino UNO dan memaparkan waktu dalam format HH: MM.
Komponen Diperlukan
- Paparan Segmen 4-Digit 7
- 74HC595 IC
- Modul RTC DS3231
- Arduino UNO
- Papan roti
- Menyambung wayar
Paparan Segmen 4-Digit 7
4-digit 7 Segmen paparan mempunyai empat tujuh segmen paparan bergabung bersama atau kita boleh katakan berbilang bersama Mereka digunakan untuk menampilkan nilai berangka dan juga beberapa huruf dengan perpuluhan dan titik dua. Paparan boleh digunakan ke dua arah. Empat digit berguna untuk membuat jam digital atau seperti membilang nombor dari 0 hingga 9999. Berikut adalah rajah dalaman untuk paparan Segmen 4-Digit 7.
Setiap segmen mempunyai satu LED dengan kawalan LED individu. Terdapat dua jenis paparan tujuh segmen seperti Common Anode dan Common Cathode. Gambar di atas menunjukkan paparan segmen jenis anod biasa 7.
Anod Biasa
Dalam Common Anode, semua terminal positif (Anod) dari semua 8 LED disambungkan bersama, dinamakan sebagai COM Dan semua terminal negatif dibiarkan sahaja atau disambungkan ke pin mikrokontroler. Dengan menggunakan mikrokontroler, jika logik LOW diatur untuk menerangi segmen LED tertentu dan tetapkan logik Tinggi untuk mematikan LED.
Katod biasa
Dalam Common Cathode, semua terminal Negatif (katod) dari semua 8 LED disambungkan bersama, dinamakan sebagai COM. Dan semua terminal positif dibiarkan sahaja atau disambungkan ke pin mikrokontroler. Dengan menggunakan mikrokontroler, jika set logik TINGGI untuk menerangi LED dan tetapkan RENDAH untuk mematikan LED.
Ketahui lebih lanjut mengenai paparan 7 segmen di sini dan periksa bagaimana ia dapat dihubungkan dengan pengawal mikro lain:
- 7 Segmen Paparan Berinteraksi dengan Arduino
- 7 Segmen Paparan Berinteraksi dengan Raspberry Pi
- Memaparkan Tampilan Segmen Tujuh dengan ARM7-LPC2148
- 7 Segmen Paparan Berinteraksi dengan PIC Microcontroller
- Antaramuka Paparan 7 Segmen dengan Mikrokontroler 8051
74HC595 Shift Daftar IC
The IC 74HC595 juga dikenali sebagai 8-Bit DALAM Serial - Parallel OUT Shift Daftar. IC ini dapat menerima input data secara bersiri dan dapat mengawal 8 pin output secara selari. Ini berguna dalam mengurangkan pin yang digunakan dari mikrokontroler. Anda boleh mendapatkan semua projek berkaitan shift 74HC595 di sini.
Kerja IC 74HC595:
IC ini menggunakan tiga pin seperti Jam, Data & Latch dengan mikrokontroler untuk mengawal 8 pin output IC. Jam digunakan untuk memberikan denyutan berterusan dari mikrokontroler dan pin data digunakan untuk menghantar data seperti mana output yang perlu dihidupkan atau dimatikan pada waktu jam masing-masing.
Pinout:
Nombor PIN |
Nama Pin |
Penerangan |
1,2,3,4,5,6,7 |
Pin Keluaran (Q1 hingga Q7) |
74HC595 mempunyai 8 pin output di mana 7 daripadanya adalah pin ini. Mereka boleh dikawal secara bersiri |
8 |
Tanah |
Bersambung ke Ground of microcontroller |
9 |
(Q7) Keluaran Bersiri |
Pin ini digunakan untuk menghubungkan lebih daripada satu 74HC595 sebagai lata |
10 |
(MR) Tetapkan Semula Induk |
Menetapkan semula semua output serendah. Mesti dipegang tinggi untuk operasi normal |
11 |
(SH_CP) Jam |
Ini adalah pin jam yang harus diberikan isyarat jam dari MCU / MPU |
12 |
(ST_CP) Selak |
Pin Latch digunakan untuk mengemas kini data ke pin output. Ia aktif tinggi |
13 |
(OE) Output Diaktifkan |
Output Enable digunakan untuk mematikan output. Mesti ditahan rendah untuk operasi normal |
14 |
(Data) Data Bersiri |
Ini adalah pin ke mana data dihantar, berdasarkan 8 output yang dikendalikan |
15 |
(Q0) Keluaran |
Pin output pertama. |
16 |
Vcc |
Pin ini memberi kuasa kepada IC, biasanya + 5V digunakan. |
Modul RTC DS3231
DS3231 adalah modul RTC. RTC bermaksud Jam Masa Sebenar. Modul ini digunakan untuk mengingat waktu dan tarikh walaupun litar tidak dihidupkan. Ia mempunyai CR2032 sandaran bateri untuk menjalankan modul tanpa adanya daya luaran. Modul ini juga merangkumi sensor suhu. Modul ini boleh digunakan dalam projek tertanam seperti membuat jam digital dengan penunjuk suhu dll. Berikut adalah beberapa projek yang berguna menggunakannya
- Feeder Pet Automatik menggunakan Arduino
- Modul RTC antara muka (DS3231) dengan PIC Microcontroller: Jam Digital
- Modul RTC antara muka (DS3231) dengan MSP430: Jam Digital
- Jam Waktu Sebenar ESP32 menggunakan Modul DS3231
- Jam Dinding Digital pada PCB menggunakan AVR Microcontroller Atmega16 dan DS3231 RTC
Pinout DS3231:
Nama Pin |
Gunakan |
VCC |
Bersambung dengan sumber tenaga positif |
GND |
Bersambung ke tanah |
SDA |
Pin data bersiri (I2C) |
SCL |
Pin jam bersiri (I2C) |
SQW |
Pin output Gelombang Persegi |
32K |
Output pengayun 32K |
Ciri & Spesifikasi:
- RTC mengira detik, minit, jam dan tahun
- Sensor suhu digital dengan ketepatan ± 3ºC
- Daftar untuk trim Penuaan
- Antara muka 400Khz I2C
- Penggunaan kuasa rendah
- Sandaran bateri CR2032 dengan jangka hayat dua hingga tiga tahun
- Voltan Operasi: 2.3 hingga 5.5V
Rajah Litar
Sambungan Litar antara DS3231 RTC & Arduino UNO:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
Sambungan Litar antara 74HC595 IC & Arduino Uno:
74HC595 IC |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (Data) |
4 |
13-OE (Selak) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
Sambungan Litar antara IC 74HC595 & Segmen Tujuh 4-Digit & Arduino UNO:
4-DigitSevenSegment |
IC 74HC595 |
Arduino UNO |
A |
S0 |
- |
B |
S1 |
- |
C |
S2 |
- |
D |
S3 |
- |
E |
S4 |
- |
F |
S5 |
- |
G |
S6 |
- |
D1 |
- |
10 |
D2 |
- |
11 |
D3 |
- |
12 |
D4 |
- |
9 |
Pengaturcaraan Arduino UNO untuk Paparan Tujuh Segmen Multiplexing
Kod lengkap dan video kerja dilampirkan pada akhir tutorial ini. Pada bahagian pengaturcaraan, bagaimana waktu (jam dan minit) diambil dari modul RTC dalam format 24jam dan kemudian ditukarkan menjadi format masing-masing untuk memaparkannya dalam paparan Segmen 4 digit 7 akan dijelaskan.
Untuk menghubungkan modul RTC DS3231 dengan Arduino UNO bas I2C Arduino UNO digunakan. Perpustakaan dipanggil
Dalam konsep ini, jam dan minit diambil pertama dari RTC dan ia digabungkan bersama seperti 0930 (09:30 malam) dan kemudian digit individu dipisahkan seperti ribu, ratus, puluhan, unit dan digit individu ditukar menjadi format binari seperti 0 menjadi 63 (0111111). Kod binari ini dihantar ke shift register dan kemudian dari shift shift ke tujuh segmen, berjaya menampilkan Digit 0 dalam paparan tujuh segmen. Dengan cara ini, empat digit dilipatgandakan dan jam dan minit dipaparkan.
Pada mulanya, perpustakaan yang diperlukan disertakan seperti perpustakaan DS3231 dan perpustakaan Wire (perpustakaan I2C).
#sertakan
Pin ditentukan untuk kawalan tujuh segmen. Alat kawalan ini akan memainkan peranan penting dalam memfleksikan paparan.
#define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2
Pemboleh ubah diisytiharkan untuk menyimpan hasil yang ditukar atau mentah yang diambil dari RTC.
int h; // Pemboleh ubah diisytiharkan untuk jam int m; // Pemboleh ubah diisytiharkan selama ribuan minit ; int beratus-ratus; int berpuluh; unit int; bool h24; PM bool;
Seterusnya objek untuk kelas DS3231 dinyatakan sebagai RTC untuk mempermudah penggunaannya dalam baris selanjutnya.
DS3231 RTC;
Sebagai modul RTC dihubungkan dengan Arduino dengan menggunakan komunikasi I2C. Jadi, wire.begin () digunakan untuk memulakan komunikasi I2C dalam alamat lalai RTC kerana tidak ada modul I2C lain.
Wire.begin ();
The mod pin ditakrifkan, sama ada GPIO akan bertindak sebagai output atau input.
pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (11, OUTPUT); pinMode (12, OUTPUT); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (titik, OUTPUT);
Gelung berjalan tanpa had dan memerlukan masa dalam jam dan minit dari modul RTC DS3231. 'h24' menunjukkan pemboleh ubah format 24jam.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Kemudian jam dan minit digabungkan sebagai satu nombor (contoh jika jam adalah 10 dan min adalah 60 maka nombor adalah 10 * 100 = 1000 + 60 = 1060).
nombor int = h * 100 + m;
The digit individu daripada jumlah diperolehi (contoh 1060- 1 ribu, 0 Hundered, 1 adalah kesepuluh dan 0 adalah digit terakhir). Untuk memisahkan digit, operator modulus digunakan. Contohnya, pada tahun 1060 untuk mendapatkan 1 maka 1060/1000 = 1.06% 10 = 1). Jadi digit berasingan disimpan dalam pemboleh ubah berasingan.
int beribu = bilangan / 1000% 10; int beratus = bilangan / 100% 10; int tens = bilangan / 10% 10; int unit = bilangan% 10;
Selepas itu pernyataan kes beralih untuk setiap digit ditentukan untuk menukarnya menjadi format masing-masing (format binari) dan menghantar melalui shift shift untuk dipaparkan dalam 7-segmen. Sebagai contoh (Untuk 1 digit ia ditukar menjadi 06 (0000 0110)). Sehingga ia dihantar melalui shift dan 1 digit dipaparkan dalam 7-segmen (0 untuk RENDAH, 1 untuk TINGGI).
suis (t) { kes 0: unit = 63; rehat; kes 1: unit = 06; rehat; kes 2: unit = 91; rehat; kes 3: unit = 79; rehat; kes 4: unit = 102; rehat; kes 5: unit = 109; rehat; kes 6: unit = 125; kes 7: unit = 07; rehat; kes 8: unit = 127; rehat; kes 9: unit = 103; rehat; }
Kemudian digit individu dalam format binari dihantar melalui fungsi 'shiftout' dengan MSB terlebih dahulu dan pin digit masing-masing dibuat TINGGI dan pin selak dibuat TINGGI.
digitalWrite (9, RENDAH); digitalWrite (latchPin, RENDAH); shiftOut (dataPin, clockPin, MSBFIRST, beribu-ribu); digitalWrite (latchPin, TINGGI); digitalWrite (9, TINGGI); kelewatan (5);
Ini menyelesaikan kod lengkap. Sebilangan besar penjelasan fungsi diberikan di bahagian komen kod tepat di sebelah garis kod. Kekerapan jam akan menentukan pandangan Masa dan kualiti multiplexing. Jika jam rendah digunakan maka kerlipan dapat dilihat di mana seolah-olah kelajuan jam tinggi maka tidak akan ada kelipan dan waktu yang stabil dapat dilihat.
Perhatikan bahawa untuk mengakses modul RTC, voltan bas I2C harus dijaga. Untuk memberi cadangan atau jika anda mempunyai keraguan, sila komen di bawah.