Isi kandungan:

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

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

Video: Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register: 5 Langkah
Video: BELAJAR 59 PEMROGRAMAN ARDUINO - Pengetahuan Penting Tentang Shift Register SN74HC595 2024, Julai
Anonim
Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register
Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register
Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register
Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register
Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register
Menggunakan Dot Matrix LED Dengan Arduino dan Shift Register

Siemens DLO7135 Dot matrix LED adalah salah satu bahagian optoelektronik yang menakjubkan. Ia disertakan sebagai 5x7 Dot Matrix Intelligent Display (r) dengan Memory / Decoder / Driver. Bersama dengan memori itu, ia mempunyai set paparan ASCII 96 aksara dengan aksara huruf besar dan kecil, penjana aksara terbina dalam dan multiplexer, empat tahap intensiti cahaya, dan semuanya berjalan pada 5V. Itu banyak yang perlu ditangguhkan, dan dengan harga $ 16, semestinya. Semasa menghabiskan setengah hari di kedai elektronik tempatan kegemaran saya, saya menjumpai tong sampah penuh dengan harga $ 1.50 sehelai. Saya meninggalkan kedai dengan beberapa. Instruksional ini akan menunjukkan kepada anda cara menyambung ke LED dot matrix dan watak paparan ini menggunakan Arduino yang berasaskan AVR. Sekiranya anda pernah membaca mana-mana panduan saya sebelumnya, anda mungkin mendapat idea bahawa saya sering memihak kepada penyelesaian yang paling pelik, dan anda tidak akan salah, walaupun saya gagal mencapai matlamat dari semasa ke semasa. Oleh itu, saya juga akan melangkah lebih jauh dalam arahan ini dan menunjukkan kepada anda bagaimana anda dapat mengurangkan bilangan port I / O yang diperlukan untuk menggerakkan LED matriks dot matrix yang besar ini.

Langkah 1: Dapatkan Barang …

Dapatkan Barang …
Dapatkan Barang …

Untuk projek kecil pendek ini, anda memerlukan:

  • mikrokontroler berasaskan AVR seperti Arduino atau sejenisnya. Arahan ini mungkin dapat disesuaikan dengan MCU pilihan anda.
  • LED DL matriks DLO7135 atau yang lain dalam keluarga yang sama
  • daftar peralihan 8-bit seperti 74LS164, 74C299, atau 74HC594
  • papan roti
  • wayar cangkuk, pemotong wayar, dll.

Pateri tidak diperlukan, walaupun saya menggunakannya kemudian; anda boleh mendapatkannya tanpanya.

Langkah 2: Sambungkan terus ke Paparan LED

Sambungkan terus ke Paparan LED
Sambungkan terus ke Paparan LED
Sambungkan terus ke Paparan LED
Sambungkan terus ke Paparan LED
Sambungkan terus ke Paparan LED
Sambungkan terus ke Paparan LED

Susun senarai bahagian kecil anda dan ambil LED. Letakkan di atas papan roti yang berpusat sedikit, merangkumi alur garis tengah. Bahagian pertama penyambungan berlaku di sebelah kiri LED. Pin # 1 terletak di kiri atas seperti yang ditunjukkan oleh segitiga / anak panah. Saya meletakkan fungsi pin pada gambar untuk rujukan anda semasa anda membaca atau menyambungkan LED anda.

Bahagian Kiri

Positif dan Negatif Bermula di kiri atas, sambungkan Vcc ke 5V. Mungkin idea yang baik untuk tidak mengaktifkan papan anda sehingga anda menyelesaikan keseluruhan bahagian kiri; LED boleh menjadi terang jika anda cuba melihat lubang kecil untuk mencucuk wayar. Sambungkan GND kiri bawah ke tanah. Uji Lampu, Aktifkan Cip dan Tulis Yang ke-2 dan ke-3 dari atas di sebelah kiri adalah Ujian Lampu dan Aktifkan Cip. Kedua-duanya adalah logik negatif, yang bermaksud ia diaktifkan ketika berada pada logik 0 dan bukannya 1. Gambar saya di bawah ini mesti mempunyai bar di atasnya, tetapi saya tidak memberi penjelasan untuk itu. Pin LT apabila diaktifkan menyala setiap titik dalam matriks titik pada kecerahan 1/7. Ini lebih daripada ujian piksel, tetapi yang menarik tentang pin LT adalah ia tidak menimpa watak yang ada di dalam memori, jadi jika anda mempunyai beberapa dari ini bersama-sama (mereka mempunyai jarak tontonan 20 kaki), menerobos LT boleh menjadikannya seperti kursor. Untuk memastikan ia dilumpuhkan, sambungkan ke 5V. Pin CE dan WR juga logik negatif dan diperlukan untuk membolehkan peranti pintar ini ditulis. Anda boleh menguruskan pin ini dengan port I / O ganti pada mikrokontroler anda, tetapi kami tidak akan mengganggu di sini. Sambungkan sahaja ke tanah untuk memastikannya diaktifkan. Tahap Kecerahan Terdapat empat tahap 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. Kedua-dua TINGGI penuh kecerahan. Tetapkan pada apa sahaja yang anda suka. Sekali lagi, jika anda mempunyai port I / O yang tersisa dan cukup penting bagi anda, ini juga dapat dikendalikan oleh Arduino anda. Itu membungkus sebelah kiri. Sekiranya anda membawa kuasa ke papan anda, anda akan melihat lampu LED menyala. Main dengan kawalan kecerahan dan ujian lampu untuk membiasakannya, jika anda ingin tahu.

Bahagian Yang Betul

Bahagian kanan terdiri daripada port data sepenuhnya. Kanan bawah, pin 8 atau D0 tepat, mewakili Bit Paling Kurang dalam watak 7-bit. Bahagian atas kanan, pin 14 atau D6 mewakili Bit Paling Penting. Ini membolehkan anda mengetahui pesanan untuk mengubah bit semasa menulis ke LED. Apabila anda memasang kabel input data, cari tujuh port I / O digital kosong di Arduino atau AVR anda dan sambungkannya. Anda mungkin ingin mengingat port output data pada AVR mana yang menuju ke port input data pada LED. Sekarang anda sudah bersedia untuk memasukkan beberapa data ke LED pintar itu. Adakah anda gemetar dengan kegembiraan? Saya tahu saya …

Langkah 3: Menentukan Karakter yang Akan Dipaparkan

Menentukan Karakter yang Akan Dipaparkan
Menentukan Karakter yang Akan Dipaparkan

Kumpulan watak yang digunakan pada LED CMOS ini adalah ASCII run-of-the-mill anda bermula pada 0x20 (perpuluhan 32; ruang) dan berakhir pada 0x7F (perpuluhan 127; penghapusan, walaupun ditunjukkan pada LED sebagai grafik kursor). Oleh itu, mempunyai paparan LED watak tidak lebih daripada menekan logik 1 atau 0 pada pin output data anda, biasanya diikuti oleh nadi WR, tetapi saya sudah menyatakannya untuk latihan ini. Oleh itu, anda telah menuliskan atau ingat apa pin pergi ke port apa, kan? Saya memilih PD [2..7] dan PB0 (pin digital 2 hingga 8 dalam Arduino-speak). Saya biasanya tidak mencadangkan penggunaan PD [0..1] kerana saya mendedikasikannya untuk komunikasi bersiri saya kembali ke kotak FreeBSD, dan Arduino's et al. petakan pin tersebut ke saluran komunikasi USB FTDI mereka, dan walaupun "mereka" KATAKAN pin 0 dan 1 akan berfungsi jika anda tidak memulakan komunikasi bersiri, saya tidak pernah dapat menggunakan pin tersebut sebagai I / O digital biasa. Sebenarnya, saya menghabiskan dua hari untuk menyelesaikan masalah semasa saya cuba menggunakan PD0 dan PD1 dan mendapati bahawa mereka selalu TINGGI. * mengangkat bahu * Mungkin ada baiknya kita mempunyai beberapa input luaran, seperti mungkin pad kekunci, tombol tekan atau suis ibu jari, atau mungkin juga input dari terminal (ArduinoTerm saya belum siap untuk waktu perdana …). Pilihan adalah milik anda. Buat masa ini, saya hanya akan menggambarkan bagaimana mendapatkan kod untuk mendapatkan watak yang anda mahukan ke LED. Terdapat zipfile untuk dimuat turun termasuk kod sumber dan Makefile dan ada juga filem pendek yang menunjukkan LED mencetak set wataknya. Maaf untuk kualiti video yang jelek. Kod di bawah ini mencetak rentetan "Selamat datang di instruksiku!" kemudian kitarkan keseluruhan set watak yang disokong oleh LED.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Selamat datang di Instructable 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 dijaga dalam fungsi Print2Led ()

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

Kod dan Makefile disertakan dalam fail zip di bawah.

Langkah 4: Memulihara Pelabuhan I / O Dengan Daftar Shift

Memulihara Pelabuhan I / O Dengan Daftar Shift
Memulihara Pelabuhan I / O Dengan Daftar Shift
Memulihara Pelabuhan I / O Dengan Daftar Shift
Memulihara Pelabuhan I / O Dengan Daftar Shift
Memulihara Pelabuhan I / O Dengan Daftar Shift
Memulihara Pelabuhan I / O Dengan Daftar Shift

Jadi sekarang mikrokontroler kami dapat menghantar data ke LED dot matrix tetapi menggunakan lapan port I / O. Itu tidak termasuk menggunakan ATtiny dalam pakej DIP 8-pin, dan bahkan dengan Arduino yang lebih baru yang menggunakan ATmega328p yang banyak port I / O untuk satu LED. Kita dapat mengatasi ini, bagaimanapun, dengan menggunakan IC yang disebut shift register. Sebentar untuk menukar "gear" … Daftar shift dapat difahami dengan baik dengan memikirkan dua kata yang membentuk namanya: "shift" dan "register." Pergeseran kata merujuk kepada bagaimana data bergerak melalui daftar. Di sini (seperti di Arduino dan mikrokontroler kami, secara umum) daftar adalah lokasi yang menyimpan data. Ia melakukannya dengan menerapkan rangkaian litar litar logik digital yang disebut "flip flop" yang mempunyai dua keadaan stabil yang dapat diwakili oleh 1 atau 0. Oleh itu, dengan meletakkan lapan flip flop bersama-sama, anda mempunyai peranti yang mampu menahan dan mewakili byte 8-bit. Sama seperti terdapat beberapa jenis flip flop, dan beberapa variasi pada tema register shift (kaunter berfikir atas / bawah dan kaunter Johnson), terdapat juga beberapa jenis register shift berdasarkan bagaimana data dimasukkan ke dalam daftar dan bagaimana data itu dikeluarkan. Berdasarkan ini, pertimbangkan jenis daftar shift berikut:

  • Serial In / Parallel Out (SIPO)
  • Serial In / Serial Out (SISO)
  • Selari Dalam / Keluar Bersiri (PISO)
  • Selari Dalam / Keluar Sejajar (PIPO)

Dua nota adalah SIPO dan PISO. Daftar SIPO mengambil data secara bersiri, iaitu satu demi satu, mengalihkan bit input sebelumnya ke flip flop seterusnya dan mengirimkan data pada semua input sekaligus. Ini menjadikan penukar siri ke selari yang bagus. Pendaftar shift PISO, sebaliknya, mempunyai input selari, jadi semua bit dimasukkan sekaligus, tetapi output satu per satu. Dan anda dapat menebaknya, ini menjadikannya sejajar dengan penukar bersiri. Daftar pergeseran yang ingin kita gunakan untuk mengurangkan bilangan pin I / O akan membolehkan kita mengambil 8 pin IO yang kita gunakan sebelumnya dan mengurangkannya menjadi satu, atau mungkin hanya sepasang, memandangkan kita mungkin perlu mengawal bagaimana kita memasukkan bit. Oleh itu, register shift yang akan kita gunakan adalah Serial In / Parallel Out. Wire register shift antara LED dan Arduino Menggunakan register shift adalah mudah. Bahagian yang paling sukar ialah memvisualisasikan pin output data dan bagaimana digit binari akan berakhir di IC, dan bagaimana akhirnya mereka akan muncul di LED. Luangkan masa untuk merancang perkara ini. 1. Pasang 5V ke pin 14 (kanan atas) dan tarik pin 7 (kiri bawah) ke tanah.2. Register shift mempunyai dua input bersiri tetapi kami hanya akan menggunakan satu, jadi sambungkan pin dua hingga 5V3. Kami tidak akan menggunakan pin yang jelas (digunakan untuk memusatkan semua output) jadi biarkan ia melayang atau serang ke 5V4. Sambungkan satu port IO digital untuk menyematkan salah satu shift shift. Ini adalah pin input bersiri.5. Sambungkan satu port IO digital ke pin 8 (kanan bawah). Ini adalah pin jam.6. Sambungkan talian data anda dari Q0 hingga Q6. Kami hanya menggunakan 7 bit kerana set watak ASCII hanya menggunakan tujuh bit. Saya menggunakan PD2 untuk mengeluarkan data bersiri dan PD3 untuk isyarat jam. Untuk pin data, saya menyambungkan Q0 ke D6 pada LED dan meneruskannya (Q1 hingga D5, Q2 hingga D4, dll). Oleh kerana kami menghantar data secara bersiri, kami harus memeriksa perwakilan binari setiap watak yang ingin kami kirimkan, melihat 1 dan 0, dan mengeluarkan setiap bit pada baris bersiri. Saya telah memasukkan versi kedua sumber dotmatrixled.c bersama dengan Makefile di bawah. Ia berpusing melalui set watak dan memaparkan semua watak genap (jika pelik memikirkan bahawa surat itu mungkin ganjil atau genap, fikirkan perwakilan binari sebentar). Cuba fikirkan cara membuatnya berputar dengan menampilkan semua watak ganjil. Anda boleh bereksperimen dengan hubungan antara shift shift, dot matrix LED, dan Arduino anda. Terdapat beberapa ciri kawalan antara LED dan daftar yang membolehkan anda menyesuaikan kawalan anda mengenai kapan data dipaparkan. Jadi…. Kita tidak perlu menggunakan lapan port I / O untuk hanya menggunakan dua!

Langkah 5: Ringkasan

Ringkasan
Ringkasan
Ringkasan
Ringkasan

Dalam arahan ini, saya telah membentangkan DLO7135 dot matrix LED dan cara membuatnya berfungsi. Saya telah membincangkan bagaimana untuk mengurangkan bilangan port I / O yang diperlukan dari lapan menjadi hanya dua menggunakan shift register. LED DL matriks DLO7135 dapat digantung bersama untuk membuat tatanan yang sangat menarik dan menarik. Saya harap anda seronok membaca arahan ini! Sekiranya ada penambahbaikan yang anda fikir boleh saya buat atau cadangan yang ingin anda berikan mengenai perkara ini atau mana-mana iblis saya, saya senang mendengarnya! Selamat AVR'ing!

Disyorkan: