LabMIyL - MieV4 - 6,8 - E2 - P4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN

FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA


Laboratorio Microcontroladores
Práctica N.º04 - Visualización de números en el Display de 7
Segmentos

N.° de equipo: 2 Brigada: 315

Nombre Matricula Numero de lista


Marcos Ezequiel
1953168 6
Cervantes Castro
Javier Osmar
Covarrubias 1958896 8
Bautista

Nombre del profesor: Jesús Daniel Garza Camarena

Semestre en curso: 7to

Días de la clase y Hora: Miércoles V4

San Nicolas de los Garza, N.L Fecha: 22/09/2023


Objetivo (obligatorio)

Al finalizar esta práctica, el estudiante será capaz de configurar y controlar un Display de


7 Segmentos utilizando un microcontrolador, para mostrar números en el rango de 0 a 9
y así visualizar información de forma efectiva.

Introducción a la práctica (¿Cómo funciona los display 7


segmentos?) (obligatorio)

El display de siete segmentos es un dispositivo utilizado para mostrar información de


manera visual. En este contexto, se utiliza principalmente para representar dígitos
decimales que van desde 0 hasta 9, lo que implica la utilización del código BCD (Binary
Coded Decimal). Cada uno de los segmentos tiene la forma de una pequeña línea
luminosa.

Estos dispositivos también son conocidos como lámparas de siete segmentos o


visualizadores de siete segmentos.

Las partes esenciales que componen estos dispositivos incluyen la carcasa que los
protege, los terminales para la conexión, los LEDs que emiten la luz y el punto decimal.

Comúnmente, este componente se emplea para representar números en una variedad


de dispositivos electrónicos. En su interior, están compuestos por una serie de diodos
LED con conexiones específicas, dispuestos estratégicamente para formar un número 8
cuando se activan los segmentos de acuerdo con un patrón gráfico predefinido.

El display de siete segmentos es un dispositivo visual que utiliza siete segmentos


individuales para representar dígitos decimales del 0 al 9, y en algunos casos letras, a
través de la activación individual de estos segmentos. Este proceso se controla mediante
LEDs que funcionan a baja tensión y requieren poca potencia, lo que permite su
excitación directa con puertas lógicas. Se distinguen dos tipos principales: el ánodo
común, donde los segmentos comparten el terminal positivo, y el cátodo común, donde
los LEDs se unen en el terminal negativo. Además, existen configuraciones múltiples y
tamaños diversos. Estos dispositivos tienen una amplia gama de aplicaciones, desde
relojes y temporizadores hasta instrumentos de medición digital. En entornos
industriales, son esenciales debido a su durabilidad y bajo consumo energético, y se
pueden utilizar en conjuntos con circuitos integrados decodificadores para mostrar
información más compleja, como en ascensores y contadores. Aunque existen varias
tecnologías de visualización, los displays de siete segmentos basados en LEDs siguen
siendo los más eficientes y prácticos en la mayoría de los casos.

Un contador automático ascendente en hexadecimal es un dispositivo electrónico


intrigante que combina componentes de electrónica y programación para llevar a cabo
una tarea aparentemente simple pero fascinante: contar desde 0 hasta F en base
hexadecimal (lo que equivale a contar de 0 a 15 en decimal) y luego reiniciar el ciclo.
Más allá de su función fundamental, este proyecto tiene una aplicación educativa y de
visualización única, ya que permite mostrar números hexadecimales en un display de 7
segmentos, lo que puede resultar muy útil en la enseñanza de conceptos de
programación y electrónica digital.
Imagen del diagrama de bloques (10 puntos)

Lista de materiales utilizados (nombres de los dispositivos) (5 puntos)

• Tarjeta de desarrollo Arduino ATmega328P.

• Fuente de voltaje de corriente directa +5V, para ATmega328P en empaquetado


DIP.

• Protoboard.

• Resistencias de 220 ohms.

• Leds (rojo, verde, blanco).


• Display 7 segmentos
• Push bottom
Marco teórico (detalles de los elementos utilizados dentro de la
práctica) (5 puntos)

En primer lugar, el ATmega328P es un conocido microcontrolador fabricado por


Microchip Technology, que forma parte de la familia de microcontroladores AVR. El
componente está diseñado para ser una solución altamente versátil y energéticamente
eficiente para aplicaciones que van desde proyectos de electrónica de aficionados hasta
sistemas integrados más complejos. Sus principales características son:

• Arquitectura AVR: El ATmega328P se basa en la arquitectura AVR (Advanced


Virtual RISC) de Atmel, que tiene un conjunto de instrucciones compacto y
eficiente. Esto permite que las instrucciones se ejecuten en un solo ciclo de reloj,
lo que ayuda a lograr un rendimiento rápido y eficiente desde el punto de vista
energético.
• Velocidad de reloj: puede funcionar a una frecuencia de reloj de hasta 20 MHz, lo
que proporciona una potencia de procesamiento relativamente alta para una
variedad de aplicaciones.
• Memoria: Hay una memoria flash de 32 KB para almacenamiento de programas,
una memoria RAM de 2 KB para almacenamiento temporal de datos y una
memoria EEPROM de 1 KB para almacenamiento de datos no volátiles. Estas
memorias son esenciales para almacenar códigos de programa, variables y
configuraciones.
• Periféricos integrados: el ATmega328P incluye varios periféricos integrados para
simplificar la interacción con el entorno externo. Esto incluye temporizadores,
USART serial, SPI (interfaz periférica serial) e interfaces I2C, pines de E/S
programables, convertidores analógicos a digitales (ADC) y más.
• Puertos de E/S: El chip tiene 23 pines de E/S programables que brindan una gran
flexibilidad para conectar y controlar componentes externos como sensores,
actuadores, pantallas, etc.
• Modos de ahorro de energía: uno de los aspectos más destacados de los
microcontroladores AVR es la capacidad de operar en varios modos de ahorro de
energía. Esto es fundamental para aplicaciones alimentadas por batería en las
que desea minimizar el consumo de energía cuando el dispositivo está inactivo.

En cuanto a los LED (diodos emisores de luz), estos dispositivos permiten que la
corriente fluya en una dirección y emiten luz cuando están polarizados. Estos
componentes suelen funcionar a alrededor de 2 V. Su funcionamiento es sencillo: cuando
se aplica corriente al semiconductor superior de un LED, una corriente fluye a través de
él provocando la emisión de luz. Algunas características notables de los LED incluyen:

• Variaciones de color: Debido al pequeño tamaño de los LED, se pueden combinar


en tiras para crear LED RGB, proporcionando múltiples colores controlando la
corriente y la luz emitida.
• Brillo y eficiencia: pueden conseguir importantes niveles de iluminación sin elevar
demasiado la temperatura.
• Respetuoso con el medio ambiente: los LED no contienen elementos tóxicos y
alcanzan su máximo rendimiento casi inmediatamente después de su encendido.
Además, son reutilizables, lo que permite repararlos y reemplazarlos fácilmente
en caso de daño.

Finalmente, hablando de resistencias, son una medida de resistencia a la corriente en


un circuito. Todos los materiales tienen cierta resistencia al paso de la corriente eléctrica
y se pueden dividir en dos grandes categorías:

• Conductores: Estos materiales tienen una resistencia eléctrica muy baja, lo que
permite que los electrones se muevan fácilmente a través de ellos. Ejemplos de
conductores son la plata, el cobre, el oro y el aluminio.
• Aislante: Por el contrario, los materiales aislantes tienen una alta resistencia
eléctrica y restringen el flujo de electrones. Ejemplos de aislantes son el caucho,
el papel, el vidrio, la madera y el plástico.
Imagen del Diagrama Esquemático hecho en un software EDA con los
nombres de sus integrantes (25 puntos)
Imagen del diagrama de flujo del programa (10 puntos)
Código en lenguaje C con los nombres de sus integrantes (copia y
pega el código directamente del IDE) (15 puntos)

/*
* Práctica 4.c
*
* Created: 11/09/2023 11:12:46 a. m.
* Author : Javie
* Docente: Jesús Daniel Garza Camarena
*
* Equipo 2
*
* Marcos Ezequiel Cervantes Castro #1953168 N.L: 6
* Javier Osmar Covarrubias Bautista #1958896 N.L: 8
* Brigada: 315
* Dia y hora: Miercoles, V4
*
* Fecha: 20/09/2023
*/

#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>

//--Constantes
#define DELAY 500

//---Definiciones

//--Inputs
#define SWITCH_DDRX DDRC
#define SWITCH_PORTX PORTC
#define SWITCH_PINX PINC
#define SWITCH_0 PINC3

//--Outputs
//---Puertos para segmentos A a F
#define DISPLAY_DDRX DDRD
#define DISPLAY_PORTX PORTD
#define DISPLAY_DDRX2 DDRB
#define DISPLAY_PORTX2 PORTB

//----Segmento A
#define SEG_A PORTD2
#define SEG_A_ON DISPLAY_PORTX |= _BV(SEG_A);
#define SEG_A_OFF DISPLAY_PORTX &= ~_BV(SEG_A);

//----Segmento B
#define SEG_B PORTD3
#define SEG_B_ON DISPLAY_PORTX |= _BV(SEG_B);
#define SEG_B_OFF DISPLAY_PORTX &= ~_BV(SEG_B);

//----Segmento C
#define SEG_C PORTD4
#define SEG_C_ON DISPLAY_PORTX |= _BV(SEG_C);
#define SEG_C_OFF DISPLAY_PORTX &= ~_BV(SEG_C);

//----Segmento D
#define SEG_D PORTD5
#define SEG_D_ON DISPLAY_PORTX |= _BV(SEG_D);
#define SEG_D_OFF DISPLAY_PORTX &= ~_BV(SEG_D);

//----Segmento E
#define SEG_E PORTD6
#define SEG_E_ON DISPLAY_PORTX |= _BV(SEG_E);
#define SEG_E_OFF DISPLAY_PORTX &= ~_BV(SEG_E);

//----Segmento F
#define SEG_F PORTD7
#define SEG_F_ON DISPLAY_PORTX |= _BV(SEG_F);
#define SEG_F_OFF DISPLAY_PORTX &= ~_BV(SEG_F);

//----Segmento G
#define SEG_G PORTB2
#define SEG_G_ON DISPLAY_PORTX2 |= _BV(SEG_G);
#define SEG_G_OFF DISPLAY_PORTX2 &= ~_BV(SEG_G);

void init_ports(void);
void show_number(uint8_t numero);

int main(void)
{
init_ports();
uint8_t i = 0;

while (1)
{
i = 0;
while(i < 16)
{
show_number(i);
init if (!(SWITCH_PINX & _BV(SWITCH_0)))
{
i = i;
}//--Fin if
else
{
i++;
}//--Fin else
_delay_ms(DELAY);
}//--Fin while
}//--Fin while principal
}//--Fin main

//--Funciones

void init_ports(void)
{
//--Inputs
SWITCH_DDRX &= ~(_BV(SWITCH_0));
SWITCH_PORTX |= (_BV(SWITCH_0));

//--PULL-UP
DISPLAY_DDRX |= (_BV(SEG_A) | _BV(SEG_B) | _BV(SEG_C) |
_BV(SEG_D) | _BV(SEG_E) | _BV(SEG_F) | _BV(SEG_G));
DISPLAY_PORTX &= ~(_BV(SEG_A) | _BV(SEG_B) | _BV(SEG_C) |
_BV(SEG_D) | _BV(SEG_E) | _BV(SEG_F) | _BV(SEG_G));
DISPLAY_DDRX2 |= (_BV(SEG_A) | _BV(SEG_B) | _BV(SEG_C) |
_BV(SEG_D) | _BV(SEG_E) | _BV(SEG_F) | _BV(SEG_G));
DISPLAY_PORTX2 &= ~(_BV(SEG_A) | _BV(SEG_B) | _BV(SEG_C) |
_BV(SEG_D) | _BV(SEG_E) | _BV(SEG_F) | _BV(SEG_G));
}

//--Show number

void show_number(uint8_t numero)


{
switch (numero)
{
//--Numero 0
case 0:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_OFF;
break;
//--Numero 1
case 1:
SEG_A_OFF;
SEG_B_ON;
SEG_C_ON;
SEG_D_OFF;
SEG_E_OFF;
SEG_F_OFF;
SEG_G_OFF;
break;
//--Numero 2
case 2:
SEG_A_ON;
SEG_B_ON;
SEG_C_OFF;
SEG_D_ON;
SEG_E_ON;
SEG_F_OFF;
SEG_G_ON;
break;
//--Numero 3
case 3:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_ON;
SEG_E_OFF;
SEG_F_OFF;
SEG_G_ON;
break;
//--Numero 4
case 4:
SEG_A_OFF;
SEG_B_ON;
SEG_C_ON;
SEG_D_OFF;
SEG_E_OFF;
SEG_F_ON;
SEG_G_ON;
break;
//--Numero 5
case 5:
SEG_A_ON;
SEG_B_OFF;
SEG_C_ON;
SEG_D_ON;
SEG_E_OFF;
SEG_F_ON;
SEG_G_ON;
break;
//--Numero 6
case 6:
SEG_A_ON;
SEG_B_OFF;
SEG_C_ON;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_ON;
break;
//--Numero 7
case 7:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_OFF;
SEG_E_OFF;
SEG_F_OFF;
SEG_G_OFF;
break;
//--Numero 8
case 8:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_ON;
break;
//--Numero 9
case 9:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_OFF;
SEG_E_OFF;
SEG_F_ON;
SEG_G_ON;
break;
//--Letra A
case 10:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_OFF;
SEG_E_ON;
SEG_F_ON;
SEG_G_ON;
break;
//--Letra B
case 11:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_ON;
break;
//--Letra C
case 12:
SEG_A_ON;
SEG_B_OFF;
SEG_C_OFF;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_OFF;
break;
//--Letra D
case 13:
SEG_A_ON;
SEG_B_ON;
SEG_C_ON;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_OFF;
break;
//--Letra E
case 14:
SEG_A_ON;
SEG_B_OFF;
SEG_C_OFF;
SEG_D_ON;
SEG_E_ON;
SEG_F_ON;
SEG_G_ON;
break;
//--Letra F
case 15:
SEG_A_ON;
SEG_B_OFF;
SEG_C_OFF;
SEG_D_OFF;
SEG_E_ON;
SEG_F_ON;
SEG_G_ON;
break;
}

}
Fotografía de solo el área útil del prototipo armado, sin usar jumpers
en las conexiones del protoboard, si se pueden usar desde la tarjeta
de desarrollo (5 puntos)

Cuestionario de la práctica contestado (5 puntos)

1. ¿Cómo funciona la multiplexación de display?

R = La multiplexación de displays es una técnica que permite controlar múltiples


displays, como los displays de 7 segmentos, utilizando un número limitado de
pines de salida en un microcontrolador o circuito integrado. Se basa en la
persistencia visual de la retina humana, que hace que una imagen siga siendo
percibida por un breve momento después de que se ha apagado. Esta técnica es
especialmente útil cuando se necesita mostrar información en varios displays
simultáneamente, como en relojes digitales o termómetros.
El proceso comienza conectando todos los displays en paralelo, lo que significa
que los ánodos (o cátodos, según el tipo de display) de los displays se conectan
juntos, y los segmentos de cada display se conectan a pines separados del
controlador. Luego, el controlador selecciona uno de los displays activando su
ánodo (o cátodo) y envía los datos que se deben mostrar en ese display a través
de los pines de segmentos correspondientes. Por ejemplo, si se desea mostrar el
número "5", se activarán los segmentos necesarios para formar ese número en el
display seleccionado.

Después de un breve período de tiempo, generalmente milisegundos, el


controlador apaga el display seleccionado y pasa al siguiente. Este proceso de
selección y visualización se repite rápidamente para todos los displays. Aunque
los displays se activan uno a la vez en rápida secuencia, la persistencia visual de
la retina hace que percibamos todos los displays como si estuvieran encendidos
al mismo tiempo. Esta técnica ahorra recursos y simplifica el diseño de circuitos al
controlar varios displays con menos pines de control.

2. ¿Qué diferencia existe entre colocar una sola resistencia al pin común a
conectar una resistencia a cada segmento?

R = La principal diferencia está en la finalidad que se le quiera dar a esta, pues


depende de cómo se coloque, esta puede limitar o no la corriente que pasa a
través de los leds del display, si se usa solo en el común, nos ahorramos
resistencias y cables, pero la vida de uestro display baja considerablemente, pues
en un momento habrá una corriente considerable pasando a traevz de los leds

Por otro lado, si ponemos una resistencia a cada uno, aunque gastamos más
pines, podemos tener un mayor control de luminosidad en cada segmento
Conclusión personal por cada integrante (5 puntos)

Javier Osmar Covarrubias Bautista: Por medio de esta práctica aprendí a controlar un
display de 7 segmentos de cátodo común por medio de un microcontrolador Arduino
ATmega328P. Para esto hice uso del comando Switch para poder declarar como es que
se iba a prender el display dependiendo del numero en el que estuviese, además de que
asigne los pines de entrada y salida que mas me convenian a la hora de conectar el
ATmega328P al protoboard, finalmente, solo nos quedaba asignar el pin que ocuparía el
botón y crear un comando el cual haría que el botón cumpliera la función de pausa. Por
lo que con todo esto dicho puedo decir que la practica fue un éxito debido a que logramos
realizar todo lo que nos propusimos.

Marcos Ezequiel Cervantes Castro: el display de siete segmentos es un componente


versátil ampliamente utilizado para mostrar información visualmente, especialmente
dígitos decimales. Su estructura, con siete segmentos individuales controlados por LEDs,
permite una representación clara y eficiente de números y letras. Este dispositivo
encuentra aplicaciones en una amplia variedad de dispositivos electrónicos, desde
relojes hasta instrumentos industriales, debido a su durabilidad y bajo consumo de
energía.

Además, la combinación de displays de siete segmentos con circuitos multiplexados es


esencial en proyectos como contadores automáticos ascendentes en hexadecimal. Estos
proyectos no solo son interesantes desde el punto de vista técnico, sino que también
ofrecen una valiosa herramienta educativa para comprender mejor conceptos de
programación y electrónica digital.
Referencias Bibliográficas en formato APA (mencionar los datasheet
utilizados, libros, páginas web, etc.) (obligatorio)

• Admin. (2022). Display de 7 segmentos. Industrias GSL.


https://industriasgsl.com/blogs/automatizacion/display-de-7-
segmentos#:~:text=%C2%BFC%C3%B3mo%20funciona%20un%20display%20
de,consiguiendo%20formar%20cualquier%20d%C3%ADgito%20num%C3%A9ri
co.
• Administrador. (2021a, marzo 7). Display 7 segmentos ánodo y cátodo común.
HeTPro-Tutoriales. https://hetpro-store.com/TUTORIALES/display-7-segmentos-
anodo-catodo-comun/
• Técnico. (2020). Display de 7 segmentos: ¿Qué es?, ¿Cómo funciona?, tipos.
Actualidad Tecnologica. https://actualidadtecnologica.com/display-de-7-
segmentos/
• Display Technology - Seven Segment Display| Newark México. (s. f.).
https://mexico.newark.com/display-seven-segment-display-technology
• Paguayo. (2023, 12 febrero). El display de 7 segmentos - MCI Capacitación. MCI
Capacitación. https://cursos.mcielectronics.cl/2022/08/01/el-display-de-7-
segmentos/
• Multiplexación. (s. f.).
https://synnick.blogspot.com/2012/03/multiplexacion.html#:~:text=Multiplexaci%C
3%B3n%20de%20Displays&text=Si%20tenemos%20un%20oscilador%20que,se
nsaci%C3%B3n%20que%20esta%20permanentemente%20encendido.
• C, S. (2022). Multiplexación Display de 7 segmentos con PIC. Control Automático
Educación. https://controlautomaticoeducacion.com/microcontroladores-
pic/multiplexacion-display-7-segmentos/
• C, S. (2022a). Multiplexar Display 7 segmentos con arduino. Control Automático
Educación. https://controlautomaticoeducacion.com/arduino/multiplexar-display-
7-segmentos/
• Veloso, C. (2019). Multiplexar Display 7 segmentos. Tutoriales de Electrónica |
Matemática y Física. https://www.electrontools.com/Home/WP/multiplexar-
display-7-segmentos/

También podría gustarte