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

Πώς να διασυνδέσετε μια MAX7219 οδηγούμενη μήτρα LED 8x8 με μικροελεγκτή ATtiny85: 7 βήματα
Πώς να διασυνδέσετε μια MAX7219 οδηγούμενη μήτρα LED 8x8 με μικροελεγκτή ATtiny85: 7 βήματα

Βίντεο: Πώς να διασυνδέσετε μια MAX7219 οδηγούμενη μήτρα LED 8x8 με μικροελεγκτή ATtiny85: 7 βήματα

Βίντεο: Πώς να διασυνδέσετε μια MAX7219 οδηγούμενη μήτρα LED 8x8 με μικροελεγκτή ATtiny85: 7 βήματα
Βίντεο: Using MAX7219 8 Digits Seven Segment Display - Robojax 2024, Ιούλιος
Anonim
Τρόπος διασύνδεσης MAX7219 οδηγούμενης μήτρας LED 8x8 με μικροελεγκτή ATtiny85
Τρόπος διασύνδεσης MAX7219 οδηγούμενης μήτρας LED 8x8 με μικροελεγκτή ATtiny85

Ο ελεγκτής MAX7219 κατασκευάζεται από το Maxim Integrated είναι συμπαγές, σειριακό πρόγραμμα οδήγησης κοινής καθόδου σειριακής εισόδου/εξόδου που θα μπορούσε να διασυνδέσει μικροελεγκτές με 64 μεμονωμένα LED, αριθμητικές οθόνες LED 7 τμημάτων έως 8 ψηφίων, οθόνες γραμμών κλπ. -το τσιπ είναι ένας αποκωδικοποιητής κωδικού B-BCD, κύκλωμα πολλαπλής σάρωσης, προγράμματα οδήγησης τμημάτων και ψηφίων και μια στατική μνήμη RAM 8 × 8 που αποθηκεύει κάθε ψηφίο.

Τα δομοστοιχεία MAX7219 είναι πολύ βολικά για χρήση με μικροελεγκτές όπως το ATtiny85 ή, στην περίπτωσή μας, το Tinusaur Board.

Βήμα 1: Το υλικό

Το Υλικό
Το Υλικό
Το Υλικό
Το Υλικό

Οι μονάδες MAX7219 συνήθως μοιάζουν με αυτό. Έχουν ένα δίαυλο εισόδου στη μία πλευρά και ένα δίαυλο εξόδου στην άλλη. Αυτό σας επιτρέπει να μαργαρίσετε αλυσίδα 2 ή περισσότερες ενότητες, δηλαδή η μία μετά την άλλη, προκειμένου να δημιουργήσετε πιο περίπλοκες ρυθμίσεις.

Οι μονάδες που χρησιμοποιούμε είναι ικανές να συνδεθούν σε μια αλυσίδα χρησιμοποιώντας 5 μικρά άλματα. Δείτε την παρακάτω εικόνα.

Βήμα 2: Pinout και σήματα

Η μονάδα MAX7219 διαθέτει 5 ακίδες:

  • VCC - ισχύς (+)
  • GND-γείωση (-)
  • DIN - Εισαγωγή δεδομένων
  • CS - Επιλογή τσιπ
  • CLK - Ρολόι

Αυτό σημαίνει ότι χρειαζόμαστε 3 ακίδες στην πλευρά του μικροελεγκτή ATtiny85 για τον έλεγχο της μονάδας. Αυτά θα είναι:

  • PB0 - συνδεδεμένο στο CLK
  • PB1 - συνδεδεμένο στο CS
  • PB2 - συνδεδεμένο στο DIN

Αυτό αρκεί για να συνδεθείτε στη μονάδα MAX7219 και να την προγραμματίσετε.

Βήμα 3: Το πρωτόκολλο

Το Πρωτόκολλο
Το Πρωτόκολλο

Η επικοινωνία με το MAX7219 είναι σχετικά εύκολη - χρησιμοποιεί ένα σύγχρονο πρωτόκολλο που σημαίνει ότι για κάθε bit δεδομένων που στέλνουμε υπάρχει ένας κύκλος ρολογιού που υποδηλώνει την παρουσία αυτού του bit δεδομένων.

Με άλλα λόγια, στέλνουμε 2 παράλληλες ακολουθίες σε bits - μία για το ρολόι και μια άλλη για τα δεδομένα. Αυτό κάνει το λογισμικό.

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

Το λογισμικό
Το λογισμικό

Ο τρόπος λειτουργίας αυτής της μονάδας MAX7219 είναι ο εξής:

  • Γράφουμε byte στον εσωτερικό του μητρώο.
  • Το MAX7219 ερμηνεύει τα δεδομένα.
  • Το MAX7219 ελέγχει τις λυχνίες LED στη μήτρα.

Αυτό σημαίνει επίσης ότι δεν χρειάζεται να κάνουμε κύκλους μέσω της συστοιχίας των LED συνεχώς για να τις ανάβουμε - ο ελεγκτής MAX7219 φροντίζει γι 'αυτό. Θα μπορούσε επίσης να διαχειριστεί την ένταση των LED.

Έτσι, για να χρησιμοποιήσουμε τις μονάδες MAX7219 με έναν βολικό τρόπο χρειαζόμαστε μια βιβλιοθήκη λειτουργιών για να εξυπηρετήσουμε αυτόν τον σκοπό.

Πρώτον, χρειαζόμαστε κάποιες βασικές λειτουργίες για να γράψουμε στους καταχωρητές MAX7219.

  • Γράφοντας ένα byte στο MAX7219.
  • Γράφοντας μια λέξη (2 byte) στο MAX7219.

Η συνάρτηση που γράφει ένα byte στον ελεγκτή μοιάζει με αυτήν:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Ορίστε το CLK στο LOW if (data & 0x80) // Mask το MSB των δεδομένων PORTB | = (1 << MAX7219_DIN); // Ορίστε το DIN στο HIGH else PORTB & = ~ (1 << MAX7219_DIN]; // Ορίστε το DIN στο LOW PORTB | = (1 << MAX7219_CLK]; // Ορίστε το CLK σε HIGH δεδομένα << = 1; // Αλλαγή προς τα αριστερά}}

Τώρα που μπορούμε να στείλουμε byte στο MAX7219 μπορούμε να ξεκινήσουμε την αποστολή εντολών. Αυτό γίνεται στέλνοντας 2 bye - το 1ο για τη διεύθυνση του εσωτερικού μητρώου και το 2ο για τα δεδομένα που θα θέλαμε να στείλουμε.

Υπάρχουν περισσότερες από δώδεκα καταχωρητές στον ελεγκτή MAX7219.

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

void max7219_word (διεύθυνση uint8_t, δεδομένα uint8_t) {PORTB & = ~ (1 << MAX7219_CS]; // Ορίστε το CS σε LOW max7219_byte (διεύθυνση); // Αποστολή της διεύθυνσης max7219_byte (δεδομένα). // Αποστολή των δεδομένων PORTB | = (1 << MAX7219_CS]; // Ορίστε το CS σε HIGH PORTB & = ~ (1 << MAX7219_CLK]; // Ορισμός CLK σε LOW}

Είναι σημαντικό να σημειωθεί εδώ η γραμμή όπου επαναφέρουμε το σήμα CS στο HIGH - αυτό σηματοδοτεί το τέλος της ακολουθίας - στην περίπτωση αυτή, το τέλος της εντολής. Μια παρόμοια τεχνική χρησιμοποιείται όταν ελέγχουμε περισσότερους από έναν πίνακες συνδεδεμένους σε μια αλυσίδα. Το επόμενο βήμα, πριν ξεκινήσουμε την ενεργοποίηση και απενεργοποίηση των LED, είναι η προετοιμασία του ελεγκτή MAX7219. Αυτό γίνεται γράφοντας ορισμένες τιμές σε ορισμένους καταχωρητές. Για ευκολία, ενώ την κωδικοποιούμε θα μπορούσαμε να βάλουμε την ακολουθία αρχικοποίησης σε έναν πίνακα.

uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = No decode 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 για εμφάνιση όλων των γραμμών 0x0c, 0x01, // Μητρώο τερματισμού λειτουργίας, 0x01 = Κανονική λειτουργία 0x0f, 0x00, // Μητρώο δοκιμής εμφάνισης, 0x00 = Κανονική λειτουργία};

Απλώς πρέπει να στείλουμε τις 5 παραπάνω εντολές σε μια σειρά ως ζεύγη διευθύνσεων/δεδομένων. Επόμενο βήμα - φωτίζοντας μια σειρά LED.

Αυτό είναι πολύ απλό - γράφουμε μόνο μία εντολή όπου το 1 byte είναι η διεύθυνση (από 0 έως 7) και το 2 byte είναι τα 8 bits που αντιπροσωπεύουν τα 8 LED στη σειρά.

void max7219_row (uint8_t διεύθυνση, uint8_t δεδομένα) {if (διεύθυνση> = 1 && διεύθυνση <= 8) max7219_word (διεύθυνση, δεδομένα); }

Είναι σημαντικό να σημειωθεί ότι αυτό θα λειτουργήσει μόνο για 1 μήτρα. Αν συνδέσουμε περισσότερους πίνακες σε μια αλυσίδα, θα εμφανίζουν όλα τα ίδια δεδομένα. Ο λόγος για αυτό είναι ότι μετά την αποστολή της εντολής επαναφέρουμε το σήμα CS στο HIGH, το οποίο κάνει όλους τους ελεγκτές MAX7219 στην αλυσίδα να ασφαλίσουν και να δείξουν ό, τι ήταν η τελευταία εντολή.

Συνιστάται: