Innholdsfortegnelse:
Video: Hvordan koble til en MAX7219 drevet LED -matrise 8x8 med ATtiny85 mikrokontroller: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
MAX7219-kontrolleren er produsert av Maxim Integrated er en kompakt, seriell inngang/utgang felles-katodeskjermdriver som kan koble mikrokontrollere til 64 individuelle lysdioder, 7-segment numeriske LED-skjermer på opptil 8 sifre, stolpediagrammer osv. Inkludert på -chip er en BCD-kode-B-dekoder, multiplex skannekretser, segment- og sifferdrivere og en 8 × 8 statisk RAM som lagrer hvert siffer.
MAX7219 -modulene er veldig praktiske å bruke med mikrokontrollere som ATtiny85, eller i vårt tilfelle Tinusaur Board.
Trinn 1: Maskinvaren
MAX7219 -modulene ser vanligvis slik ut. De har en inngangsbuss på den ene siden og utgangsbuss på den andre. Dette lar deg kjede 2 eller flere moduler, dvs. etter hverandre, for å lage mer kompliserte oppsett.
Modulene vi bruker er i stand til å koble til en kjede ved hjelp av 5 små hoppere. Se bildet nedenfor.
Trinn 2: Pinout og signaler
MAX7219 -modulen har 5 pinner:
- VCC - effekt (+)
- GND-bakken (-)
- DIN - Datainngang
- CS - Chip select
- CLK - Klokke
Det betyr at vi trenger 3 pinner på ATtiny85 -mikrokontrollersiden for å kontrollere modulen. De vil være:
- PB0 - koblet til CLK
- PB1 - koblet til CS
- PB2 - koblet til DIN
Dette er tilstrekkelig for å koble til MAX7219 -modulen og programmere den.
Trinn 3: Protokollen
Kommunikasjon med MAX7219 er relativt enkelt - den bruker en synkron protokoll som betyr at for hver databit vi sender er det en klokkesyklus som betyr tilstedeværelsen av den databiten.
Med andre ord sender vi 2 parallelle sekvenser til biter - en for klokken og en annen for dataene. Dette er hva programvaren gjør.
Trinn 4: Programvaren
Slik fungerer denne MAX7219 -modulen:
- Vi skriver byte til det interne registeret.
- MAX7219 tolker dataene.
- MAX7219 styrer lysdiodene i matrisen.
Det betyr også at vi ikke trenger å sirkle gjennom en rekke LED -er hele tiden for å lyse dem - MAX7219 -kontrolleren tar seg av det. Det kan også styre intensiteten til lysdiodene.
Så for å bruke MAX7219 -modulene på en praktisk måte trenger vi et bibliotek med funksjoner for å tjene dette formålet.
Først trenger vi noen grunnleggende funksjoner for å skrive til MAX7219 registre.
- Skriver en byte til MAX7219.
- Skriver et ord (2 byte) til MAX7219.
Funksjonen som skriver en byte til kontrolleren ser slik ut:
void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Sett CLK til LAV hvis (data & 0x80) // Masker MSB for dataene PORTB | = (1 << MAX7219_DIN); // Sett DIN til HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Sett DIN til LAV PORTB | = (1 << MAX7219_CLK); // Sett CLK til HIGH data << = 1; // Skift til venstre}}
Nå som vi kan sende byte til MAX7219 kan vi begynne å sende kommandoer. Dette gjøres ved å sende 2 byes - første for adressen til det interne registeret og det andre for dataene vi ønsker å sende.
Det er mer enn et dusin register i MAX7219 -kontrolleren.
Å sende en kommando, eller et ord, er i utgangspunktet å sende 2 påfølgende byte. Funksjonen som implementerer det er veldig enkel.
void max7219_word (uint8_t address, uint8_t data) {PORTB & = ~ (1 << MAX7219_CS); // Sett CS til LOW max7219_byte (adresse); // Sender adressen max7219_byte (data); // Sende dataene PORTB | = (1 << MAX7219_CS); // Sett CS til HIGH PORTB & = ~ (1 << MAX7219_CLK); // Sett CLK til LAV}
Det er viktig å merke seg linjen der vi tar CS -signalet tilbake til HIGH - dette markerer slutten på sekvensen - i dette tilfellet slutten av kommandoen. En lignende teknikk brukes for å kontrollere mer enn én matrise som er koblet til en kjede. Neste trinn, før vi begynner å slå på og av lysdiodene, er å initialisere MAX7219 -kontrolleren. Dette gjøres ved å skrive visse verdier til visse registre. For enkelhets skyld, mens vi koder det, kan vi sette initialiseringssekvensen i en matrise.
uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = No decode 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 for å vise alle linjer 0x0c, 0x01, // Shutdown Register, 0x01 = Normal drift 0x0f, 0x00, // Display-Test Register, 0x00 = Normal Operation};
Vi trenger bare å sende de fem kommandoene ovenfor i en sekvens som adresse/datapar. Neste trinn - lyser opp en rad lysdioder.
Dette er veldig enkelt - vi skriver bare en kommando der 1. byte er adressen (fra 0 til 7) og 2. byte er de 8 bitene som representerer de 8 lysdiodene i rekken.
void max7219_row (uint8_t address, uint8_t data) {if (address> = 1 && address <= 8) max7219_word (address, data); }
Det er viktig å merke seg at dette bare vil fungere for 1 matrise. Hvis vi kobler flere matriser i en kjede, viser de alle de samme dataene. Grunnen til dette er at etter at vi har sendt kommandoen, bringer vi CS -signalet tilbake til HIGH som får alle MAX7219 -kontrollerne i kjeden til å låse seg og vise hva den siste kommandoen var.
Anbefalt:
Hvordan lage din egen WIFI -gateway for å koble Arduino til IP -nettverk?: 11 trinn (med bilder)
Hvordan lage din egen WIFI -gateway for å koble Arduino til IP -nettverk?: Som så mange mennesker tror du Arduino er en veldig god løsning for å gjøre hjemmeautomatisering og robotikk! Men når det gjelder kommunikasjon, kommer Arduinos bare med seriekoblinger. Jeg jobber med en robot som må være permanent koblet til en server som kjører
DIY LED Strip: Hvordan kutte, koble til, lodde og strøm LED Strip: 3 trinn (med bilder)
DIY LED -stripe: Hvordan kutte, koble til, lodde og strøm LED -stripe: Nybegynnerguide for å lage dine egne lysprosjekter ved hjelp av LED -stripe. Fleksibel pålitelig og enkel å bruke, LED -strips er det beste valget for en rekke applikasjoner. Jeg vil dekke det grunnleggende om å installere en enkel innendørs 60 LED/m LED -stripe, men i
Hvordan koble til Li -ion -batteri i parallell og i serie. 5 trinn (med bilder)
Hvordan koble til Li Ion -batteri i parallell og i serier.: Har du problemer med å lade 2x3.7v batteri tilkoblet i sereis. Her er den enkle løsningen
Hvordan koble til og komme i gang med DJ -utstyret ditt: 8 trinn
Hvordan koble til og komme i gang med DJ -utstyret ditt: Formålet med denne instruksjonsboken er å vise deg, leseren, hvordan du setter opp platespilleren og hvordan du kobler til DJ -utstyret
Hvordan koble til en 4x3”TFT -skjerm med en Arduino: 4 trinn
Slik grensesnitt en 4x3”TFT-skjerm med en Arduino: FocusLCDs.com sendte meg en gratis prøve av en 4x3” TFT LCD (P/N: E43RG34827LW2M300-R) for å prøve. Dette er en farge -aktiv matrise TFT (Thin Film Transistor) LCD (flytende krystallskjerm) som bruker amorft silisium -TFT som bytteenhet. Denne modellen er