Daftar Isi:

Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register: 5 Langkah
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register: 5 Langkah

Video: Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register: 5 Langkah

Video: Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register: 5 Langkah
Video: Menyalakan Dot Matrix menggunakan ic shift register 74hc595 dan Arduino 2024, Juli
Anonim
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register
Menggunakan LED Dot Matrix Dengan Arduino dan Shift Register

Siemens DLO7135 Dot matrix LED adalah salah satu bagian luar biasa dari optoelektronika. Ini disebut sebagai Tampilan Cerdas Dot Matrix 5x7 (r) dengan Memori/Dekoder/Driver. Bersamaan dengan memori itu, ia memiliki set tampilan ASCII 96 karakter dengan karakter huruf besar dan kecil, generator karakter dan multiplexer built-in, empat tingkat intensitas cahaya, dan semuanya berjalan pada 5V., dan dengan $16 per pop, itu pasti harus. Saat menghabiskan setengah hari di toko elektronik lokal favorit saya, saya menemukan tempat sampah penuh dengan barang-barang ini seharga $1,50 per potong. Saya meninggalkan toko dengan beberapa. Instruksi ini akan menunjukkan kepada Anda bagaimana menghubungkan ke LED dot matrix ini dan menampilkan karakter menggunakan Arduino berbasis AVR. Jika Anda telah membaca salah satu panduan saya sebelumnya, Anda mungkin mendapatkan gagasan bahwa saya sering mendukung solusi yang paling pelit, dan Anda tidak akan salah, bahkan jika saya gagal mencapai tujuan dari waktu ke waktu.. Oleh karena itu, saya juga akan melangkah lebih jauh dalam instruksi ini dan menunjukkan kepada Anda bagaimana Anda dapat mengurangi jumlah port I/O yang diperlukan untuk menggerakkan LED dot matrix besar ini.

Langkah 1: Dapatkan Barang…

Dapatkan Barang…
Dapatkan Barang…

Untuk proyek kecil yang singkat ini, Anda akan membutuhkan:

  • mikrokontroler berbasis AVR seperti Arduino atau sejenisnya. Instruksi ini mungkin dapat disesuaikan dengan MCU pilihan Anda.
  • LED dot matrix DLO7135 atau lainnya dalam keluarga yang sama
  • register geser 8-bit seperti 74LS164, 74C299, atau 74HC594
  • papan tempat memotong roti
  • kawat hookup, pemotong kawat, dll.

Besi solder tidak diperlukan, meskipun saya menggunakannya nanti; Anda bisa bertahan tanpanya.

Langkah 2: Langsung Terhubung ke Tampilan LED

Langsung Terhubung ke Tampilan LED
Langsung Terhubung ke Tampilan LED
Langsung Terhubung ke Layar LED
Langsung Terhubung ke Layar LED
Langsung Terhubung ke Tampilan LED
Langsung Terhubung ke Tampilan LED

Letakkan daftar kecil bagian Anda dan ambil LED. Letakkan di atas papan tempat memotong roti agak di tengah, mengangkangi alur garis tengah. Bagian pertama dari menghubungkan terjadi semua di sisi kiri LED. Pin #1 terletak di kiri atas seperti yang ditunjukkan oleh segitiga/panah. Saya meletakkan fungsi pin pada gambar untuk referensi Anda saat Anda membaca atau menghubungkan LED Anda.

Sisi kiri

Positif dan Negatif Mulai dari kiri atas, sambungkan Vcc ke 5V. Mungkin ide yang baik untuk tidak menyalakan papan Anda sampai Anda menyelesaikan seluruh sisi kiri; LED bisa terang jika Anda mencoba melihat lubang kecil untuk menyodok kabel. Hubungkan GND kiri bawah ke ground. Lamp Test, Chip Enable dan Write Yang ke-2 dan ke-3 dari atas sebelah kiri adalah Lamp Test dan Chip Enable. Keduanya adalah logika negatif, artinya keduanya diaktifkan ketika berada pada logika 0 bukannya 1. Gambar saya di bawah ini seharusnya memiliki bilah di atasnya, tetapi saya tidak menjelaskannya untuk salah satu dari mereka. Pin LT saat diaktifkan menyalakan setiap titik dalam matriks titik pada kecerahan 1/7. Ini lebih merupakan tes piksel, tetapi hal yang menarik tentang pin LT adalah bahwa pin LT tidak menimpa karakter apa pun yang ada di memori, jadi jika Anda memiliki beberapa dari ini yang dirangkai (mereka memiliki jarak pandang 20 kaki), nyalakan LT dapat membuatnya terlihat seperti kursor. Untuk memastikannya dinonaktifkan, sambungkan ke 5V. Pin CE dan WR juga merupakan logika negatif dan harus diaktifkan agar perangkat pintar ini dapat ditulisi. Anda dapat mengatur pin ini secara mikro dengan port I/O cadangan pada mikrokontroler Anda, tetapi kami tidak akan repot di sini. Cukup sambungkan ke ground agar tetap aktif. Tingkat Kecerahan Ada empat tingkat kecerahan yang dapat diprogram pada keluarga LED DLO:

  • Kosong
  • 1/7 Kecerahan
  • 1/2 Kecerahan
  • Kecerahan Penuh

BL1 HIGH dan BL0 LOW adalah 1/2 kecerahan. Keduanya TINGGI adalah kecerahan penuh. Setel ke apa pun yang Anda suka. Sekali lagi, jika Anda memiliki port I/O cadangan dan itu cukup penting bagi Anda, ini juga dapat dikontrol oleh Arduino Anda. Itu membungkus sisi kiri. Jika Anda membawa daya ke papan Anda, Anda akan melihat lampu LED menyala. Mainkan dengan kontrol kecerahan dan uji lampu untuk membiasakannya, jika Anda penasaran.

Sisi Kanan

Sisi kanan terdiri dari port data seluruhnya. Kanan bawah, pin 8 atau D0 tepatnya, mewakili Bit Terkecil dalam karakter 7-bit. Kanan atas, pin 14 atau D6 mewakili Bit Paling Signifikan. Ini memungkinkan Anda mengetahui urutan untuk mengacak bit Anda saat menulis ke LED. Saat Anda memiliki port input data yang terhubung, temukan tujuh port I/O digital kosong di Arduino atau AVR Anda dan hubungkan. Anda mungkin ingin mengingat port output data pada AVR Anda yang menuju ke port input data mana pada LED. Sekarang Anda siap untuk memasukkan beberapa data ke LED pintar itu. Apakah Anda gemetar karena kegembiraan belum? aku tahu aku…

Langkah 3: Menentukan Karakter yang Akan Ditampilkan

Menentukan Karakter yang Akan Ditampilkan
Menentukan Karakter yang Akan Ditampilkan

Set karakter yang digunakan pada LED CMOS ini adalah ASCII standar Anda mulai dari 0x20 (32 desimal; spasi) dan berakhir pada 0x7F (desimal 127; penghapusan, meskipun diwakili pada LED sebagai grafik kursor). Jadi, membuat LED menampilkan karakter tidak lebih dari mendorong logika 1 atau 0 pada pin output data Anda, biasanya diikuti oleh pulsa WR, tetapi saya tidak akan melakukannya untuk latihan ini. Jadi, Anda telah menuliskan atau ingat pin apa yang masuk ke port apa, kan? Saya memilih PD[2.7] dan PB0 (pin digital 2 hingga 8 dalam bahasa Arduino). Saya biasanya tidak menyarankan menggunakan PD[0..1] karena saya mendedikasikannya untuk komunikasi serial saya kembali ke kotak FreeBSD, dan Arduino et al. petakan pin tersebut ke saluran komunikasi USB FTDI mereka, dan meskipun "mereka" SAY pin 0 dan 1 akan berfungsi jika Anda tidak menginisialisasi komunikasi serial, saya tidak pernah dapat menggunakan pin tersebut sebagai I/O digital biasa. Bahkan, saya menghabiskan dua hari mencoba untuk men-debug masalah ketika saya mencoba menggunakan PD0 dan PD1 dan menemukan bahwa mereka selalu TINGGI. *mengangkat bahu* Mungkin akan lebih baik untuk memiliki semacam input eksternal, seperti mungkin keypad, sakelar pushwheel atau thumbwheel, atau bahkan mungkin input dari terminal (ArduinoTerm saya belum siap untuk prime time dulu…). Pilihan ada padamu. Untuk saat ini, saya hanya akan mengilustrasikan cara mendapatkan kode untuk mendapatkan karakter yang Anda inginkan ke LED. Ada file zip untuk diunduh termasuk kode sumber dan Makefile dan ada juga film pendek yang menunjukkan LED mencetak set karakternya. Maaf untuk kualitas video yang jelek. Kode di bawah ini mencetak string "Selamat datang di Instruksi saya!" kemudian menelusuri seluruh rangkaian karakter yang didukung oleh LED.

DDRD = 0xFF; // OutputDDRB = (1<<DDB0); char msg = "Selamat datang di Instruksi saya!";uint8_t i;for (;;){ for(i=0;i<27; i++) { Print2LED(msg); _delay_ms(150); } untuk(i=0x20; i<0x80; i++) { Print2LED(i); _delay_ms(150); } Print2LED(&apos*&apos);}Output port ditangani dalam fungsi Print2Led()

voidPrint2LED(uint8_t i){ PORTD = (i << 2); jika (i & 0b01000000) PORTB = (1<

Kode dan Makefile disertakan dalam file zip di bawah ini.

Langkah 4: Menghemat Port I/O Dengan Shift Register

Hemat Port I/O Dengan Shift Register
Hemat Port I/O Dengan Shift Register
Hemat Port I/O Dengan Shift Register
Hemat Port I/O Dengan Shift Register
Hemat Port I/O Dengan Shift Register
Hemat Port I/O Dengan Shift Register

Jadi sekarang mikrokontroler kami dapat mengirim data ke LED dot matrix tetapi menggunakan delapan port I/O. Itu tidak termasuk menggunakan ATtiny dalam paket DIP 8-pin, dan bahkan dengan Arduino yang lebih baru menggunakan ATmega328p yang memiliki banyak port I/O untuk satu LED. Namun, kita bisa menyiasatinya dengan menggunakan IC yang disebut register geser. Sesaat untuk "memindahkan" persneling… Sebuah register geser dapat dipahami dengan baik dengan memikirkan dua kata yang membentuk namanya: "shift" dan "register." Pergeseran kata mengacu pada bagaimana data bergerak melalui register. Di sini (seperti pada Arduino dan mikrokontroler kami, pada umumnya) register adalah lokasi yang menyimpan data. Ini dilakukan dengan mengimplementasikan rantai linier dari rangkaian logika digital yang disebut "flip flop" yang memiliki dua status stabil yang dapat diwakili oleh 1 atau 0. Jadi, dengan menyatukan delapan flip flop Anda memiliki perangkat yang mampu menahan dan mewakili byte 8-bit. Sama seperti ada beberapa jenis flip flop, dan beberapa variasi pada tema register geser (pikirkan counter atas/bawah dan counter Johnson), ada juga beberapa jenis register geser berdasarkan bagaimana data terkunci ke dalam register dan bagaimana data itu dikeluarkan. Berdasarkan ini, pertimbangkan jenis register geser berikut:

  • Serial In / Parallel Out (SIPO)
  • Serial Masuk / Serial Keluar (SISO)
  • Paralel Masuk/Serial Keluar (PISO)
  • Paralel Masuk / Paralel Keluar (PIPO)

Dua catatan tersebut adalah SIPO dan PISO. Register SIPO mengambil data secara serial, yaitu, satu demi satu, menggeser bit input sebelumnya ke flip flop berikutnya dan mengirimkan data keluar pada semua input sekaligus. Ini membuat konverter serial ke paralel yang bagus. Register geser PISO, sebaliknya, memiliki input paralel, sehingga semua bit dimasukkan sekaligus, tetapi dikeluarkan satu per satu. Dan Anda dapat menebaknya, ini membuat konverter paralel ke serial yang bagus. Register geser yang ingin kita gunakan untuk mengurangi jumlah pin I/O akan memungkinkan kita untuk mengambil 8 pin IO yang kita gunakan sebelumnya dan menguranginya menjadi satu, atau mungkin hanya beberapa, mengingat kita mungkin perlu mengontrol cara kita memasukkan bit. Oleh karena itu, register geser yang akan kita gunakan adalah Serial In/Parallel Out. Hubungkan register geser antara LED dan Arduino Menggunakan register geser itu mudah. Bagian tersulit hanyalah memvisualisasikan pin keluaran data dan bagaimana digit biner akan berakhir di IC, dan bagaimana akhirnya akan muncul di LED. Luangkan waktu sejenak untuk merencanakan ini. 1. Pasang 5V ke pin 14 (kanan atas) dan ambil pin 7 (kiri bawah) ke ground.2. Register geser memiliki dua input serial tetapi kami hanya akan menggunakan satu, jadi sambungkan pin dua ke 5V3. Kami tidak akan menggunakan pin yang jelas (digunakan untuk menghilangkan semua output) jadi biarkan mengambang atau serang ke 5V4. Hubungkan satu port IO digital ke pin salah satu register geser. Ini adalah input serial pin.5. Hubungkan satu port IO digital ke pin 8 (kanan bawah). Ini adalah jam pin.6. Hubungkan jalur data Anda dari Q0 ke Q6. Kami hanya menggunakan 7 bit karena set karakter ASCII hanya menggunakan tujuh bit. Saya menggunakan PD2 untuk mengeluarkan data serial saya dan PD3 untuk sinyal jam. Untuk pin data, saya menghubungkan Q0 ke D6 pada LED dan melanjutkan seperti itu (Q1 ke D5, Q2 ke D4, dll). Karena kita mengirim data secara serial, kita harus memeriksa representasi biner dari setiap karakter yang ingin kita kirim, melihat 1 dan 0, dan mengeluarkan setiap bit pada baris serial. Saya telah menyertakan versi kedua dari sumber dotmatrixled.c bersama dengan Makefile di bawah ini. Ini menggilir rangkaian karakter dan menampilkan semua karakter genap (jika aneh berpikir bahwa sebuah huruf bisa ganjil atau genap, pikirkan tentang representasi biner sejenak). Cobalah mencari cara untuk membuatnya berputar dengan menampilkan semua karakter aneh. Anda dapat bereksperimen lebih lanjut dengan koneksi antara register geser, LED dot matrix, dan Arduino Anda. Ada beberapa fitur kontrol antara LED dan register yang memungkinkan Anda untuk menyempurnakan kontrol Anda tentang kapan data ditampilkan. Jadi….kita beralih dari keharusan menggunakan delapan port I/O menjadi hanya menggunakan dua!

Langkah 5: Ringkasan

Ringkasan
Ringkasan
Ringkasan
Ringkasan

Dalam instruksi ini, saya telah menyajikan LED dot matrix DLO7135 dan cara membuatnya bekerja. Saya telah membahas lebih lanjut bagaimana mengurangi jumlah port I/O yang diperlukan dari delapan menjadi hanya dua menggunakan register geser. LED dot matrix DLO7135 dapat dirangkai menjadi tenda yang sangat menarik dan menarik. Saya harap Anda bersenang-senang membaca instruksi ini! Jika ada perbaikan yang menurut Anda dapat saya buat atau saran yang ingin Anda berikan untuk ini atau salah satu ible saya, saya senang mendengarnya! Selamat AVR!

Direkomendasikan: