Bagaimana Menghubungkan Register Geser Ke Arduino

Daftar Isi:

Bagaimana Menghubungkan Register Geser Ke Arduino
Bagaimana Menghubungkan Register Geser Ke Arduino

Video: Bagaimana Menghubungkan Register Geser Ke Arduino

Video: Bagaimana Menghubungkan Register Geser Ke Arduino
Video: 32-битный регистр сдвига 2024, November
Anonim

Di salah satu artikel sebelumnya, kami telah menyinggung secara singkat tentang penggunaan register geser, khususnya, 74HC595. Mari kita lihat lebih dekat kemampuan dan prosedur untuk bekerja dengan sirkuit mikro ini.

Shift Register 74HC595
Shift Register 74HC595

Diperlukan

  • -Arduino;
  • - register geser 74HC595;
  • - kabel penghubung.

instruksi

Langkah 1

Shift register 74HC595 dan sejenisnya digunakan sebagai perangkat untuk mengubah data serial menjadi paralel, dan juga dapat digunakan sebagai "latch" untuk data, menahan status yang ditransfer.

Pinout (pinout) ditunjukkan pada gambar di sebelah kiri. Tujuan mereka adalah sebagai berikut.

Q0… Q7 - output data paralel;

GND - tanah (0 V);

Q7 '- keluaran data serial;

^ MR - reset master (aktif rendah);

SHcp - masukan jam register geser;

STcp - input pulsa jam "latch";

^ OE - aktifkan keluaran (aktif rendah);

Ds - masukan data serial;

Vcc - catu daya +5 V.

Secara struktural, sirkuit mikro dibuat dalam beberapa jenis kasing; Saya akan menggunakan yang ditunjukkan pada gambar di sebelah kanan - output - karena lebih mudah digunakan dengan papan tempat memotong roti.

Pergeseran tampilan register dan pinout
Pergeseran tampilan register dan pinout

Langkah 2

Izinkan saya mengingat secara singkat antarmuka serial SPI, yang akan kita gunakan untuk mentransfer data ke register geser.

SPI adalah antarmuka serial empat-kawat dua arah di mana master dan budak berpartisipasi. Master dalam kasus kami akan menjadi Arduino, budak akan mendaftar 74HC595.

Lingkungan pengembangan untuk Arduino memiliki perpustakaan bawaan untuk bekerja pada antarmuka SPI. Saat menerapkannya, kesimpulan digunakan yang ditandai pada gambar:

SCLK - keluaran jam SPI;

MOSI - data dari master ke slave;

MISO - data dari budak ke master;

SS - pemilihan budak.

Pin SPI standar papan Arduino
Pin SPI standar papan Arduino

Langkah 3

Mari kita susun rangkaian seperti pada gambar.

Saya juga akan menghubungkan penganalisis logika ke semua pin dari sirkuit mikro register geser. Dengan bantuan itu, kita akan melihat apa yang terjadi di tingkat fisik, sinyal apa yang menuju ke mana, dan kita akan mencari tahu apa artinya. Seharusnya terlihat seperti foto.

Diagram pengkabelan untuk register geser 74HC595 ke Arduino
Diagram pengkabelan untuk register geser 74HC595 ke Arduino

Langkah 4

Mari kita menulis sketsa seperti ini dan memuatnya ke dalam memori Arduino.

Variabel PIN_SPI_SS adalah konstanta standar internal yang sesuai dengan pin "10" Arduino ketika digunakan sebagai master antarmuka SPI yang kita gunakan di sini. Pada prinsipnya, kita juga bisa menggunakan pin digital lainnya di Arduino; maka kita harus mendeklarasikannya dan mengatur mode operasinya.

Dengan memberi makan pin ini LOW, kami mengaktifkan register geser kami untuk mengirim / menerima. Setelah transmisi, kami menaikkan tegangan ke TINGGI lagi, dan pertukaran berakhir.

Sebuah sketsa untuk mendemonstrasikan pengoperasian register geser
Sebuah sketsa untuk mendemonstrasikan pengoperasian register geser

Langkah 5

Mari kita ubah rangkaian kita menjadi kerja dan lihat apa yang ditunjukkan oleh penganalisis logika. Pandangan umum dari diagram waktu ditunjukkan pada gambar.

Garis putus-putus biru menunjukkan 4 garis SPI, garis putus-putus merah menunjukkan 8 saluran data paralel dari register geser.

Titik A pada skala waktu adalah saat angka "210" dipindahkan ke register geser, B adalah saat angka "0" ditulis, C adalah siklus berulang dari awal.

Seperti yang Anda lihat, dari A ke B - 10,03 milidetik, dan dari B ke C - 90,12 milidetik, hampir seperti yang kami minta dalam sketsa. Tambahan kecil dalam 0, 03 dan 0, 12 ms adalah waktu untuk mentransfer data serial dari Arduino, jadi kami tidak memiliki tepat 10 dan 90 ms di sini.

Diagram waktu pertukaran Arduino dan register geser 74HC595
Diagram waktu pertukaran Arduino dan register geser 74HC595

Langkah 6

Mari kita lihat lebih dekat bagian A.

Di bagian paling atas adalah pulsa panjang yang dengannya Arduino memulai transmisi pada jalur SPI-ENABLE - pemilihan budak. Pada saat ini, pulsa clock SPI-CLOCK mulai dihasilkan (baris kedua dari atas), 8 buah (untuk mentransfer 1 byte).

Baris berikutnya dari atas adalah SPI-MOSI - data yang kami transfer dari Arduino ke register geser. Ini adalah nomor kami "210" dalam biner - "11010010".

Setelah transfer selesai, pada akhir pulsa SPI-ENABLE, kita melihat bahwa register geser telah menetapkan nilai yang sama pada 8 kakinya. Saya telah menyoroti ini dengan garis putus-putus biru dan memberi label nilai untuk kejelasan.

Mengatur nomor 210 pada bus paralel melalui SPI
Mengatur nomor 210 pada bus paralel melalui SPI

Langkah 7

Sekarang mari kita mengalihkan perhatian kita ke bagian B.

Sekali lagi, semuanya dimulai dengan memilih budak dan menghasilkan 8 pulsa clock.

Data pada jalur SPI-MOSI sekarang menjadi "0". Artinya, pada saat ini kita menulis angka "0" ke dalam register.

Tetapi sampai transfer selesai, register menyimpan nilai "11010010". Ini adalah output ke pin paralel Q0.. Q7, dan output ketika ada pulsa clock di baris dari output paralel Q7 'ke jalur SPI-MISO, yang kita lihat di sini.

Mengatur angka 0 pada bus paralel melalui SPI
Mengatur angka 0 pada bus paralel melalui SPI

Langkah 8

Dengan demikian, kami telah mempelajari secara rinci masalah pertukaran informasi antara perangkat master, yaitu Arduino, dan register geser 74HC595. Kami belajar bagaimana menghubungkan register geser, menulis data ke dalamnya dan membaca data darinya.

Direkomendasikan: