İçindekiler:

Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma: 5 Adım
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma: 5 Adım

Video: Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma: 5 Adım

Video: Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma: 5 Adım
Video: Mikroişlemciler 6. Ders 2024, Kasım
Anonim
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma
Arduino ve Shift Register ile Nokta Vuruşlu LED Kullanma

Siemens DLO7135 Nokta vuruşlu LED, optoelektroniğin muhteşem bir parçasıdır. Bellek/Dekoder/Sürücü ile 5x7 Nokta Vuruşlu Akıllı Ekran (r) olarak faturalandırılır. Bu hafızanın yanı sıra, büyük ve küçük harfli 96 karakterlik bir ASCII ekran seti, yerleşik bir karakter üreteci ve çoklayıcı, dört ışık yoğunluğu seviyesi var ve hepsi 5V'de çalışıyor., ve pop başına 16 dolardan kesinlikle olmalı. Günün yarısını en sevdiğim yerel elektronik mağazasında geçirirken, parça başı 1,50 dolara bunlarla dolu bir kutu buldum. Birkaç tanesiyle mağazadan ayrıldım. Bu talimat, size bu nokta vuruşlu LED'lere nasıl bağlanacağınızı ve AVR tabanlı bir Arduino kullanarak karakterleri nasıl görüntüleyeceğinizi gösterecektir. Önceki rehberlerimden herhangi birini okuduysanız, benim genellikle en cimri çözümden yana olduğum fikrine kapılabilirsiniz ve zaman zaman hedefi tutturamasam bile yanılmazsınız.. Bu nedenle, bu talimatta bir adım daha atacağım ve size bu büyük, kornalı nokta vuruşlu LED'leri sürmek için gereken G/Ç bağlantı noktalarının sayısını nasıl azaltabileceğinizi göstereceğim.

Adım 1: Malları Alın…

Malları Al…
Malları Al…

Bu kısa küçük proje için ihtiyacınız olacak:

  • Arduino veya ilklerinden herhangi biri gibi AVR tabanlı bir mikrodenetleyici. Bu talimatlar muhtemelen seçtiğiniz MCU'nuza uyarlanabilir.
  • aynı aileden bir DLO7135 nokta vuruşlu LED veya diğer
  • 74LS164, 74C299 veya 74HC594 gibi 8 bitlik bir kaydırma yazmacı
  • ekmek tahtası
  • bağlantı teli, tel kesiciler vb.

Daha sonra kullanmama rağmen havyaya gerek yok; olmadan geçebilirsin.

Adım 2: Doğrudan LED Ekrana Bağlayın

Doğrudan LED Ekrana Bağlayın
Doğrudan LED Ekrana Bağlayın
Doğrudan LED Ekrana Bağlayın
Doğrudan LED Ekrana Bağlayın
Doğrudan LED Ekrana Bağlayın
Doğrudan LED Ekrana Bağlayın

Küçük parça listenizi düzenleyin ve LED'i alın. Orta hat oluğunun üzerinde olacak şekilde ortalanmış bir şekilde devre tahtasına yerleştirin. Bağlantının ilk kısmı LED'in sol tarafında gerçekleşir. Pin #1, üçgen/ok ile gösterildiği gibi sol üstte bulunur. LED'inizi okurken veya bağlarken referans olması için pin fonksiyonlarını bir resmin üzerine koydum.

Sol taraf

