dilluns, 21 d’octubre de 2013

Display 7 segments amb descodificador

Aquesta vegada hem utilitzat un descodificador BCD - 7 segments per controlar el display. Aquests descodificadors tenen 4 entrades digitals per on entrem el codi binari de la xifra que volem que mostre el display, de 0 a 9, que en binari és de 0000 a 1001. El circuit electrònic que té dins, a base de portes lògiques, s'encarrega de posar a 0 o a 1 les eixides adequades on van connectats els segments per a encendre la xifra corresponent.


Ací teniu el fitxer Fritzing.
El descodificador que hem utilitzat nosaltres és el 74LS47, ací el datasheet i aquest és un esquema del seu patillatge (vista superior) i baix una taula amb les funcions de cada pin:

PIN'SNOMFUNCIÓ
7, 1, 2, 6A, B, C, DEntrada del número en BCD a ser mostrat pel display. Connectarem l'exida BCD que està comptant-nos el comptador.
3LT'Lamp Test. Al activar-se (posar-se a 0) s'encenen tots els segments. No utilitzada, la connectarem a positiu.
4, 5BI', RBI'Blank Input i Ripple Blank Input. S'utilitzen per apagar les xifres més a l'esquerra quan estan a 0 (xifres no significatives) quan tenim varis dígits, per mostrar 25 en lloc de 0025, per exemple. No utilitzades al nostre circuit, les connectarem a positiu.
8GNDGround. És el negatiu d'alimentació del C. I.
13, 12,  11, 10, 9, 15, 14a', b', c', d', e', f', g'Són les eixides, en lògica negativa, per activar cada segment (a través d'una resistència limitadora d'intensitat). Són en lògica negativa (actives a 0) per que estan pensades per displays d'ànode comú.
16+VccÉs el positiu d'alimentació del C. I. +5 Volts, ja que estem en nivells TTL.

Vam aprendre una funció nova: bitRead()
Ací podeu baixar-vos el programa exemple següent:

/*
Control d'un display de 7 segments amb DESCODIFICADOR  des d'Arduino.
Ara el display va connectat a un descodificador BCD-7 segments: el 74LS47
Aquest descodificador te les 4 entrades binaries connectades a 4 pins de l'Arduino.
El programa treu per cada pin d'eixida el digit binari de la xifra que volem mostrar.
*/

int pinsDisplay[4]={1, 2, 4, 8}; //A quins pins connecte cada entrada del descodificador, 
                                 // començant per la de menor pes

void treuXifra(int xifra){       //Funcio que treu per les eixides el binari de xifra
  for(int index=0; index<=3; index++)
     digitalWrite(pinsDisplay[index], bitRead(xifra, index)); //bitRead(variable, n) treu la xifra binaria (0 o 1)
}                                                             //de la posicio n de variable
  
void setup(){
  for(int index=0; index<=3; index++)  //Definim els quatre pins com eixides
     pinMode(pinsDisplay[index], OUTPUT);
}

void loop(){
  //Anem comptant de 0 a 9
  for(int num=0; num<=9; num++){
     treuXifra(num);
     delay(1000);
  }
}

Cap comentari:

Publica un comentari a l'entrada