Taula de continguts:
Vídeo: Com connectar una matriu LED 8x8 impulsada per MAX7219 amb microcontrolador ATtiny85: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
El controlador MAX7219 està fabricat per Maxim Integrated; és un controlador de pantalla de càtode comú d’entrada / sortida sèrie que pot connectar microcontroladors a 64 LED individuals, pantalles LED numèriques de 7 segments de fins a 8 dígits, pantalles de gràfics de barres, etc. -chip són un descodificador de codi BCD BCD, circuits d'escaneig multiplex, controladors de segments i dígits i una memòria RAM estàtica de 8 × 8 que emmagatzema cada dígit.
Els mòduls MAX7219 són molt còmodes d’utilitzar amb microcontroladors com ATtiny85 o, en el nostre cas, la placa Tinusaur.
Pas 1: el maquinari
Els mòduls MAX7219 solen tenir aquest aspecte. Tenen un bus d’entrada per un costat i un bus de sortida per l’altre. Això us permet encadenar 2 o més mòduls, és a dir, un darrere l’altre, per tal de crear configuracions més complicades.
Els mòduls que estem utilitzant són capaços de connectar-se en cadena mitjançant 5 petits ponts. Vegeu la imatge següent.
Pas 2: fixació i senyals
El mòdul MAX7219 té 5 pins:
- VCC: potència (+)
- GND - terra (-)
- DIN: entrada de dades
- CS: selecció de xip
- CLK: rellotge
Això vol dir que necessitem 3 pins al costat del microcontrolador ATtiny85 per controlar el mòdul. Aquests seran:
- PB0: connectat al CLK
- PB1: connectat al CS
- PB2: connectat al DIN
Això és suficient per connectar-vos al mòdul MAX7219 i programar-lo.
Pas 3: el protocol
Comunicar-se amb el MAX7219 és relativament senzill: utilitza un protocol síncron que significa que per a cada bit de dades que enviem hi ha un cicle de rellotge que significa la presència d’aquest bit de dades.
En altres paraules, enviem 2 seqüències paral·leles a bits: una per al rellotge i una altra per a les dades. Això és el que fa el programari.
Pas 4: el programari
La manera com funciona aquest mòdul MAX7219 és la següent:
- Escrivim bytes al seu registre intern.
- MAX7219 interpreta les dades.
- MAX7219 controla els LED de la matriu.
Això també significa que no hem de fer una volta per tota la matriu de LED per il·luminar-los; el controlador MAX7219 s’encarrega d’això. També podria gestionar la intensitat dels LED.
Per tant, per utilitzar els mòduls MAX7219 d’una manera convenient, necessitem una biblioteca de funcions per complir aquest propòsit.
En primer lloc, necessitem algunes funcions bàsiques per escriure als registres MAX7219.
- Escrivint un byte al MAX7219.
- Escriure una paraula (2 bytes) al MAX7219.
La funció que escriu un byte al controlador és la següent:
void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Estableix CLK a BAIX si (dades & 0x80) // Enmascara el MSB de les dades PORTB | = (1 << MAX7219_DIN); // Estableix DIN a HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Estableix DIN a BAIX PORTB | = (1 << MAX7219_CLK); // Estableix CLK en dades ALTES << = 1; // Canvia cap a l'esquerra}}
Ara que podem enviar bytes al MAX7219 podem començar a enviar ordres. Això es fa enviant 2 byes: el primer per a l’adreça del registre intern i el segon per a les dades que volem enviar.
Hi ha més d’una dotzena de registres al controlador MAX7219.
Enviar una ordre o una paraula és bàsicament enviar 2 bytes consecutius. La implementació de la funció és molt senzilla.
void max7219_word (adreça uint8_t, dades uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Estableix CS a BAIX max7219_byte (adreça); // Enviament de l'adreça max7219_byte (dades); // Enviament de dades PORTB | = (1 << MAX7219_CS); // Estableix CS a HIGH PORTB & = ~ (1 << MAX7219_CLK); // Estableix CLK a BAIX}
És important assenyalar aquí la línia on tornem a posar el senyal CS a HIGH (això marca el final de la seqüència), en aquest cas, el final de l'ordre. S'utilitza una tècnica similar per controlar més d'una matriu connectada en una cadena. El següent pas, abans de començar a encendre i apagar els LED, és inicialitzar el controlador MAX7219. Això es fa escrivint certs valors en determinats registres. Per comoditat, mentre el codifiquem, podríem posar la seqüència d'inicialització en una matriu.
uint8_t initseq = {0x09, 0x00, // Registre de mode de descodificació, 00 = Sense decodificació 0x0a, 0x01, // Registre d'intensitat, 0x00.. 0x0f 0x0b, 0x07, // Registre de límit d'escaneig, 0x07 per mostrar totes les línies 0x0c, 0x01, // Registre de tancament, 0x01 = Funcionament normal 0x0f, 0x00, // Registre de prova-visualització, 0x00 = Funcionament normal};
Només hem d’enviar les 5 ordres anteriors en una seqüència com a parells d’adreça / dades. Pas següent: encendre una fila de LEDs.
Això és molt senzill: només escrivim una ordre on el primer byte és l'adreça (de 0 a 7) i el segon byte són els 8 bits que representen els 8 LED de la fila.
void max7219_row (adreça uint8_t, dades uint8_t) {if (address> = 1 && address <= 8) max7219_word (adreça, dades); }
És important tenir en compte que això funcionarà només per a una matriu. Si connectem més matrius en una cadena, totes mostraran les mateixes dades. El motiu d'això és que després d'enviar l'ordre tornem a posar el senyal CS a HIGH, cosa que provoca que tots els controladors MAX7219 de la cadena es bloquegin i mostrin el que fos l'últim comandament.
Recomanat:
Interfície de microcontrolador Atmega16 amb pantalla LED de matriu de punts: 5 passos
Interfície de microcontrolador Atmega16 amb pantalla LED de matriu de punts: en aquest projecte interfacem amb una pantalla LED de matriu de punts amb un microcontrolador AVR (Atmega16). Aquí mostrarem la simulació a proteus, podeu aplicar el mateix al vostre maquinari. Per tant, aquí primer imprimirem un caràcter, diguem "A" en t
Com es construeix una matriu LED 8x8 BIG (MAX7219 LED 10mm): 9 passos (amb imatges)
Com construir una matriu LED 8x8 BIG (MAX7219 LED 10mm): heu treballat amb una matriu LED 8x8 ja feta com a pantalles? Es presenten en diverses mides i són força interessants per treballar. Una mida gran fàcilment disponible fa aproximadament 60 mm x 60 mm. Tanmateix, si busqueu una matriu de LED preparada molt més gran
Interfície LED Matriu de punts (8x8) amb NodeMCU: 6 passos (amb imatges)
Interfície LED Dot Matrix (8x8) amb NodeMCU: Hola, fabricants, estic amb un altre senzill i divertit instructable
Interfície de pantalla LED de matriu de punts amb microcontrolador 8051: 5 passos
Interfície de pantalla LED de matriu de punts amb el microcontrolador 8051: en aquest projecte, farem una interfície de pantalla LED de matriu de punts amb el microcontrolador 8051. Aquí mostrarem la simulació a proteus, podeu aplicar el mateix al vostre maquinari. Per tant, aquí primer imprimirem un caràcter, diguem "A" en aquesta disp
Mastermind amb una matriu LED 8x8 RGB: 5 passos (amb imatges)
Mentalitzador amb una matriu LED de 8x8 RGB: parts necessàries: Basys3 FPGA Matriu LED de 8x8 RGB per bateria GEEETECH9V 2 transistors N3904 (x32) resistència 1K (x32) resistència de 100 ohmios (x1) resistència de 50 ohmis (x1) La matriu LED és una matriu comuna d’un anode 32 pins en total. L'ànode comú significa que cada fila és