Pozitif ve Negatif Sol üstten başlayarak Vcc'yi 5V'a bağlayın. Sol tarafın tamamını tamamlayana kadar anakartınıza güç vermemek iyi bir fikir olabilir; Kablolarda küçük delikler görmeye çalışıyorsanız LED parlak olabilir. Sol alttaki GND'yi toprağa bağlayın. Lamba Testi, Çip Etkinleştirme ve Yazma Soldan üstten 2. ve 3. Lamba Testi ve Çip Etkinleştirme'dir. Bunların her ikisi de negatif mantıktır, yani 1 yerine mantıksal 0'da olduklarında etkinleştirilirler. Etkinleştirildiğinde LT pimi, nokta matrisindeki her noktayı 1/7 parlaklıkta yakar. Bu daha çok bir piksel testidir, ancak LT pimi ile ilgili ilginç olan şey, bellekteki herhangi bir karakterin üzerine yazmamasıdır, bu nedenle bunlardan birkaçını bir araya getirdiyseniz (20 ft görüş mesafesine sahiptirler), LT'yi vurursunuz. bir imleç gibi görünmesini sağlayabilir. Devre dışı olduğundan emin olmak için 5V'a bağlayın. CE ve WR pinleri de negatif mantıktır ve bu akıllı cihazın yazılabilmesi için etkinleştirilmesi gerekir. Mikrodenetleyicinizdeki yedek I/O portları ile bu pinleri mikro yönetebilirsiniz, ama biz burada uğraşmayacağız. Etkin olmalarını sağlamak için onları toprağa bağlamanız yeterlidir. Parlaklık Düzeyleri DLO LED ailesinde programlanabilir dört parlaklık düzeyi vardır:

  • Boşluk
  • 1/7 Parlaklık
  • 1/2 Parlaklık
  • Tam Parlaklık

BL1 HIGH ve BL0 LOW, 1/2 parlaklıktır. Her ikisi de YÜKSEK tam parlaklıktır. Ne istersen ona ayarla. Yine, eğer yedek G/Ç portlarınız varsa ve bu sizin için yeterince önemliyse, bu da Arduino'nuz tarafından kontrol edilebilir. Bu, sol tarafı tamamlar. Kartınıza güç getirirseniz, LED'in yandığını görmelisiniz. Merak ediyorsanız, aşina olmak için parlaklık kontrolleri ve lamba testi ile oynayın.

Sağ taraf

Sağ taraf tamamen veri bağlantı noktalarından oluşur. Sağ alt, pin 8 veya D0, kesin olarak, 7 bitlik karakterdeki En Az Önemli Bit'i temsil eder. Sağ üst, pim 14 veya D6, En Önemli Bit'i temsil eder. Bu, LED'e yazarken bitlerinizi hangi sırayla karıştıracağınızı bilmenizi sağlar. Veri giriş bağlantı noktalarını bağladığınızda, Arduino veya AVR'nizde yedi boş dijital G/Ç bağlantı noktası bulun ve bunları bağlayın. Muhtemelen AVR'nizdeki hangi veri çıkış portunun LED üzerindeki hangi veri giriş portuna gittiğini hatırlamak isteyeceksiniz. Artık o akıllı LED'e biraz veri göndermeye hazırsınız. Hâlâ heyecandan titriyor musun? Biliyorum, oyleyim…

Adım 3: Görüntülenecek Karakteri Belirleme

Görüntülenecek Karakteri Belirtme
Görüntülenecek Karakteri Belirtme

Bu CMOS LED'de kullanılan karakter seti, 0x20'de (ondalık 32; boşluk) başlayan ve 0x7F'de (ondalık 127; bir silme, LED'de bir imleç grafiği olarak gösterilmiş olmasına rağmen) biten standart ASCII'nizdir.. Bu nedenle, LED'in bir karakter göstermesine sahip olmak, veri çıkış pinlerinize bir mantık 1 veya 0'ı itmekten başka bir şey gerektirmez, ardından genellikle bir WR darbesi gelir, ancak ben bu alıştırma için bundan bahsediyorum. Yani, yazdınız veya hangi pinlerin hangi portlara gittiğini hatırladın, değil mi? PD[2..7] ve PB0'ı seçtim (Arduino konuşmasında 2'den 8'e kadar olan dijital pinler). Normalde PD[0..1] kullanmanızı önermem çünkü onu seri iletişimimi bir FreeBSD kutusuna adadım ve Arduino's et al. bu pinleri FTDI USB iletişim kanallarına eşleyin ve seri iletişimi başlatmazsanız "onlar" SAY pinleri 0 ve 1 çalışacak olsa da, bu pinleri hiçbir zaman normal dijital I/O olarak kullanamadım. Aslında, PD0 ve PD1'i kullanmaya çalıştığımda ve her zaman YÜKSEK olduklarını keşfettiğimde iki günümü bir problemde hata ayıklamaya çalışarak geçirdim. *omuz silkme* Muhtemelen bir tuş takımı, bir itme çarkı veya ayar düğmesi anahtarı veya hatta bir terminalden giriş gibi bir tür harici girişe sahip olmak iyi olurdu (ArduinoTerm'im henüz prime time için hazır değil…). Seçim senin. Şimdilik, istediğiniz karakteri LED'e almak için kodun nasıl alınacağını göstereceğim. Kaynak kodu ve Makefile dahil olmak üzere indirilebilecek bir zip dosyası ve ayrıca LED'in karakter setini yazdırdığını gösteren kısa bir film var. Videonun berbat kalitesi için özür dilerim. Aşağıdaki kod, "Eğitim Tabloma Hoş Geldiniz!" dizesini yazdırır. ardından LED'in desteklediği tüm karakter seti arasında geçiş yapar.

DDRD = 0xFF; // ÇıktıDDRB = (1<<DDB0); char msg = "Instructable'ıma Hoş Geldiniz!";uint8_t i;for (;;){ for(i=0;i<27; i++) { Print2LED(msg); _delay_ms(150); } for(i=0x20; i<0x80; i++) { Print2LED(i); _delay_ms(150); } Print2LED(&apos*&apos);}Port çıktısı Print2Led() işlevinde halledilir

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

Kod ve Makefile, aşağıdaki bir zip dosyasına dahil edilmiştir.

Adım 4: Shift Register ile G/Ç Bağlantı Noktalarını Koruyun

Shift Register ile G/Ç Bağlantı Noktalarını Koruyun
Shift Register ile G/Ç Bağlantı Noktalarını Koruyun
Shift Register ile G/Ç Bağlantı Noktalarını Koruyun
Shift Register ile G/Ç Bağlantı Noktalarını Koruyun
Shift Register ile G/Ç Bağlantı Noktalarını Koruyun
Shift Register ile G/Ç Bağlantı Noktalarını Koruyun

Artık mikro denetleyicimiz nokta vuruşlu LED'e veri gönderebilir, ancak sekiz G/Ç bağlantı noktası kullanır. Bu, 8 pinli bir DIP paketinde bir ATtiny kullanmayı ve hatta bir LED için çok sayıda G/Ç bağlantı noktası olan ATmega328p'yi destekleyen daha yeni bir Arduino ile bile hariçtir. Bununla birlikte, shift register adı verilen bir IC kullanarak bunun üstesinden gelebiliriz. Vites değiştirmek için bir an… Bir shift register en iyi adını oluşturan iki kelimeyi düşünerek anlaşılabilir: "shift" ve "register". Kaydırma kelimesi, verilerin kayıt boyunca nasıl hareket ettiğini ifade eder. Burada (genel olarak Arduino ve mikrodenetleyicilerimizde olduğu gibi) bir kayıt, verileri tutan bir konumdur. Bunu, 1 veya 0 ile temsil edilebilen iki kararlı duruma sahip "flip floplar" adı verilen dijital mantık devrelerinin lineer zincirini uygulayarak yapar. Böylece, sekiz flip flop'u bir araya getirerek, tutma yeteneğine sahip bir cihaza sahip olursunuz. ve 8 bitlik bir baytı temsil eder. Tıpkı birkaç flip flop türü ve kaydırma yazmaçları temasında çeşitli varyasyonlar olduğu gibi (yukarı/aşağı sayaçları ve Johnson sayaçlarını düşünün), ayrıca verilerin nasıl olduğuna bağlı olarak birkaç kaydırma kaydı türü vardır. kayıt defterine takılır ve bu verilerin nasıl çıktısı alınır. Buna dayanarak, aşağıdaki kaydırmalı yazmaç türlerini göz önünde bulundurun:

  • Seri Giriş / Paralel Çıkış (SIPO)
  • Seri Giriş / Seri Çıkış (SISO)
  • Paralel Giriş/ Seri Çıkış (PISO)
  • Paralel Giriş / Paralel Çıkış (PIPO)

İki not SIPO ve PISO'dur. SIPO yazmaçları verileri seri olarak alır, yani bir bit ardına, önceki giriş bitini bir sonraki flip flop'a kaydırır ve verileri bir kerede tüm girişlere gönderir. Bu güzel bir seri-paralel dönüştürücü yapar. PISO kaydırma yazmaçları ise bunun tersine paralel girişlere sahiptir, bu nedenle tüm bitler bir kerede girilir, ancak birer birer çıkarılır. Ve tahmin ettiniz, bu seri dönüştürücüye güzel bir paralellik sağlıyor. I/O pinlerinin sayısını azaltmak için kullanmak istediğimiz shift register, daha önce kullandığımız 8 IO pinini almamıza ve nasıl giriş yapacağımızı kontrol etmemiz gerekebileceğini düşünürsek, onları bir veya belki sadece bir çifte indirmemize izin verir. bitler. Bu nedenle, kullanacağımız kaydırma yazmacı bir Seri Giriş / Paralel Çıkıştır. LED ve Arduino arasındaki kaydırma yazmacının bağlantısını yapın Bir kaydırma yazmacı kullanmak kolaydır. En zor kısım, veri çıkış pinlerini ve ikili rakamların IC'de nasıl biteceğini ve sonunda LED'de nasıl görüneceğini görselleştirmek. Bunu planlamak için bir dakikanızı ayırın. 1. 5V'yi pim 14'e (sağ üst) bağlayın ve pim 7'yi (sol alt) yere indirin.2. Kaydırmalı yazmacın iki seri girişi var ama biz sadece bir tane kullanacağız, bu yüzden pin 2'yi 5V3'e bağlayın. Net pini kullanmayacağız (tüm çıkışları sıfırlamak için kullanılır), bu yüzden onu serbest bırakın veya 5V4'e saldırın. Kaydırma yazmacından birini sabitlemek için bir dijital IO bağlantı noktası bağlayın. Bu seri giriş pini 5. Bir dijital IO bağlantı noktasını pim 8'e (sağ altta) bağlayın. Bu saat pimi 6. Veri hatlarınızı Q0'dan Q6'ya bağlayın. ASCII karakter kümesi yalnızca yedi bit kullandığı için yalnızca 7 bit kullanıyoruz. Seri verilerimin çıktısını almak için PD2'yi ve saat sinyali için PD3'ü kullandım. Data pinleri için LED üzerinde Q0'ı D6'ya bağladım ve bu şekilde devam ettim (Q1'den D5'e, Q2'den D4'e vb.). Verileri seri olarak gönderdiğimiz için, göndermek istediğimiz her karakterin ikili gösterimini incelememiz, 1'lere ve 0'lara bakmamız ve her bitin seri hatta çıktısını almamız gerekecek. Aşağıdaki Makefile ile birlikte dotmatrixled.c kaynağının ikinci bir sürümünü ekledim. Karakter kümesinde dolaşır ve tüm çift karakterleri görüntüler (bir harfin tek veya çift olabileceğini düşünmek garipse, bir an için ikili gösterimi düşünün). Tüm garip karakterleri göstererek döngüyü nasıl yapacağınızı bulmaya çalışın. Kaydırma yazmacı, nokta vuruşlu LED ve Arduino'nuz arasındaki bağlantıları daha fazla deneyebilirsiniz. LED ve kayıt cihazı arasında, verilerin ne zaman görüntülendiğine ilişkin kontrolünüzü ince ayar yapmanıza olanak tanıyan birkaç kontrol özelliği vardır. Yani…. Sekiz G/Ç bağlantı noktası kullanmak zorunda kalmadan yalnızca iki bağlantı noktası kullanmaya geçtik!

Adım 5: Özet

Özet
Özet
Özet
Özet

Bu talimatta, DLO7135 nokta vuruşlu LED'i ve nasıl çalışacağını sundum. Ayrıca, bir kaydırma yazmacı kullanarak gerekli G/Ç bağlantı noktası sayısının sekizden yalnızca ikiye nasıl düşürüleceğini tartıştım. DLO7135 nokta vuruşlu LED, çok göz alıcı ve ilginç çerçeveler oluşturmak için birbirine dizilebilir. Umarım bu talimatı okurken eğlenmişsinizdir! Yapabileceğimi düşündüğünüz herhangi bir iyileştirme veya bu ya da kutsallarımdan herhangi biri hakkında vermek istediğiniz öneriler varsa, bunları duyduğuma sevindim! AVR'niz kutlu olsun!

Önerilen: