Πίνακας περιεχομένων:

LED Matrix χρησιμοποιώντας Shift Registers: 7 βήματα (με εικόνες)
LED Matrix χρησιμοποιώντας Shift Registers: 7 βήματα (με εικόνες)

Βίντεο: LED Matrix χρησιμοποιώντας Shift Registers: 7 βήματα (με εικόνες)

Βίντεο: LED Matrix χρησιμοποιώντας Shift Registers: 7 βήματα (με εικόνες)
Βίντεο: Excel Τραπέζια περιστροφής από το μηδέν σε έναν εμπειρογνώμονα για μισή ώρα + ταμπλό! 2024, Ιούλιος
Anonim
LED Matrix χρησιμοποιώντας Shift Registers
LED Matrix χρησιμοποιώντας Shift Registers
LED Matrix χρησιμοποιώντας Shift Registers
LED Matrix χρησιμοποιώντας Shift Registers
LED Matrix χρησιμοποιώντας Shift Registers
LED Matrix χρησιμοποιώντας Shift Registers

Αυτό το διδακτικό πρέπει να είναι μια πληρέστερη εξήγηση από άλλες διαθέσιμες στο διαδίκτυο. Αξίζει να σημειωθεί ότι αυτό θα παράσχει περισσότερες εξηγήσεις υλικού από ό, τι είναι διαθέσιμο στο LED Marquee που καθορίζεται από το led555.

Γκολ

Αυτό το διδακτικό παρουσιάζει τις έννοιες που σχετίζονται με τους καταχωρητές βάρδια και τους οδηγούς υψηλής πλευράς. Με την απεικόνιση αυτών των εννοιών με μια μήτρα LED 8x8, ελπίζω να σας παρέχω τα εργαλεία που απαιτούνται για την προσαρμογή και επέκταση στο μέγεθος και τη διάταξη που απαιτεί το έργο σας.

Εμπειρία και Δεξιότητες

Θα βαθμολογούσα αυτό το έργο ως μέτριας δυσκολίας:

  • Εάν έχετε ήδη εμπειρία στον προγραμματισμό μικροελεγκτών και εργάζεστε με LED, αυτό το έργο θα είναι αρκετά εύκολο για εσάς να ολοκληρώσετε και να κλιμακώσετε σε μεγαλύτερες συστοιχίες φώτων.
  • Εάν μόλις ξεκινάτε με μικροελεγκτές και έχετε ανάψει ένα ή δύο LED, θα πρέπει να μπορείτε να ολοκληρώσετε αυτό το έργο με κάποια βοήθεια από τον φίλο μας google.
  • Εάν έχετε μικρή ή καθόλου εμπειρία με μικροελεγκτές ή προγραμματισμό, αυτό είναι πιθανότατα πέρα από αυτό που πρέπει να κάνετε. Δοκιμάστε μερικά άλλα έργα για αρχάριους και επιστρέψτε όταν έχετε περισσότερη εμπειρία στη συγγραφή προγραμμάτων για μικροελεγκτές.

Αποποίηση ευθυνών και πίστωση

Πρώτον, δεν είμαι ηλεκτρολόγος μηχανικός. Αν δείτε κάτι που δεν πάει καλά ή δεν είναι η καλύτερη πρακτική, ενημερώστε με και θα κάνω τη διόρθωση. Κάντε το με δική σας ευθύνη! Πρέπει να γνωρίζετε τι κάνετε ή μπορεί να προκαλέσετε ζημιά στον υπολογιστή σας, στον μικροελεγκτή σας, ακόμη και στον εαυτό σας. Έχω μάθει πολλά από το διαδίκτυο, ιδιαίτερα από τα φόρουμ στη διεύθυνση: https://www.avrfreaks.net ένα σύνολο γραμματοσειρών που συνοδεύει τη γενική βιβλιοθήκη ks0108. Δείτε το εδώ:

Βήμα 1: Μέρη

Λίστα μερών

Γενικά μέρη

Για να φτιάξετε ένα πλέγμα LED 8x8 και να τα ελέγξετε θα χρειαστείτε:

  • 64 LED της επιλογής σας
  • 8 αντιστάσεις για τα LED
  • 1 Shift register για τις στήλες
  • 1 πίνακας προγράμματος οδήγησης για τις γραμμές
  • 8 Αντιστάσεις για την αλλαγή συστοιχίας προγράμματος οδήγησης
  • 1 μικροελεγκτής
  • 1 πηγή ρολογιού για μικροελεγκτή
  • 1 σανίδα πρωτοτύπων
  • 1 τροφοδοτικό
  • Σύρμα σύνδεσης

Συγκεκριμένα ανταλλακτικά που χρησιμοποιούνται εδώ

Για αυτό το διδακτικό χρησιμοποίησα τα ακόλουθα:

  • 64 πράσινες λυχνίες LED (τμήμα ποντικιού #604-WP7113GD)
  • 8 αντιστάσεις 1/2 watt 220ohm για τις λυχνίες LED (τμήμα ποντικιού #660-CFS1/4CT52R221J)
  • 1 οδηγός LED HEF4794 με μηχανισμό αλλαγής ταχυτήτων (τμήμα ποντικιού #771-HEF4794BPN)
  • 1 mic2981 High-Voltage High-Current Source Source Array (Digikey part #576-1158-ND)
  • 8 3.3kohm 1/4 watt αντιστάσεις για την αλλαγή συστοιχίας οδηγού (Radio Shack part #271-1328)
  • 1 μικροελεγκτής Atmel ATmega8 (Mouser part #556-ATMEGA8-16PU)
  • 1 κρύσταλλο 12MHz για πηγή ρολογιού μικροελεγκτή (μέρος ποντικιού #815-AB-12-B2)
  • 1 πίνακας πρωτοτύπων 2200 οπών (Radio Shack part #276-147)
  • Μετατρεπόμενο τροφοδοτικό ATX: Δείτε αυτό το Instructable
  • Στερεό καλώδιο σύνδεσης 22-awg (Radio Shack part #278-1221)
  • Χωρίς κόλλημα ψωμιού (Radio Shack μέρος #276-169 (δεν είναι πλέον διαθέσιμο, δοκιμάστε: 276-002)
  • AVR Dragon (Mouser part #556-ATAVRDRAGON)
  • Dragon Rider 500 της Ecros Technologies: Δείτε αυτό το εγχειρίδιο

Σημειώσεις σχετικά με τα ανταλλακτικά

Προγράμματα οδήγησης γραμμής και στήλης: Probσως το πιο δύσκολο μέρος αυτού του έργου είναι η επιλογή προγραμμάτων οδήγησης γραμμής και στήλης. Πρώτον, δεν νομίζω ότι ένας τυπικός καταχωρητής βάρδιας 74HC595 είναι καλή ιδέα εδώ επειδή δεν μπορούν να χειριστούν το είδος του ρεύματος που θέλουμε να στείλουμε μέσω των LED. Αυτός είναι ο λόγος για τον οποίο επέλεξα το πρόγραμμα οδήγησης HEF4794 καθώς μπορεί εύκολα να βυθίσει το ρεύμα όταν είναι ενεργοποιημένα και τα 8 led που βρίσκονται σε μία σειρά. Ο καταχωρητής αλλαγής βρίσκεται στην χαμηλή πλευρά (η γείωση των led). Θα χρειαστούμε ένα πρόγραμμα οδήγησης γραμμής που μπορεί να παράγει αρκετό ρεύμα για να συμβολοσειρήσει πολλές στήλες μαζί. Το mic2981 μπορεί να τροφοδοτήσει έως και 500mA. Το μόνο άλλο μέρος που έχω διαπιστώσει ότι εκτελεί αυτήν την εργασία είναι το UDN2981 (digikey part #620-1120-ND) το οποίο είναι το ίδιο μέρος από διαφορετικό κατασκευαστή. Παρακαλώ στείλτε μου ένα μήνυμα αν γνωρίζετε άλλα προγράμματα οδήγησης υψηλής ποιότητας που θα λειτουργούσαν καλά σε αυτήν την εφαρμογή. LED Matrix: Αυτός ο πίνακας είναι 8x8 επειδή τα προγράμματα οδήγησης γραμμών και στηλών έχουν το καθένα 8 ακίδες. Ένας μεγαλύτερος πίνακας LED μπορεί να δημιουργηθεί με συμβολοσειρά πολλαπλών πινάκων μαζί και θα συζητηθεί στο βήμα "αρθρωτές έννοιες". Εάν θέλετε μια μεγάλη σειρά, παραγγείλετε όλα τα απαραίτητα εξαρτήματα ταυτόχρονα. Διατίθενται μήτρες LED 8x8, 5x7 και 5x8 σε ένα βολικό πακέτο. Αυτά θα πρέπει να είναι εύκολο να αντικατασταθούν με μια μήτρα diy. Το Ebay είναι μια καλή πηγή για αυτά. Το Mouser διαθέτει διαθέσιμες μονάδες 5x7, όπως το μέρος #604-TA12-11GWA. Χρησιμοποίησα φθηνά πράσινα LED επειδή απλώς παίζω και διασκεδάζω. Ξοδεύοντας περισσότερα για LED υψηλής φωτεινότητας και υψηλής απόδοσης μπορεί να σας επιτρέψει να δημιουργήσετε μια πολύ πιο εντυπωσιακή οθόνη… αλλά αυτό είναι αρκετά καλό για μένα! Υλικό ελέγχου: Η μήτρα ελέγχεται από έναν μικροελεγκτή Atmel AVR. Θα χρειαστείτε έναν προγραμματιστή για αυτό. Επειδή κάνω πρωτότυπο, χρησιμοποιώ το Dragon Rider 500 για το οποίο έχω γράψει οδηγίες συναρμολόγησης και χρήσης. Αυτό είναι ένα εύκολο εργαλείο για την πρωτοτυπία και το συνιστώ ανεπιφύλακτα.

Βήμα 2: Η μήτρα

Η μήτρα
Η μήτρα
Η μήτρα
Η μήτρα
Η μήτρα
Η μήτρα

Θα φτιάξω τη δική μου μήτρα LED για αυτό το έργο χρησιμοποιώντας led 5mm και έναν πίνακα πρωτοτύπων από το Radio Shack. Πρέπει να σημειωθεί ότι μπορείτε να αγοράσετε μονάδες led 8x8 dot matrix από διάφορες πηγές, συμπεριλαμβανομένου του ebay. Θα πρέπει να λειτουργούν μια χαρά με αυτό το διδακτικό.

Σκέψεις κατασκευής

Ευθυγράμμιση Τα LEDS πρέπει να ευθυγραμμιστούν ώστε να έχουν την ίδια κατεύθυνση στην ίδια γωνία. Βρήκα ότι η πιο εύκολη επιλογή για μένα ήταν να βάλω το σώμα του LED στο πλυντήριο και να το κρατήσω εκεί με ένα μικρό κομμάτι πλεξιγκλάς και ένα σφιγκτήρα. Έβαλα μερικές λυχνίες LED στη θέση τους μερικές ίντσες μακριά από τη σειρά που δούλευα για να βεβαιωθώ ότι το πλεξιγκλάς ήταν παράλληλο με τον πίνακα πρωτοτύπων. Σειρές και στήλες Πρέπει να έχουμε μια κοινή σύνδεση για κάθε σειρά καθώς και για κάθε στήλη. Λόγω της επιλογής οδηγού γραμμής και στήλης, πρέπει να έχουμε την άνοδο (θετικό καλώδιο της λυχνίας LED) συνδεδεμένη με τη σειρά και την κάθοδο (αρνητικό καλώδιο της λυχνίας LED) συνδεδεμένη με στήλη. Σύρματα ελέγχουΓια αυτό το πρωτότυπο χρησιμοποιώ καλώδιο σύνδεσης στερεού πυρήνα (μονός αγωγός). Θα είναι πολύ εύκολο να διασυνδεθείτε με ένα breadboard χωρίς συγκόλληση. Μη διστάσετε να χρησιμοποιήσετε διαφορετικό τύπο σύνδεσης που ταιριάζει στο έργο σας.

Δημιουργία της μήτρας

1. Τοποθετήστε την πρώτη στήλη LEDS στον πίνακα πρωτοτύπων. Ελέγξτε ξανά ότι η πολικότητά σας για κάθε LED είναι σωστή. Αυτό θα είναι πολύ δύσκολο να διορθωθεί εάν το συνειδητοποιήσετε αργότερα. Συγκολλήστε και τα δύο καλώδια του LED στην πλακέτα. Ελέγξτε για να βεβαιωθείτε ότι είναι ευθυγραμμισμένα σωστά (όχι σε περίεργες γωνίες) και αποσυνδέστε τους αγωγούς καθόδου. Βεβαιωθείτε ότι δεν κόβετε το καλώδιο ανόδου, θα το χρειαστούμε αργότερα, οπότε αφήστε το προς τα πάνω. Αφαιρέστε τη μόνωση από ένα κομμάτι καλωδίου συμπαγούς πυρήνα. Συγκολλήστε αυτό το κομμάτι σύρματος σε κάθε κάθοδο ακριβώς στο επίπεδο του σκάφους.

  • Το έβαλα σε κάθε άκρο και μετά επέστρεψα και πρόσθεσα λίγη συγκόλληση σε κάθε διασταύρωση.
  • Αυτό το καλώδιο πρέπει να περάσει από το τελευταίο σας LED για εύκολη διασύνδεση όταν προσθέτουμε καλώδια ελέγχου.

5. Επαναλάβετε τα μέρη 1-4 μέχρι να έχετε όλα τα LED στη θέση τους και να κολλήσουν όλα τα δίαυλα στηλών.6. Για να δημιουργήσετε ένα δίαυλο σειράς, λυγίστε πολλά από τα καλώδια ανόδου σε γωνία 90 μοιρών, ώστε να αγγίξουν τα άλλα καλώδια ανόδου στην ίδια σειρά.

  • Παρακάτω υπάρχουν αναλυτικές εικόνες για αυτό.
  • Προσέξτε να μην αφήσετε αυτά να έρθουν σε επαφή με τα λεωφορεία της στήλης, δημιουργώντας βραχυκύκλωμα.

7. Συγκολλήστε τα καλώδια σε κάθε διασταύρωση και αφαιρέστε τα πλεονάζοντα καλώδια ανόδου.

Αφήστε την τελευταία άνοδο να κολλήσει πέρα από το τελικό LED. Αυτό θα χρησιμοποιηθεί για τη σύνδεση των καλωδίων ελέγχου του προγράμματος οδήγησης σειράς

8. Επαναλάβετε τα μέρη 6 & 7 μέχρι να συγκολληθούν όλα τα λεωφορεία γραμμών.9. Συνδέστε καλώδια ελέγχου.

  • Χρησιμοποίησα κόκκινο καλώδιο συμπαγούς πυρήνα για τις σειρές και μαύρο για τις στήλες.
  • Συνδέστε ένα καλώδιο για κάθε στήλη και ένα για κάθε σειρά. Αυτό μπορεί εύκολα να γίνει στο τέλος κάθε λεωφορείου.

Σπουδαίος

Αυτή η μήτρα LED δεν έχει καμία αντίσταση περιορισμού ρεύματος. Εάν το δοκιμάσετε χωρίς αντιστάσεις, πιθανότατα θα κάψετε τα LED σας και όλη αυτή η εργασία θα είναι για το τίποτα.

Βήμα 3: Το υλικό ελέγχου

Το Υλικό Ελέγχου
Το Υλικό Ελέγχου
Το Υλικό Ελέγχου
Το Υλικό Ελέγχου

Πρέπει να ελέγξουμε τις στήλες και τις σειρές της μήτρας LED μας. Η μήτρα έχει κατασκευαστεί έτσι ώστε οι άνοδοι (πλευρά τάσης της λυχνίας LED) να αποτελούν τις σειρές και οι καθόδους (η γείωση της λυχνίας LED) να αποτελούν τις στήλες. Αυτό σημαίνει ότι το πρόγραμμα οδήγησης σειράς πρέπει να παρέχει πηγή ρεύματος και το πρόγραμμα οδήγησης στήλης πρέπει να το βυθίσει. Για να εξοικονομήσω καρφίτσες, χρησιμοποιώ έναν καταχωρητή αλλαγής για τον έλεγχο των στηλών. Με αυτόν τον τρόπο μπορώ να ελέγξω σχεδόν απεριόριστο αριθμό στηλών με μόλις τέσσερις ακίδες μικροελεγκτή. Είναι δυνατή η χρήση μόνο τριών εάν ο πείρος Enable Output είναι συνδεδεμένος απευθείας στην τάση. Έχω επιλέξει το πρόγραμμα οδήγησης LED HEF4794 με μητρώο αλλαγής ταχυτήτων. Αυτή είναι μια καλύτερη επιλογή από ένα τυπικό 74HC595, καθώς μπορεί εύκολα να βυθίσει το ρεύμα όταν και τα 8 LED είναι αναμμένα ταυτόχρονα. Στην ψηλή πλευρά (τρέχουσα πηγή για τις σειρές) χρησιμοποιώ ένα mic2981. Το σχηματικό δείχνει ένα UDN2981, πιστεύω ότι αυτά τα δύο είναι εναλλάξιμα. Αυτό το πρόγραμμα οδήγησης μπορεί να τροφοδοτήσει έως και 500mA ρεύματος. Επειδή οδηγούμε μόνο 1 σειρά τη φορά, αυτό δίνει πολλές δυνατότητες επέκτασης, έως και 33 στήλες για αυτό το τσιπ (περισσότερα για αυτό στο βήμα "αρθρωτές έννοιες").

Δημιουργία υλικού ελέγχου

Για αυτό το διδακτικό, μόλις έκανα ψωμί σε αυτό το κύκλωμα. Για μια πιο μόνιμη λύση, θα θέλετε είτε να χαράξετε τη δική σας πλακέτα κυκλώματος είτε να χρησιμοποιήσετε πίνακα πρωτοτύπων. Οδηγός σειράς

  • Τοποθετήστε το mic2981 (ή UDN2981) στη σανίδα ψωμιού
  • Συνδέστε τον πείρο 9 στην τάση (αυτό προκαλεί σύγχυση στο σχηματικό)
  • Συνδέστε το Pin 10 στο Ground (Αυτό προκαλεί σύγχυση στο σχηματικό σχήμα)
  • τοποθετήστε αντιστάσεις 3k3 που συνδέονται με τις ακίδες 1-8
  • Συνδεθείτε από τη θύρα D του ATmega8 (PD0-PD8) στις 8 αντιστάσεις
  • Συνδέστε τα καλώδια ελέγχου 8 σειρών της μήτρας LED στους ακροδέκτες 11-18 (σημειώστε ότι έχω συνδέσει τη χαμηλότερη σειρά LED στην καρφίτσα 18 και την υψηλότερη σειρά στην καρφίτσα 11).

2. Πρόγραμμα οδήγησης στήλης

  • Τοποθετήστε το hef4794 στο breadboard
  • Συνδέστε τον ακροδέκτη 16 στην τάση
  • Συνδέστε τον πείρο 8 στη γείωση
  • Συνδέστε αντιστάσεις 220 ohm στις ακίδες 4-7 και 11-14.
  • Συνδέστε τα καλώδια ελέγχου 8 στηλών από τη μήτρα LED στις 8 αντιστάσεις που μόλις συνδέσατε.
  • Συνδέστε το Pin1 (Latch) στο PC0 του ATmega8
  • Συνδέστε το Pin2 (Δεδομένα) στο PC1 του ATmega8
  • Συνδέστε το Pin3 (Ρολόι) στο PC2 του ATmega8
  • Συνδέστε το Pin15 (Enable Output) στο PC3 του ATmega8

3. Κρύσταλλο ρολογιού

Συνδέστε έναν κρύσταλλο 12MHz και πυκνωτές φορτίου όπως φαίνεται στο σχήμα

4. ISP

Συνδέστε την κεφαλίδα προγραμματισμού όπως φαίνεται στο σχηματικό σχήμα

5. Πυκνωτής φιλτραρίσματος και αντίσταση έλξης

  • Είναι καλύτερο να φιλτράρετε την τάση που παρέχεται στο ATmega8. Χρησιμοποιήστε πυκνωτή 0.1uf μεταξύ των ακίδων 7 & 8 του ATmega8
  • Ο πείρος επαναφοράς δεν πρέπει να παραμείνει αιωρούμενος, καθώς μπορεί να προκαλέσει τυχαίες επαναφορές. Χρησιμοποιήστε μια αντίσταση για να τη συνδέσετε στην τάση, οτιδήποτε περίπου 1k πρέπει να είναι καλό. Έχω χρησιμοποιήσει μια αντίσταση 10k στο σχηματικό.

6. Βεβαιωθείτε ότι χρησιμοποιείτε ρυθμιζόμενη ισχύ +5v. Εναπόκειται σε εσάς να σχεδιάσετε τον ρυθμιστή.

Βήμα 4: Λογισμικό

Το κόλπο

Ναι, όπως όλα, υπάρχει ένα κόλπο. Το κόλπο είναι ότι δεν υπάρχουν ποτέ περισσότερα από 8 LED που φωτίζονται ταυτόχρονα. Για να λειτουργήσει σωστά, χρειάζεται λίγο έξυπνος προγραμματισμός. Η ιδέα που επέλεξα είναι να χρησιμοποιήσω μια διακοπή χρονοδιακόπτη. Δείτε πώς λειτουργεί η διακοπή οθόνης στα απλά αγγλικά:

  • Ο χρονοδιακόπτης μετράει μέχρι ένα συγκεκριμένο σημείο, όταν φτάσει η ρουτίνα της υπηρεσίας διακοπής εκτελείται.
  • Αυτή η ρουτίνα αποφασίζει ποια σειρά είναι η επόμενη που θα εμφανιστεί.
  • Οι πληροφορίες για την επόμενη σειρά αναζητούνται από ένα buffer και μετατοπίζονται στο πρόγραμμα οδήγησης της στήλης (αυτές οι πληροφορίες δεν είναι "κλειδωμένες", ώστε να μην εμφανίζονται ακόμη).
  • Το πρόγραμμα οδήγησης σειράς είναι απενεργοποιημένο, δεν ανάβουν προς το παρόν LED.
  • Το πρόγραμμα οδήγησης στήλης είναι "κλειδωμένο" στις πληροφορίες που μετακινήσαμε πριν από δύο βήματα τις τρέχουσες πληροφορίες που πρέπει να εμφανιστούν.
  • Στη συνέχεια, το πρόγραμμα οδήγησης γραμμής παρέχει ρεύμα στη νέα σειρά που εμφανίζουμε.
  • Η ρουτίνα της υπηρεσίας διακοπής τελειώνει και το πρόγραμμα επιστρέφει στην κανονική ροή μέχρι την επόμενη διακοπή.

Αυτό συμβαίνει πολύ γρήγορα. Η διακοπή ρίχνεται κάθε 1 mSec. Αυτό σημαίνει ότι ανανεώνουμε ολόκληρη την οθόνη περίπου μία φορά κάθε 8 mSec. Αυτό σημαίνει ρυθμό εμφάνισης περίπου 125Hz. Υπάρχει κάποια ανησυχία σχετικά με τη φωτεινότητα, επειδή ουσιαστικά λειτουργούμε τα LED σε κύκλο λειτουργίας 1/8 (είναι απενεργοποιημένα 7/8 του χρόνου). Στην περίπτωσή μου λαμβάνω μια επαρκώς φωτεινή οθόνη χωρίς ορατό αναβοσβήσιμο. Η πλήρης οθόνη LED απεικονίζεται σε έναν πίνακα. Ενδιάμεσα στα διαλείμματα, ο πίνακας μπορεί να αλλάξει (προσέξτε την ατομικότητα) και θα εμφανιστεί στην οθόνη κατά την επόμενη διακοπή. Οι ιδιαιτερότητες της εγγραφής κώδικα για τον μικροελεγκτή AVR και του τρόπου γραφής κώδικα για συνομιλία με τους καταχωρητές βάρδιας είναι πέρα από το πεδίο εφαρμογής από αυτό το διδακτικό. Έχω συμπεριλάβει τον πηγαίο κώδικα (γραμμένο σε C και μεταγλωττισμένο με AVR-GCC) καθώς και το εξάγωνο αρχείο για άμεσο προγραμματισμό. Έχω σχολιάσει όλο τον κώδικα, ώστε να μπορείτε να το χρησιμοποιήσετε για να ξεκαθαρίσετε τυχόν ερωτήσεις σχετικά με τον τρόπο εισαγωγής δεδομένων στον καταχωρητή βάρδιας και τον τρόπο λειτουργίας της ανανέωσης της σειράς. Λάβετε υπόψη ότι χρησιμοποιώ ένα αρχείο γραμματοσειράς που συνοδεύει ks0108 καθολική βιβλιοθήκη C. Μπορείτε να βρείτε αυτήν τη βιβλιοθήκη εδώ:

Shift Registers: Πώς να

Αποφάσισα να προσθέσω λίγο για τον τρόπο προγραμματισμού με καταχωρητές βάρδιας. Ελπίζω ότι αυτό ξεκαθαρίζει τα πράγματα για όσους δεν έχουν συνεργαστεί μαζί τους πριν. Τι κάνουν Τα Shift Registers λαμβάνουν ένα σήμα από ένα καλώδιο και εξάγουν αυτές τις πληροφορίες σε πολλές διαφορετικές ακίδες. Σε αυτήν την περίπτωση, υπάρχει ένα καλώδιο δεδομένων που λαμβάνει τα δεδομένα και 8 ακίδες που ελέγχονται ανάλογα με τα δεδομένα που έχουν ληφθεί. Για να γίνουν τα πράγματα καλύτερα, υπάρχει μια έξοδος για κάθε καταχωρητή αλλαγής που μπορεί να συνδεθεί με τον πείρο εισόδου ενός άλλου καταχωρητή βάρδιας. Αυτό ονομάζεται cascading και καθιστά τη δυνατότητα επέκτασης σχεδόν απεριόριστη προοπτική. Οι καταχωρητές Control PinsShift έχουν 4 ακίδες ελέγχου:

  • Latch - Αυτός ο πείρος ενημερώνει τον καταχωρητή αλλαγής όταν είναι ώρα να μεταβείτε σε δεδομένα που εισαγάγατε πρόσφατα
  • Δεδομένα - Το 1 και το 0 λένε στον καταχωρητή shift ποιες ακίδες πρέπει να ενεργοποιηθούν λαμβάνονται σε αυτόν τον πείρο.
  • Ρολόι - Αυτός είναι ένας παλμός που αποστέλλεται από τον μικροελεγκτή που λέει στον καταχωρητή αλλαγής να πραγματοποιήσει ανάγνωση δεδομένων και να μεταβεί στο επόμενο βήμα της διαδικασίας επικοινωνίας
  • Ενεργοποίηση εξόδου - Αυτός είναι ένας διακόπτης ενεργοποίησης/απενεργοποίησης, Υψηλός = Ενεργός, Χαμηλός = Απενεργοποιημένος

Κάνοντας την προσφορά σας: Ακολουθεί μια πορεία συντριβής στη λειτουργία των παραπάνω ακίδων ελέγχου: Βήμα 1: Ορίστε το Latch, Data και Clock low

Η ρύθμιση του Latch low λέει στο shift shift που πρόκειται να του γράψουμε

Βήμα 2: Ορίστε την καρφίτσα δεδομένων στη λογική τιμή που θέλετε να στείλετε στον καταχωρητή Shift Βήμα 3: Ορίστε την καρφίτσα ρολογιού ψηλά, λέγοντας στο Shift Register να διαβάσει την τρέχουσα τιμή καρφίτσας δεδομένων

Όλες οι άλλες τιμές που υπάρχουν αυτήν τη στιγμή στο Shift Register θα μετακινηθούν κατά 1 θέση, δημιουργώντας χώρο για την τρέχουσα λογική τιμή του pin pin

Βήμα 4: Ρυθμίστε το pin Clock Low και επαναλάβετε τα βήματα 2 και 3 μέχρι να αποσταλούν όλα τα δεδομένα στον καταχωρητή αλλαγής ταχυτήτων.

Η καρφίτσα ρολογιού πρέπει να ρυθμιστεί χαμηλά πριν αλλάξετε στην επόμενη τιμή δεδομένων. Η εναλλαγή αυτού του πείρου μεταξύ υψηλού και χαμηλού είναι αυτό που δημιουργεί τον "παλμό ρολογιού" που πρέπει να γνωρίζει ο καταχωρητής αλλαγής πότε πρέπει να μεταβεί στο επόμενο βήμα της διαδικασίας

Βήμα 5: Ρυθμίστε το Latch high

Αυτό λέει στον καταχωρητή shift να λάβει όλα τα δεδομένα που έχουν μετατοπιστεί και να τα χρησιμοποιήσει για να ενεργοποιήσει τις ακίδες εξόδου. Αυτό σημαίνει ότι δεν θα βλέπετε δεδομένα καθώς μετατοπίζονται. καμία αλλαγή στις ακίδες εξόδου δεν θα συμβεί έως ότου το Latch είναι υψηλό

Βήμα 6: Ρυθμίστε το Enable Output high

  • Δεν θα υπάρχει έξοδος καρφιτσών έως ότου η Ενεργοποίηση εξόδου έχει οριστεί σε υψηλή, ανεξάρτητα από το τι συμβαίνει με τους άλλους τρεις πείρους ελέγχου.
  • Αυτός ο πείρος μπορεί πάντα να παραμείνει ψηλός αν το επιθυμείτε

Υπάρχουν δύο ακίδες που μπορείτε να χρησιμοποιήσετε για διαδοχικά, το Os και το Os1. Το Os είναι για ρολόγια με γρήγορη άνοδο και το Os1 είναι για ρολόγια αργής ανόδου. Συνδέστε αυτήν την καρφίτσα στο pin δεδομένων του επόμενου καταχωρητή αλλαγής και η υπερχείλιση από αυτό το τσιπ θα εισαχθεί στο επόμενο. Τέλος ενημέρωσης

Αντιμετώπιση της οθόνης

Στο παράδειγμα του προγράμματος έχω δημιουργήσει έναν πίνακα 8 byte που ονομάζεται row_buffer . Κάθε byte αντιστοιχεί σε μία σειρά της οθόνης 8x8, η γραμμή 0 είναι η κάτω και η σειρά 7 είναι η κορυφή. Το λιγότερο σημαντικό κομμάτι κάθε σειράς βρίσκεται στα δεξιά, το πιο σημαντικό κομμάτι στα αριστερά. Η αλλαγή της οθόνης είναι τόσο εύκολη όσο η εγγραφή μιας νέας τιμής σε αυτόν τον πίνακα δεδομένων, η ρουτίνα της υπηρεσίας διακοπής φροντίζει για την ανανέωση της οθόνης.

Προγραμματισμός

Ο προγραμματισμός δεν θα συζητηθεί λεπτομερώς εδώ. Θα σας προειδοποιούσα να μην χρησιμοποιείτε καλώδιο προγραμματισμού DAPA καθώς πιστεύω ότι δεν θα μπορείτε να προγραμματίσετε το τσιπ μόλις λειτουργεί στα 12MHz. Όλοι οι άλλοι τυπικοί προγραμματιστές πρέπει να λειτουργούν (STK500, MKII, Dragon, Parallel/Serial programmers, κ.λπ.). Ασφάλειες: Βεβαιωθείτε ότι έχετε προγραμματίσει τις ασφάλειες για να χρησιμοποιήσετε τον κρύσταλλο των 12MHz

Εν ΔΡΑΣΕΙ

Μόλις προγραμματίσετε το τσιπ, η οθόνη θα μετακινηθεί σε ένα "Hello World!". Εδώ είναι ένα βίντεο της μήτρας LED σε ενέργειες. Η ποιότητα του βίντεο είναι αρκετά χαμηλή καθώς το έκανα με τη λειτουργία βίντεο της ψηφιακής φωτογραφικής μηχανής μου και όχι με το κατάλληλο βίντεο ή κάμερα web.

Βήμα 5: Αρθρωτές έννοιες

Αρθρωτές έννοιες
Αρθρωτές έννοιες
Αρθρωτές έννοιες
Αρθρωτές έννοιες
Αρθρωτές έννοιες
Αρθρωτές έννοιες
Αρθρωτές έννοιες
Αρθρωτές έννοιες

Αυτό το έργο είναι επεκτάσιμο. Ο μόνος πραγματικός περιοριστικός παράγοντας θα είναι πόσο ρεύμα μπορεί να παρέχει το τροφοδοτικό σας. (Η άλλη πραγματικότητα είναι πόσες λυχνίες LED και διακόπτες εγγραφής έχετε διαθέσιμες).

Μαθηματικά

Οδηγώ τα LED περίπου 15mA (5V-1.8vDrop/220ohms = 14.5mA). Αυτό σημαίνει ότι μπορώ να οδηγήσω έως και 33 στήλες με το πρόγραμμα οδήγησης mic2981 (500mA/15mA = 33.3). Διαιρούμενο με το 8 μπορούμε να δούμε ότι αυτό μας επιτρέπει να συμβολοσειρήσουμε 4 καταχωρητές βάρδιας. Επίσης, σκεφτείτε ότι δεν χρειάζεται να έχετε και τις 32 στήλες τεντωμένες από αριστερά προς τα δεξιά. Θα μπορούσατε αντ 'αυτού να δημιουργήσετε έναν πίνακα 16x16 που είναι καλωδιωμένος με τον ίδιο τρόπο που θα κάνατε έναν πίνακα 8x32. Αυτό θα αντιμετωπιστεί με αλλαγή σε 4 byte…. τα δύο πρώτα θα μετατοπίζονταν μέχρι τα led για την 9η σειρά, τα δύο δύο byte θα μετατοπίζονταν στην πρώτη σειρά. Και οι δύο σειρές θα προέρχονται από μία καρφίτσα στο πρόγραμμα οδήγησης σειράς.

Cascading Shift Register

Οι καταχωρητές αλλαγής που χρησιμοποιούνται είναι καταρράκτης καταχωρητών βάρδιας. Αυτό σημαίνει ότι όταν αλλάζετε δεδομένα, η υπερχείλιση εμφανίζεται στην ακίδα Os. Η εφαρμογή γίνεται πολύ χρήσιμη καθώς ένα σύνολο καταχωρητών βάρδιας μπορεί να συνδεθεί μεταξύ τους, το Os pin στο Data pin, προσθέτοντας 8 στήλες με κάθε νέο τσιπ. Όλοι οι καταχωρητές βάρδιας θα συνδεθούν με τα ίδια pins Latch, Clock και Enable Output on ο μικροελεγκτης. Το εφέ "cascading" δημιουργείται όταν το Os του πρώτου καταχωρητή αλλαγής είναι συνδεδεμένο με το pin δεδομένων του δεύτερου. Ο προγραμματισμός θα πρέπει να τροποποιηθεί ώστε να αντικατοπτρίζει τον αυξημένο αριθμό στηλών. Τόσο το buffer που αποθηκεύει τις πληροφορίες όσο και η συνάρτηση που μετατοπίζει τις πληροφορίες σε κάθε στήλη πρέπει να ενημερώνονται για να αντικατοπτρίζουν τον πραγματικό αριθμό στηλών. Ένα σχήμα αυτού δίνεται παρακάτω ως παράδειγμα.

Προγράμματα οδήγησης πολλαπλών σειρών

Το πρόγραμμα οδήγησης σειράς (mic2981) μπορεί να παράγει αρκετό ρεύμα για να οδηγήσει 32 στήλες. Τι γίνεται αν θέλετε περισσότερες από 32 στήλες; Θα πρέπει να είναι δυνατή η χρήση προγραμμάτων οδήγησης πολλαπλών σειρών χωρίς τη χρήση περισσότερων ακίδων μικροελεγκτή. Χρειαζόμαστε τα προγράμματα οδήγησης γραμμών για να παράγουν αρκετό ρεύμα για να ανάψουν τα LED. Εάν χρησιμοποιείτε περισσότερες στήλες από όσο είναι δυνατό να φωτιστούν ταυτόχρονα, τα προγράμματα οδήγησης γραμμών προσθήκης μπορούν να παρέχουν το απαιτούμενο ρεύμα. Χρησιμοποιούνται οι ίδιες ακίδες εισόδου από τον μικροελεγκτή, ώστε να μην υπάρχει ανάγκη αλλαγής της σάρωσης των σειρών. Με άλλα λόγια, κάθε πρόγραμμα οδήγησης ελέγχει τις γραμμές για ένα μπλοκ 8x32. Παρόλο που 64 στήλες μπορεί να έχουν την ίδια ΦΥΣΙΚΗ τοποθέτηση γραμμών, χωρίζουμε τα δίαυλα γραμμών σε δύο, χρησιμοποιώντας ένα πρόγραμμα οδήγησης για τις 8 σειρές των πρώτων 32 στηλών και ένα δεύτερο πρόγραμμα οδήγησης για τις 8 σειρές των δεύτερων 32 στηλών κ.ο.κ. Ένα σχήμα αυτού δίνεται παρακάτω ως παράδειγμα. Πιθανά λάθη: 1. Μη χρησιμοποιείτε προγράμματα οδήγησης πολλών σειρών με τον ίδιο αριθμό στηλών. Κάτι τέτοιο θα σήμαινε ότι κάθε πείρος καταχωρητή αλλαγής ταχυτήτων θα οδηγούσε περισσότερα από ένα LED ταυτόχρονα. Πρέπει να έχετε ένα σύνολο 8 αντιστάσεων (3k3) για κάθε πρόγραμμα οδήγησης σειράς, ένα σετ για προγράμματα οδήγησης πολλαπλών σειρών δεν θα λειτουργήσει καθώς δεν θα παρέχει το απαραίτητο ρεύμα για να αλλάξετε τις πύλες.

Για παράδειγμα

Αποφάσισα να επεκταθώ στη μήτρα που έχτισα νωρίτερα. Έχω προσθέσει 7 ακόμη σειρές για 15 συνολικά, καθώς αυτό είναι το μόνο που μπορώ να χωρέσω σε αυτό το πρωτοπόρο. Επίσης έμαθα μόλις για έναν διαγωνισμό που κάνει το Instructables με τίτλο "Αφήστε το να λάμψει". Εδώ είναι ένα βίντεο με την άποψή μου για αυτό. Για άλλη μια φορά, η ψηφιακή φωτογραφική μηχανή που χρησιμοποιούσα για να τραβήξω το βίντεο δεν το δικαιώνει. Αυτό φαίνεται υπέροχο στο ανθρώπινο μάτι, ειδικά εκεί που αναβοσβήνουν όλες οι λυχνίες LED, αλλά δεν φαίνεται σχεδόν τόσο καλό στο βίντεο. Απολαύστε: Ο πηγαίος κώδικας για αυτήν τη μεγαλύτερη οθόνη περιλαμβάνεται παρακάτω.

Βήμα 6: Συμπέρασμα

Πιθανές προσθήκες

Οι I2CI έχουν αφήσει τις ακίδες των δύο καλωδίων (I2C) αχρησιμοποίητες σε αυτό το σχέδιο. Υπάρχουν αρκετές ενδιαφέρουσες προοπτικές που μπορούν να χρησιμοποιήσουν αυτές τις δύο καρφίτσες. Η προσθήκη I2C EEPROM θα επιτρέψει την αποθήκευση πολύ μεγαλύτερων μηνυμάτων. Υπάρχει επίσης η προοπτική σχεδιασμού προγραμματισμού που θα μετατρέπει το mega8 σε πρόγραμμα οδήγησης οθόνης συμβατό με I2C. Αυτό θα ανοίξει τη δυνατότητα να έχετε μια συσκευή ενεργοποίησης USB για να εμφανίζει δεδομένα στη συστοιχία LED περνώντας τα από το δίαυλο I2C. Είσοδος: Έχουν απομείνει πολλές ακίδες που θα μπορούσαν να χρησιμοποιηθούν για κουμπιά ή δέκτη IR. Αυτό θα επέτρεπε τον προγραμματισμό μηνυμάτων μέσω συστήματος μενού. Ο ένας απλώς γράφει χαρακτήρες στην οθόνη, ο άλλος μετακινεί χαρακτήρες στην οθόνη. Το σημαντικό πράγμα που πρέπει να θυμάστε είναι ότι αυτό που βλέπετε στα φώτα αντιπροσωπεύεται σε έναν πίνακα δεδομένων. Εάν βρείτε τρόπους για να αλλάξετε τον πίνακα δεδομένων, τα φώτα θα αλλάξουν με τον ίδιο τρόπο. Ορισμένες ελκυστικές ευκαιρίες περιλαμβάνουν τη δημιουργία ενός μετρητή γραφικών από τις στήλες. Αυτό θα μπορούσε να χρησιμοποιηθεί ως αναλυτής σήματος με στερεοφωνικό. Η κύλιση μπορεί να εφαρμοστεί από πάνω προς τα κάτω ή προς τα πάνω, ακόμη και από αριστερά προς τα δεξιά. Καλή επιτυχία, καλή διασκέδαση!

Βήμα 7: Συνέχεια

Ακολουθω
Ακολουθω
Ακολουθω
Ακολουθω
Ακολουθω
Ακολουθω
Ακολουθω
Ακολουθω

Αφού άφησα το κύκλωμα του ελεγκτή να καθίσει στο ψωμί για μήνες, τελικά σχεδίασα και χάραξα μερικές πλακέτες κυκλώματος για να συνδυάσω αυτό το πρωτότυπο. Όλα λειτούργησαν τέλεια, δεν νομίζω ότι υπάρχει κάτι που θα είχα κάνει διαφορετικά.

Χαρακτηριστικά πλακέτας κυκλώματος

  • Οι καταχωρητές αλλαγής ταχυτήτων βρίσκονται σε ξεχωριστούς πίνακες που μπορούν να αλυσοδεθούν μεταξύ τους για να αυξήσουν το μέγεθος της οθόνης.
  • Ο πίνακας ελεγκτή έχει τον δικό του ρυθμιστή ισχύος, ώστε να μπορεί να λειτουργεί από οποιαδήποτε πηγή ενέργειας που παρέχει 7v-30v (μπαταρία 9v ή τροφοδοσία πάγκου 12v και οι δύο λειτουργούν μια χαρά για μένα).
  • Περιλαμβάνεται κεφαλίδα ISP 6 ακίδων, ώστε ο μικροελεγκτής να μπορεί να επαναπρογραμματιστεί χωρίς να τον αφαιρέσετε από την πλακέτα.
  • Διατίθεται κεφαλίδα 4 ακίδων για μελλοντική χρήση του διαύλου I2C. Αυτό θα μπορούσε να χρησιμοποιηθεί για ένα eeprom για αποθήκευση περισσότερων μηνυμάτων ή ακόμη και για να γίνει αυτό μια υποτελής συσκευή που ελέγχεται από άλλο μικροελεγκτή (RSS ticker κανείς;)
  • Στο σχεδιασμό περιλαμβάνονται 3 στιγμιαία κουμπιά. Ενδέχεται να τροποποιήσω το υλικολογισμικό στο μέλλον για να συμπεριλάβω τη χρήση αυτών των κουμπιών.

Συνέλευση

Δώστε μου πλεξιγκλάς, γωνιακά στηρίγματα, βίδες μηχανής 6x32, παξιμάδια και ροδέλες, καθώς και μια βρύση που ρυθμίζει τρύπες και μπορώ να δημιουργήσω οτιδήποτε.

Δεύτερο βραβείο στο Let It Glow!

Συνιστάται: