miércoles, 3 de febrero de 2016

BCD a 7 Segmentos con 74LS48 y arduino



El dia de hoy tenemos un tutorial muy simple para manejar un display 7 segmentos en arduino con ayuda de un decoder de BCD a 7 segmentos, esto es muy util cuando no queremos o podemos mandar la señal a todos los pines del 7 segmentos. Este modelo funciona para display de catodo comun, en caso de querer utilizar anodo comun, pueden recurrir al modelo 74ls47, la idea es la misma.


      
El decoder trabaja de manera sencilla, le mandamos el numero que deseamos desplegar en binario y el se encarga de convertirlo a decimal en nuestro 7 segmentos, como tenemos 4 entradas en el (A B C D) tenemos un numero binario de 4 bits, es decir podemos visualizar del 0 al 15, obviamente del 10 al 15 se simboliza de diferente manera en el 7 segmentos, aquí dejo la imagen, igual se puede encontrar en el datasheet del 74ls48.


la conexion es muy intuitiva, vamos a conectar los pines a,b,c,d,e,f,g del 74ls48 al los respectivos del display 7 segmentos, las entradas A, B, C, D las conectaremos a los pines del arduino con los que los controlaremos, en nuestro caso los pines digitales 2, 3, 4, 5. Los pines del LT, BI/RBO, RBI los conectaremos a VCC con una resistencia de 10k, estos pines sirven para probar el display 7 segmentos.


aqui he puesto 4 leds para comprobar el codigo que le mandamos en binario y como se muestra en el 7 segmentos, eso es adicional y no hace falta, pero ayuda a entender mejor si es la primera vez que lo usan.
Lo siguiente que necesitamos es el codigo:
--------------------------------------------------------------------------------------------------------------------------
//las entradas del 74ls48 van en orden DCBA es decir si queremos un 4 mandamos 0100
// Declaramos pines a usar para 74ls48
int A = 5;
int B = 4;
int C = 3;
int D = 2;

// configuramos pines como salidas
void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);

}

//programa principal
void loop() {
//Numero 0
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);

  delay(300);

//Numero 1
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);

  delay(300);
//Numero 2
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);

  delay(300);
//Numero 3
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);

  delay(300);
 //Numero 4
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);

  delay(300);
//Numero 5
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);

  delay(300);
//Numero 6
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);

  delay(300);
//Numero 7
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);

  delay(300);
//Numero 8
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 9
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 10
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 11
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 12
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 13
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 14
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);

  delay(300);
//Numero 15
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);

  delay(300);
}
--------------------------------------------------------------------------------------------------------------------------
Es muy sencillo la verdad, basta con poner los pines que decidamos utilizar como salidas y ponerlos a HIGH o LOW dependiendo el numero que queramos visualizar, esta secuencia va del 0 a 15 con delay de 300ms entre cada numero para poder apreciar.






0 comentarios:

Publicar un comentario