Taula de continguts:

Utilitzar un LED de matriu de punts amb un registre Arduino i Shift: 5 passos
Utilitzar un LED de matriu de punts amb un registre Arduino i Shift: 5 passos

Vídeo: Utilitzar un LED de matriu de punts amb un registre Arduino i Shift: 5 passos

Vídeo: Utilitzar un LED de matriu de punts amb un registre Arduino i Shift: 5 passos
Vídeo: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, Juliol
Anonim
Utilització d’un LED de matriu de punts amb un registre Arduino i Shift
Utilització d’un LED de matriu de punts amb un registre Arduino i Shift
Utilització d’un LED de matriu de punts amb un registre Arduino i Shift
Utilització d’un LED de matriu de punts amb un registre Arduino i Shift
Utilització d’un LED de matriu de punts amb un registre Arduino i Shift
Utilització d’un LED de matriu de punts amb un registre Arduino i Shift

El LED de matriu de punts Siemens DLO7135 és una increïble peça d’optoelectrònica. Es factura com una pantalla intel·ligent de matriu de punts 5x7 (r) amb memòria / descodificador / controlador. Juntament amb aquesta memòria, té una pantalla ASCII de 96 caràcters amb caràcters majúscules i minúscules, un generador de caràcters i multiplexor integrats, quatre nivells d’intensitat lumínica i tot funciona a 5 V. És molt per viure., i a 16 dòlars per pop, definitivament hauria de fer-ho. Mentre passava la meitat del dia a la meva botiga d’electrònica local preferida, vaig trobar un contenidor ple d’aquests per 1,50 dòlars la peça. Vaig sortir de la botiga amb diversos. Aquesta instrucció us mostrarà com connectar-vos a aquests LED de matriu de punts i mostrar caràcters mitjançant un Arduino basat en AVR. Si heu llegit alguna de les meves guies anteriors, potser tingueu la idea que sovint estic a favor de la solució més parsimoniosa i no us equivocaríeu, fins i tot si de tant en tant no arribo a la meta. Per tant, també faré un pas més en aquest instructiu i us mostraré com podeu reduir el nombre de ports d'E / S necessaris per conduir aquests grans LED de matriu de punts.

Pas 1: Obteniu els béns …

Aconsegueix els béns …
Aconsegueix els béns …

Per a aquest petit i breu projecte, necessitareu:

  • un microcontrolador basat en AVR, com ara un Arduino o qualsevol d’altres. Aquestes instruccions probablement es podrien adaptar a la vostra MCU que trieu.
  • un LED de matriu de punts DLO7135 o un altre de la mateixa família
  • un registre de desplaçament de 8 bits com el 74LS164, 74C299 o 74HC594
  • una pissarra
  • filferro de connexió, talladors de filferro, etc.

No es necessita un soldador, tot i que en faig servir més tard; es pot sortir sense ell.

Pas 2: connecteu-vos directament a la pantalla LED

Connecteu-vos directament a la pantalla LED
Connecteu-vos directament a la pantalla LED
Connecteu-vos directament a la pantalla LED
Connecteu-vos directament a la pantalla LED
Connecteu-vos directament a la pantalla LED
Connecteu-vos directament a la pantalla LED

Dissenyeu la vostra petita llista de peces i agafeu el LED. Col·loqueu-lo a la taula de centrar una mica, a cavall entre la ranura de la línia mitjana. La primera part de la connexió té lloc a la part esquerra del LED. El pin número 1 es troba a la part superior esquerra tal com indica el triangle / fletxa. Poso les funcions de pin en una imatge per a la vostra referència mentre llegiu o connecteu el LED.

El costat esquerre

Positiu i negatiu Començant per la part superior esquerra, connecteu Vcc a 5V. Potser és una bona idea no tenir el tauler alimentat fins que no completi tot el costat esquerre; el LED pot ser brillant si intenteu veure petits forats per ficar-hi els cables. Connecteu el GND inferior esquerre a terra. Prova de llum, habilitació i escriptura de xips El segon i tercer de la part superior esquerra són Prova de llum i habilitat de xip. Tots dos són lògics negatius, és a dir, estan habilitats quan tenen un 0 lògic en lloc de 1. La meva imatge següent hauria de tenir barres sobre ells, però no ho vaig fer per a cap d'ells. Quan està activat, el pin LT il·lumina tots els punts de la matriu de punts a 1/7 de brillantor. És més aviat una prova de píxels, però l’interessant del pin LT és que no sobreescriu cap caràcter que hi ha a la memòria, de manera que si teniu diversos d’aquests encadenats (tenen una distància de visualització de 20 peus), estrobateu LT pot fer que sembli un cursor. Per assegurar-vos que està desactivat, connecteu-lo a 5 V. Els pins CE i WR també són lògics negatius i cal habilitar-los perquè s’escrigui aquest dispositiu intel·ligent. Podeu microgestionar aquests pins amb ports d'E / S de recanvi al vostre microcontrolador, però aquí no ens molestarem. Connecteu-los a terra per mantenir-los activats. Nivells de brillantor Hi ha quatre nivells de brillantor programables a la família de LEDs DLO:

  • En blanc
  • 1/7 Lluminositat
  • 1/2 Lluminositat
  • Lluminositat completa

BL1 HIGH i BL0 LOW són 1/2 brillants. Tots dos HIGH tenen una brillantor total. Establiu-lo al que vulgueu. Una vegada més, si teniu ports d'E / S que us sobren i és prou important per a vosaltres, això també el pot controlar el vostre Arduino, que embolica el costat esquerre. Si aporteu energia al vostre tauler, hauríeu de veure que el LED s’encén. Juga amb els controls de brillantor i la prova de la llum per familiaritzar-te amb això, si tens curiositat.

El costat dret

El costat dret consta de ports de dades completament. La part inferior dreta, el pin 8 o D0 per ser precisos, representa el bit menys significatiu del caràcter de 7 bits. A la part superior dreta, el pin 14 o D6 representa el bit més significatiu. Això us permet saber quin ordre barregeu els vostres bits quan escriviu al LED. Quan tingueu connectats els ports d'entrada de dades, cerqueu set ports d'E / S digitals buits al vostre Arduino o AVR i connecteu-los. Probablement voldreu recordar quin port de sortida de dades del vostre AVR va a quin port d’entrada de dades del LED. Ara esteu preparats per introduir algunes dades en aquest LED intel·ligent. Ja tremoleu d’il·lusió? Sé que sóc …

Pas 3: especificar un caràcter que es mostrarà

Especificació d'un caràcter que es mostrarà
Especificació d'un caràcter que es mostrarà

El conjunt de caràcters que s’utilitza en aquest LED CMOS és el vostre ASCII de llançament que comença a 0x20 (decimal 32; un espai) i acaba a 0x7F (decimal 127; una supressió, tot i que es representa al LED com a gràfic del cursor). Per tant, tenir un caràcter de pantalla LED no implica res més que empènyer el lògic 1 o 0 als pins de sortida de dades, normalment seguit d’un pols WR, però ho estic deixant per a aquest exercici. recordava quins passadors van a quins ports, oi? Vaig escollir PD [2..7] i PB0 (pins digitals del 2 al 8 en Arduino-speak). Normalment no suggereixo utilitzar PD [0..1] perquè el dedico a la meva comunicació serial de nou a una caixa de FreeBSD i a Arduino et al. mapeu aquests pins al seu canal de comunicació USB FTDI i, tot i que "diuen" que els pins 0 i 1 funcionaran si no inicialitzeu la comunicació en sèrie, mai no he pogut utilitzar aquests pins com a E / S digitals normals. De fet, vaig passar dos dies intentant depurar un problema quan vaig intentar utilitzar PD0 i PD1 i vaig trobar que sempre eren ALTS. * Shrug * Probablement estaria bé tenir una mena d’entrada externa, com potser un teclat, un polsador o un commutador de rodes polzades, o potser fins i tot una entrada d’un terminal (el meu ArduinoTerm encara no està preparat per al prime time …). L’elecció és vostra. De moment, només vaig a il·lustrar com obtenir el codi per obtenir el caràcter que voleu al LED. Hi ha un fitxer zip per descarregar que inclou el codi font i Makefile i també hi ha una pel·lícula curta que mostra el LED que imprimeix el seu conjunt de caràcters. Disculpeu la qualitat de la merda del vídeo. El codi següent imprimeix la cadena "Benvingut al meu instructable!" a continuació, recorre tot el conjunt de caràcters que admet el LED.

DDRD = 0xFF; // SortidaDDRB = (1 << DDB0); char msg = "Welcome to my Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } per a (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos * & apos);}La sortida del port es fa càrrec de la funció Print2Led ()

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

El codi i Makefile s’inclouen a continuació en un fitxer zip.

Pas 4: conservar els ports d'E / S amb un registre de majúscules

Conserveu els ports d'E / S amb un registre de canvis
Conserveu els ports d'E / S amb un registre de canvis
Conserveu els ports d'E / S amb un registre de canvis
Conserveu els ports d'E / S amb un registre de canvis
Conserveu els ports d'E / S amb un registre de canvis
Conserveu els ports d'E / S amb un registre de canvis

Ara el nostre microcontrolador pot enviar dades al LED de matriu de punts, però utilitza vuit ports d'E / S. Això exclou l'ús d'un ATtiny en un paquet DIP de 8 pins i, fins i tot, amb un Arduino més nou que tingui un ATmega328p que comporta molts ports d'E / S per a un LED. No obstant això, podem evitar-ho mitjançant un IC anomenat registre de desplaçament. Un moment per "canviar" de marxa … Un registre de canvi es pot entendre millor pensant en les dues paraules que componen el seu nom: "canvi" i "registre". La paraula canvi fa referència a com es mouen les dades pel registre. Aquí (com en el nostre Arduino i microcontroladors, en general) un registre és una ubicació que conté dades. Ho fa implementant una cadena lineal de circuits lògics digitals anomenats "xancles" que té dos estats estables que es poden representar amb un 1 o un 0. Per tant, posant vuit xancles junts teniu un dispositiu capaç de mantenir i representa un byte de 8 bits. Així com hi ha diversos tipus de xancles i diverses variacions en un tema de registres de desplaçament (comptadors de pujada / baixada i comptadors de Johnson), també hi ha diversos tipus de registres de desplaçaments basats en la forma en què les dades es troba bloquejat al registre i com es publiquen aquestes dades. Basat en això, tingueu en compte els tipus de registres de torns següents:

  • Entrada sèrie / sortida paral·lela (SIPO)
  • Entrada de sèrie / sortida de sèrie (SISO)
  • Entrada paral·lela / sortida de sèrie (PISO)
  • Entrada paral·lela / sortida paral·lela (PIPO)

Dues són les que destaquen SIPO i PISO. Els registres SIPO prenen les dades en sèrie, és a dir, un bit després de l’altre, canviant el bit d’entrada anterior al següent xanclet i enviant les dades a totes les entrades alhora. Això fa que sigui un bon convertidor de sèrie a paral·lel. Per contra, els registres de desplaçament PISO tenen entrades paral·leles, de manera que tots els bits s’introdueixen alhora, però es generen d’un en un. I ho heu endevinat, això fa que sigui un bon paral·lel al convertidor de sèrie. El registre de desplaçament que volem utilitzar per reduir el nombre de pins d'E / S ens permetria agafar aquests 8 pins d'E / S que hem utilitzat anteriorment i reduir-los a un, o potser només a un parell, tenint en compte que és possible que hàgim de controlar com introduïm els bits. Per tant, el registre de desplaçament que farem servir és una entrada serial / sortida paral·lela. Connexió del registre de desplaçament entre el LED i Arduino L'ús d'un registre de desplaçament és fàcil. El més difícil és visualitzar els pins de sortida de dades i com acabaran els dígits binaris a l’IC i com apareixeran al LED. Preneu-vos un moment per planificar-ho. 1. Connecteu 5V al pin 14 (dalt a la dreta) i agafeu el pin 7 (inferior esquerre) cap a terra. El registre de desplaçament té dues entrades de sèrie, però només en farem servir una, de manera que connecteu el pin dos a 5V3. No utilitzarem el pin clar (que s’utilitza per fer zero totes les sortides), així que deixeu-lo flotant o ataqueu-lo a 5V4. Connecteu un port d'E / S digital per fixar un registre de desplaçament. Aquest és el pin d’entrada sèrie. Connecteu un port d'E / S digital al pin 8 (a la part inferior dreta). Aquest és el passador del rellotge. Connecteu les vostres línies de dades de Q0 a Q6. Només fem servir 7 bits perquè el conjunt de caràcters ASCII només utilitza set bits. He utilitzat PD2 per enviar les meves dades de sèrie i PD3 per al senyal del rellotge. Per als pins de dades, vaig connectar Q0 a D6 al LED i continuar d’aquesta manera (Q1 a D5, Q2 a D4, etc.). Com que enviem dades en sèrie, haurem d’examinar la representació binària de cada caràcter que volem enviar, mirant els 1 i els 0 i la sortida de cada bit a la línia serial. He inclòs una segona versió de la font dotmatrixled.c juntament amb un Makefile a continuació. Fa un recorregut pel conjunt de caràcters i mostra tots els caràcters parells (si és estrany pensar que una lletra pot ser imparella o parella, penseu en la representació binària per un moment). Intenteu esbrinar com fer-lo circular per la visualització de tots els caràcters senars. Podeu experimentar amb les connexions entre el registre de desplaçament, el LED de matriu de punts i el vostre Arduino. Hi ha diverses funcions de control entre el LED i el registre que us poden permetre ajustar el control sobre quan es mostren les dades. Així doncs, hem passat d'haver d'utilitzar vuit ports d'E / S a utilitzar només dos.

Pas 5: resum

Resum
Resum
Resum
Resum

En aquest instructiu, he presentat el LED de matriu de punts DLO7135 i com fer-lo funcionar. A més, he comentat com reduir el nombre de ports d'E / S necessaris de vuit a només dos mitjançant un registre de desplaçament. El LED de matriu de punts DLO7135 es pot unir entre si per aconseguir marquesines molt atractives i interessants. Espero que us hagueu divertit llegint aquest instructiu! Si creieu que podria fer alguna millora o suggeriments que voldríeu donar sobre aquest o qualsevol dels meus "ibles", estic encantat de sentir-los! Feliç AVR!

Recomanat: