Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prácticas de Laboratorio
Experiencia Nº 06
6 CONTROL DE VISUALIZADORES DE 7
SEGMENTOS
6.1 OBJETIVOS
• Conocer las características y el funcionamiento del visualizador de 7 segmentos (o Display).
• Conocer los tipos de display; ánodo común y cátodo común.
• Visualización de números en el visualizador de 7 segmentos.
• Diseñar y montar en un protoboard un circuito para controlar 4 displays y visualizar mensajes.
Herramientas Descripción
(2) Protoboard
76Experiencia Nº 06
Materiales Descripción
f b
e c
d P. d.
A cada uno de los segmentos que forman el display se les etiqueta como a, b, c, d, e, f y g y están
ensamblados de forma que se permita activar cada segmento por separado consiguiendo formar cualquier
dígito numérico. En la mayoría de los display aparece un octavo segmento denominado P.d. (punto
decimal).
Ánodo
Común
D1
a
D1
D2 a
b
D2
D3 b
c
D3
D4 c
d
D4
D5 d
e
D5
D6 e
f
D6
D7 f
g
D7
D8 g
Pd
D8
Pd
Cátodo
Común
a) Arreglo de 8 LEDs en Cátodo Común. b) Arreglo de 8 LEDs en Ánodo Común.
El display de siete segmentos tiene un encapsulado tipo DIP y cuenta con diez pines, repartidos en
grupos de cinco. Además, independientemente del tipo de display, cada entrada o segmento del display
deberá ser alimentada por intermedio de una resistencia, para limitar el paso de la corriente por cada uno de
los LEDs del display, y de esa manera no correr el riesgo de quemarlos.
Existen dos tipos de display:
• Ánodo común.
• Cátodo común.
Ánodo
Común
FIGURA 6-4: Diagrama de pines y conexionado del Display de 7 segmentos de ánodo común
78Experiencia Nº 06
Cátodo
Común
g f a b
10 9 8 7 6
150
a
150
b
7
150
c 6
4
150
2
d
1
150
9
e
10
150
5
f
150
3/8
g
1 2 3 4 5 150 Display de
Pd Cátodo Común
e d c Pto.
(ROJO)
Cátodo
Común
FIGURA 6-5: Diagrama de pines y conexionado del Display de 7 segmentos de cátodo común.
Los displays pueden ser de diversos colores (rojo, verde, naranja o azul), aunque el display más
comúnmente utilizado es el de color rojo, por su facilidad de visualización.
Los transistores bipolares son los transistores más conocidos y se usan generalmente en electrónica
analógica aunque también en algunas aplicaciones de electrónica digital, como la tecnología TTL o
BICMOS.
Control de visualizadores de 7 segmentos79
Un transistor de unión bipolar está formado por dos Uniones PN en un solo cristal semiconductor,
separados por una región muy estrecha. De esta manera quedan formadas tres regiones:
• Emisor, que se diferencia de las otras dos por estar fuertemente dopada, comportándose
como un metal. Su nombre se debe a que esta terminal funciona como emisor de portadores
de carga.
• Base, la intermedia, muy estrecha, que separa el emisor del colector.
• Colector, de extensión mucho mayor.
En su funcionamiento normal, la unión base-emisor está polarizada en directa, mientras que la base-
colector en inversa. Los portadores de carga emitidos por el emisor atraviesan la base, porque es muy
angosta, hay poca recombinación de portadores, y la mayoría pasa al colector.
El transistor posee los siguientes estados de operación:
• Corte.
• Saturación.
• Activa.
• Inverso
Los transistores NPN consisten en una capa de material semiconductor dopado P (la "base") entre
dos capas de material dopado N. Una pequeña corriente ingresando a la base en configuración emisor-
común es amplificada en la salida del colector.
La flecha en el símbolo del transistor NPN está en la terminal del emisor y apunta en la dirección en la
que la corriente convencional circula cuando el dispositivo está en funcionamiento activo.
80Experiencia Nº 06
Los transistores PNP consisten en una capa de material semiconductor dopado N entre dos capas de
material dopado P. Los transistores PNP son comúnmente operados con el colector a masa y el emisor
conectado al terminal positivo de la fuente de alimentación a través de una carga eléctrica externa. Una
pequeña corriente circulando desde la base permite que una corriente mucho mayor circule desde el emisor
hacia el colector.
La flecha en el transistor PNP está en el terminal del emisor y apunta en la dirección en la que la
corriente convencional circula cuando el dispositivo está en funcionamiento activo.
El transistor 2N3904 es uno de los más comunes transistores NPN generalmente usado para
amplificación. Este tipo de transistor fue patentado por Motorola Semiconductor en los años 60, junto con el
Transistor PNP 2N3906, y representó un gran incremento de eficiencia, con un encapsulado TO-92 en vez
del antiguo encapsulado metálico. Está diseñado para funcionar a bajas intensidades, bajas potencias,
tensiones medias, y puede operar a velocidades razonablemente altas. Se trata de un transistor de bajo
costo, muy común, y suficientemente robusto como para ser usado en experimentos electrónicos.
Es un transistor de 200 miliamperios (mA), 40 voltios (V), 625 milivatios (mW), con una Frecuencia de
transición de 300 MHz, con una beta de 100. Es usado primordialmente para la amplificación analógica.
El Transistor PNP complementario del 2N3904 es el 2N3906. El Transistor NPN 2N2222A es otro
transistor muy popular, con características similares al 2N3904, pero que permite intensidades mucho más
elevadas. No obstante, en todas las aplicaciones que requieren baja intensidad, es preferible el uso del
2N3904.
Control de visualizadores de 7 segmentos81
2N3904 2N3906
C C
E B E B
a) Diagrama de pines del transistor 2N3904. b) Diagrama de pines del transistor 2N3906.
FIGURA 6-10: Diagrama de pines de los transistores 2N3904 y 2N3906.
Los transistores de pequeña potencia vienen fabricados en diferentes formatos, los más comunes son
los TO-18, TO-92, SOT-23, y SOT-223.
Uno de los diversos parámetros del transistor 2N3904 es conocer la ganancia de corriente, el cual es
la relación entre la corriente del colector y la corriente de la base. Para una ganancia de corriente con valor
de 100, un cambio de 0.001 A en la corriente base resulta en un cambio de 0.1 A en el colector. Esto
sugiere la manera en la cual el transistor 2N3904 puede convertirse en un amplificador. Un pequeño cambio
en la corriente base conduce a cientos de cambios en la corriente del colector, lo cual se puede traducir en
un cambio de voltaje o energía. Designando al transistor en etapas en cascada, es posible construir
amplificadores, switches y osciladores para diversas aplicaciones.
+5V
R2 = 10 KΩ
Salida
R1 = 10 KΩ
Entrada Q1 = 2N3904
R2 = 150
a 7
TX3 14 R3 = 150
b 6
RX3 15
c 4
TX2 16 R4 = 150
d 2
RX2 17
e 1
TX1 18 R5 = 150
f 9
RX1 19
g 10
SDA 20 R6 = 150
Pd 5
SCL 21
Arduino R7 = 150
3/8
MEGA
R8 = 150 Display de
Cátodo Común
(ROJO)
Para la tercera experiencia, se ha diseñado el siguiente circuito, el cual cuenta con dos pulsadores
para realizar un contador ascendente y descendente, respectivamente, del 0 al 9.
R1 = 150 +5V
R2 = 150
7 a B1
R3 = 150 14 TX3 RX0 0 Decremento
6 b
15 RX3 TX0 1
4 c
R4 = 150 16 TX2 2
2 d 17 RX2 3 +5V
1 e 18 TX1
R5 = 150 4
9 f 19 RX1 5 R9 = 10 KΩ
10 g
R6 = 150 20 SDA 6
5 Pd Incremento
21 SCL 7 B2
R7 = 150 Arduino
3/8
MEGA
Display de R8 = 150
Cátodo Común
(ROJO) R10 = 10 KΩ
R1 = 150 +5V
a
R2 = 150
b B1
R3 = 150 14 TX3 RX0 0 Decremento
15 RX3 TX0 1
c
R4 = 150 16 TX2 2
17 RX2 3 +5V
d
R5 = 150 18 TX1 4
19 RX1 5 R9 = 10 KΩ
e
R6 = 150 20 SDA 6
21 SCL 7 Incremento B2
f
R7 = 150 Arduino
MEGA
g
R8 = 150
Pd R10 = 10 KΩ
6.5.3 Programando
Primera experiencia:
Mostraremos los números en un visualizador de 7 segmentos (Display) cátodo común.
a
f b
g
e c
d
P.d.
0 1 1 1 1 1 1 0 0 63
TABLA 6-2: Segmentos activados (con UNO) para cada número a mostrar en el display.
15
20
25
30
35
40
45
50
55
60
1
f b
F G H I J
F G H I J
R2 R4 R6 R8 g a
R1 R3 R5 R7
A B C D E
A B C D E
a g
b f
10
15
20
25
30
35
40
45
50
55
60
1
Pd
e
d
c
La programación es la siguiente:
/*
* EXPERIENCIA 6.1:
* Mostraremos un número decimal en el visualizador de 7 segmentos.
*/
void display(int sa, int sb, int sc, int sd, int se, int sf, int sg, int Pd)
{
digitalWrite (14,sa); // Se asigna el pin 14 al segmento a.
digitalWrite (15,sb); // Se asigna el pin 15 al segmento b.
digitalWrite (16,sc); // Se asigna el pin 16 al segmento c.
digitalWrite (17,sd); // Se asigna el pin 17 al segmento d.
digitalWrite (18,se); // Se asigna el pin 18 al segmento e.
digitalWrite (19,sf); // Se asigna el pin 19 al segmento f.
digitalWrite (20,sg); // Se asigna el pin 20 al segmento g.
digitalWrite (21,Pd); // Se asigna el pin 21 al segmento Pd.
}
void setup()
{
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT);
}
void loop()
{
display (1,1,1,1,1,1,0,0); // Se visualiza el número 0.
delay(pausa);
}
Segunda experiencia:
Ingresaremos un número por teclado mediante el monitor serie y lo mostramos en un visualizador de
7 segmentos.
Por ejemplo:
Se ingresa el número
0 por teclado y luego
se presiona la tecla
ENTER, .
Recordar que el circuito para realizar esta experiencia es el mismo, utilizado en la primera
experiencia.
10
15
20
25
30
35
40
45
50
55
60
1
f b
F G H I J
F G H I J
R2 R4 R6 R8 g a
R1 R3 R5 R7
A B C D E
A B C D E
a g
b f
10
15
20
25
30
35
40
45
50
55
60
1
Pd
e
d
c
FIGURA 6-19: Montaje para la segunda experiencia (el mismo de la primera experiencia).
/*
* EXPERIENCIA 6.2:
* Ingresaremos un número decimal por teclado y lo visualizaremos.
*/
int mensaje = 0;
void display(int sa, int sb, int sc, int sd, int se, int sf, int sg, int Pd)
{
digitalWrite (14,sa); // Se asigna el pin 14 al segmento a.
digitalWrite (15,sb); // Se asigna el pin 15 al segmento b.
digitalWrite (16,sc); // Se asigna el pin 16 al segmento c.
digitalWrite (17,sd); // Se asigna el pin 17 al segmento d.
digitalWrite (18,se); // Se asigna el pin 18 al segmento e.
digitalWrite (19,sf); // Se asigna el pin 19 al segmento f.
digitalWrite (20,sg); // Se asigna el pin 20 al segmento g.
digitalWrite (21,Pd); // Se asigna el pin 21 al segmento Pd.
}
void setup()
{
Serial.begin(9600);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT);
}
void loop()
{
if(Serial.available()>0)
{
mensaje = Serial.read();
if(mensaje == '0') display(1,1,1,1,1,1,0,0); // Se visualiza el número 0.
if(mensaje == '1') display(…
}
}
Control de visualizadores de 7 segmentos87
Tercera experiencia:
Realizaremos la programación de un contador ascendente/descendente y que la cuenta se muestre
en un visualizador de 7 segmentos. La cuanta ascendente se realizara por intermedio de un pulsador (B1),
de la misma manera, la cuenta descendente se realizara por un segundo pulsador (B2).
El circuito para esta experiencia, es el siguiente:
Incremento
Decremento
10
15
20
25
30
35
40
45
50
55
60
1
f b
F G H I J
F G H I J
R9 R10 R2 R4 R6 R8 g a
R1 R3 R5 R7
A B C D E
A B C D E
B1 B2 a g
b f
10
15
20
25
30
35
40
45
50
55
60
1
Pd
e
d
c
El programa es el siguiente:
/*
* EXPERIENCIA 6.3:
* Contador ascendente/descendente con visualizador de 7 segmentos.
*/
do
{
estado = digitalRead(pin);
if (estado != estadoAnterior)
{
contador = 0;
estadoAnterior = estado;
}
else
{
contador = contador + 1;
88Experiencia Nº 06
}
delay(1);
} while (contador < tiempoAntiRebote);
return estado;
}
void setup()
{
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT);
pinMode(BotonDecre, INPUT);
pinMode(BotonIncre, INPUT);
}
void loop()
{
estadoBotonIncre = digitalRead(BotonIncre);
if((estadoBotonIncre != estadoBotonAnteriorIncre) && (antiRebote(BotonIncre)))
{
cuenta++;
if(cuenta > 9)
{
cuenta = 9;
}
}
estadoBotonAnteriorIncre = estadoBotonIncre;
estadoBotonDecre = digitalRead(BotonDecre);
if((estadoBotonDecre != estadoBotonAnteriorDecre) && (antiRebote(BotonDecre)))
{
cuenta--;
if(cuenta < 0)
{
cuenta = 0;
}
}
estadoBotonAnteriorDecre = estadoBotonDecre;
actualizarNumero();
}
Control de visualizadores de 7 segmentos89
Cuarta experiencia:
Aprenderemos a controlar un panel implementado con cuatro visualizadores de 7 segmentos,
mediante la multiplexación.
10
15
20
25
30
35
40
45
50
55
60
1
1 2 3 4 f a g 2 b f a g 4 b b d f p
F G H I J
F G H I J
g 1 b f a g 3 b f a a c e g R9 R10
Q1 Q2 Q3 Q4
R1 R8
A B C D E
A B C D E
R11 R12 R13 R14 e p d c e p d c B1 B2
d c e p d c e p
10
15
20
25
30
35
40
45
50
55
60
1
10
15
20
25
30
35
40
45
50
55
60
1
5
F G H I J
F G H I J
A B C D E
A B C D E
10
15
20
25
30
35
40
45
50
55
60
1
void setup()
{
for(int i=0; i<=3; i++) pinMode(colums[i], OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT);
}
void loop()
{
digitalWrite(colums[0], HIGH);
for(int i=14; i<=21; i++)
{
digitalWrite(i,HIGH);
delay(pausa);
digitalWrite(i,LOW);
}
}
90Experiencia Nº 06
Quinta experiencia:
Mostraremos palabras de un máximo de cuatro letras para lograr ser mostradas en el panel de cuatro
visualizadores de 7 segmentos.
Para esto, primero se tiene que sacar los códigos binarios (o mapas de bit, BitMap) para las letras;
sólo algunas letras se pueden mostrar en un visualizadores de 7 segmentos.
A 1 1 1 0 1 1 1 0 119
S
Control de visualizadores de 7 segmentos91
Esp
TABLA 6-3: Segmentos activados (con UNO) para cada letra a mostrar en el display.
0 1 2 3 Matriz
Palabra
BitMap
La programación es la siguiente:
/*
* EXPERIENCIA 6.5:
* Visualización de palabras.
*/
void muestraPantalla()
{
for(int columna=0; columna<=3; columna++)
{
for(int i=0; i<=7; i++) digitalWrite(seg[i], LOW);
for(int j=0; j<=3; j++)
{
if(j==(columna)) digitalWrite(colums[j], HIGH);
else digitalWrite(colums[j], LOW);
}
for(int fila=0; fila<=7; fila++)
{
int Bit=(caracter[columna] >> fila) & 1;
if(Bit==1) digitalWrite(seg[fila], HIGH);
}
delayMicroseconds(500);
}
}
void setup()
{
for(int i=0; i<=7; i++)
92Experiencia Nº 06
{
pinMode(seg[i], OUTPUT);
digitalWrite(seg[i], LOW);
}
for(int j=0; j<=3; j++)
{
pinMode(colums[j], OUTPUT);
digitalWrite(colums[j], HIGH);
}
}
void loop()
{
muestraPantalla();
}
Sexta experiencia:
Desplazaremos de derecha a izquierda una palabra en el panel de cuatro visualizadores de 7
segmentos.
Para nuestra aplicación vamos a desplazar la palabra “HOLA”
0 1 2 3 4 5 6 7 8 9 10 11 Matriz
Palabra
BitMap
La programación es la siguiente:
/*
* EXPERIENCIA 6.6:
* Desplazamiento de la palabra HOLA.
*/
void desplazaPantalla()
{
for(int d=0; d<=8; d++)
{
for(int r=0; r<=150; r++)
{
for(int columna=(0+d); columna<=(3+d); columna++)
{
for(int i=0; i<=7; i++) digitalWrite(seg[i], LOW);
for(int j=0; j<=3; j++)
{
if(j==(columna-d)) digitalWrite(colums[j], HIGH);
else digitalWrite(colums[j], LOW);
}
for(int fila=0; fila<=7; fila++)
{
int Bit=(caracter[columna] >> fila) & 1;
if(Bit==1) digitalWrite(seg[fila], HIGH);
}
delayMicroseconds(500);
}
}
}
}
Control de visualizadores de 7 segmentos93
void setup()
{
for(int i=0; i<=7; i++)
{
pinMode(seg[i], OUTPUT);
digitalWrite(seg[i], LOW);
}
for(int j=0; j<=3; j++)
{
pinMode(colums[j], OUTPUT);
digitalWrite(colums[j], HIGH);
}
}
void loop()
{
desplazaPantalla();
}
Sétima experiencia:
Desplazaremos de derecha a izquierda un MENSAJE en el panel de cuatro visualizadores de 7
segmentos.
Para nuestra aplicación desplazaremos el mensaje “HOLA BCD UNIVERSITY 2017”. El código es el
siguiente:
/*
* EXPERIENCIA 6.7:
* Desplazamiento de un mensaje.
*/
int desp;
int cant=0;
void construyeMatriz()
{
for(int col=0; col<=3; col++)
{
caracter[cant]=0;
cant++;
}
void desplazaPantalla()
{
for(int d=0; d<=desp; d++)
{
for(int r=0; r<=150; r++)
{
for(int columna=(0+d); columna<=(3+d); columna++)
{
for(int i=0; i<=7; i++) digitalWrite(seg[i], LOW);
for(int j=0; j<=3; j++)
{
if(j==(columna-d)) digitalWrite(colums[j], HIGH);
else digitalWrite(colums[j], LOW);
}
for(int fila=0; fila<=7; fila++)
{
int Bit=(caracter[columna] >> fila) & 1;
if(Bit==1) digitalWrite(seg[fila], HIGH);
}
delayMicroseconds(500);
}
}
}
}
void setup()
{
for(int i=0; i<=7; i++)
{
pinMode(seg[i], OUTPUT);
digitalWrite(seg[i], LOW);
}
for(int j=0; j<=3; j++)
{
pinMode(colums[j], OUTPUT);
digitalWrite(colums[j], HIGH);
}
construyeMatriz();
}
void loop()
{
desplazaPantalla();
}
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
Experiencia N ° 06