0% encontró este documento útil (0 votos)
42 vistas11 páginas

Generador de Números Aleatorios en Displays

Este documento describe el desarrollo de un circuito y código para mostrar números aleatorios en dos displays de 8 dígitos. Se utilizan CI para controlar los displays y generar los números. El código implementa una interrupción para generar un número aleatorio cada vez que se presiona un pulsador y mostrarlo constantemente en los displays, logrando persistencia visual simultánea en los 8 dígitos. Se incluyen diagramas de flujo y funciones para la configuración de periféricos, interrupción y mostrar los números en los displays.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas11 páginas

Generador de Números Aleatorios en Displays

Este documento describe el desarrollo de un circuito y código para mostrar números aleatorios en dos displays de 8 dígitos. Se utilizan CI para controlar los displays y generar los números. El código implementa una interrupción para generar un número aleatorio cada vez que se presiona un pulsador y mostrarlo constantemente en los displays, logrando persistencia visual simultánea en los 8 dígitos. Se incluyen diagramas de flujo y funciones para la configuración de periféricos, interrupción y mostrar los números en los displays.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

lOMoARcPSD|10248872

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN


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

Embebidos
Docente: Dr. Héctor Gilberto Barrón González

Actividad Fundamental 2: Update Displays.

Nombre: Diego Giovany Carrillo Cardenas


Matricula: 1867863

Hora: V4,V5,V6 Salón: 7215


Brigada: 002 Plan: 401
lOMoARcPSD|10248872

Contenido
1.- Descripción del Problema .............................................................................................................3
2.- Objetivo ........................................................................................................................................3
3.- Diagrama de Flujo Propuesto ........................................................................................................4
4.- Diagrama de la Implementación del Circuito (Si fue requerido) ...................................................6
5.- Evidencia Grafica (Si existe un circuito) .........................................................................................6
6.- Prototipos de funciones principales ..............................................................................................8
lOMoARcPSD|10248872

1.- Descripción del Problema

Generador de números aleatorios

Utilizando dos displays de 4 dígitos de ánodo común se generará un barrido generando


persistencia visual en los displays. Para ello se utilizará un CI 74238 para controlar el ánodo
que enciende cada digito y un CI 7447 para generar el número que se escribirá en cada
digito. Para lograr el funcionamiento adecuado siga las siguientes instrucciones:
1.- Desarrolle el código necesario para enviar un numero y su correspondiente señal de
activación en el lugar que le corresponda del display.
2.- Genere el efecto de persistencia visual de forma simultanea en los 8 dígitos del display,
considerando un digito apagado entre horas, minutos y segundos.
3.- Generar un numero aleatorio de 8 dígitos desde la subrutina de interrupción.
4.- Desde el while principal imprimir constantemente el valor del numero random en el
display.

2.- Objetivo
• ….. Implementar un circuito de tal manera que podamos visualizar en un display de 8
dígitos el numero aleatorio.
• Desarrollar un código que permita habilitar una interrupción externa para que al presionar
un pulsador nos muestre un numero aleatorio, así cada que presionemos el pulsador.
lOMoARcPSD|10248872

3.- Diagrama de Flujo Propuesto

.
lOMoARcPSD|10248872


lOMoARcPSD|10248872

4.- Diagrama de la Implementación del


Circuito (Si fuerequerido)

• ……

5.- Evidencia Grafica


Agregue algunas imágenes representativas del funcionamiento del circuito.
lOMoARcPSD|10248872

6.- Prototipos de funciones principales


Agregue los prototipos o llamadas a función utilizados para:

• La configuración de periféricos.
o Displays
• void displayNumber(int count);
• void setDisplay(int dig1, int dig2, int dig3, int dig4, int dig5, int
dig6, int dig7, int dig8);
o Interrupción
o void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

Describa línea por línea el Código de la subrutina de interrupción (igual que el

ejemplo del barido)

Linea 85 Declaramos globalmente la variable numeroRandom.

Linea 86 Comienza la subrutina de interrupción.

Linea 87 Se almacena en la variable numeroRandom un numero comprendido de


8 dígitos.

Describa en forma clara pero breve el funcionamiento del barrido en el display,


utilice el codigo dela función o funciones que sea necesario ej.
Línea 42.- la función DisplayNumber junto con la variable count ya almacenada y se integra
displayNumber, prototipo para dar unidades a los dígitos de los dígitos en los display.
Línea 43.- abre llave “{”.
Linea 45.- En la imagen pueden ver que se declaran las 8 variables que la función utilizara para
lograr prender los dichos segmentos de cada Display y con esto Se integran los dígitos del 1 al 8 de
los display
Linea 46.- El digito se almacena con una unidad de la variable count en dígito 1 del display #1 de
derecha a izquierda se almacena con un valor de una unidad de la variable count en díg1 del
display #1. El valor del dígito sería que es igual a 1 y con esto quiere decir que se usa un digito en la
unidad de la variable count en dig1, ósea la salida al display de una unidad.
Linea 47.- El digito se almacena con un valor de decena de la variable count en dígito 2 del display
#1. y con esto quiere decir que se almacena con un valor de decena de la variable count en díg2
del display #1. El valor del dígito sería que es igual a 10 se usa un digito en la unidad de la variable
count en dig2, ósea la salida al display de una decena.
Linea 48.- El digito se almacena con un valor de centena de la variable count en dígito 3 del display
#1 y con esto quiere decir que se almacena con un valor de centena de la variable count en dígito 3
del display #1. El valor del dígito sería que es igual a 100 se usa un digito en la unidad de la variable
count en dig3, ósea la salida al display de una centena.
lOMoARcPSD|10248872

Linea 49.- El digito se almacena con un valor de mil de la variable count en dígito 4 del display #1 y
con esto quiere decir que se almacena con un valor de unidad de mil de la variable count en díg4
del display #1 de derecha a izquierda (según el diagrama esquemático). El valor del dígito sería
que es igual a 1,000 se usa un digito en la unidad de la variable count en dig4, ósea la salidaal
display de una unidad de mil.
Linea 50.- El digito se almacena con un valor de decena de mil de la variable count en dígito 5 del
display #2 de derecha a izquierda (según el diagrama esquemático) y con esto quiere decir que se
almacena con un valor de decena de mil de la variable count en díg5 del display #2. El valor del
dígito sería que es igual a 10,000 se usa un digito en la unidad de la variable count en dig5, ósea la
salida al display de una decena de mil.
Linea 51.- El digito se almacena con un valor de centena de mil de la variable count en dígito 6 del
display #2 y con esto quiere decir que se almacena con un valor de centena de mil de la variable
count en díg6 del display #2. El valor del dígito sería que es igual a 100,000 se usa un digito en la
unidad de la variable count en dig6, ósea la salida al display de una centena de mil.
Linea 52.- El digito se almacena con un valor de unidad de millón de la variable count en dígito 7
del display #2 y con esto quiere decir que se almacena con un valor de unidad de millón de la
variable count en díg7 del display #2. El valor del dígito sería que es igual a 1,000,000 se usaun
digito en la unidad de la variable count en dig7, ósea la salida al display de una unidad de millón.
Linea 53.- El digito se almacena con un valor de decena de millón de la variable count en dígito 8
del display #2 y con esto quiere decir que se almacena con un valor de decena de millón de la
variable count en díg8 del display #2 (según el diagrama esquemático). El valor del dígito sería que
es igual a 10,000,000 se usa un digito en la unidad de la variable count en dig8, ósea lasalida al
display de una decena de millón.
Linea 54.- Se llama a la función setDisplay almacenando las variables previamente definidas y
conesto en el mismo programa que ejecutara con las dichas variables de salidas en el display en
este caso en 8 dígitos y es así que da salida a todos los valores de los dígitos anteriores ejecutando
el prototipo setDisplay. Muestra el valor en el display, y con esto quiere decir que se le nombra a la
función setDisplay almacenamiento las variables previamente definidas dentro.
Linea 55.- Cierra llave “}”.

Linea 56.- y con esto se integran 8 valores con setDisplay previamente declarado siendo que la
funcion setDisplay almacenamiento las variables previamente definidas en la funciones
lOMoARcPSD|10248872

DisplayNumber.
Linea 57.- Abre llave “{”.
Línea 58.- Se concatena el valor de D1 que es igual a 0x00 y dig1 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig1 y se coloca en la posición D1 y con esto nos da la
salida el digito de unidad, menor peso, llamado dig1 al dígito 1 del display #1 de derecha a
izquierda.
Línea 59.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 61.- Se concatena el valor de D2 que es igual a 0x10 y dig2 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig2 y se coloca en la posición y es por eso que da salida
el digito con unidades de decenas llamado dig2 al dígito 2 del display #1.
Línea 62.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 64.- Se concatena el valor de D3 que es igual a 0x20 y dig3 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig3 y se coloca en la posición y es por eso que da salida
el digito con unidades de decenas llamado dig3 al dígito 3 del display #1.
Línea 65.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 67.- Se concatena el valor de D4 que es igual a 0x30 y dig4 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig4 y se coloca en la posición D4 y es por eso que da
salida el digito con unidades de mil llamado dig4 al dígito 4 del display #1.
Línea 68.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 69.- Se concatena el valor de D5 que es igual a 0x40 y dig5 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig5 y se coloca en la posición D5 y es por eso que da
salida el digito con unidades de decenas de mil llamado dig5 al dígito 5 del display #2.
Línea 71.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 72.- - Se concatena el valor de D6 que es igual a 0x50 y dig6 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig6 y se coloca en la posición D6 y es por eso que da
salida el digito con unidades de centenas de mil llamado dig6 al dígito 6 del display #2.
Línea 74.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 76.- - Se concatena el valor de D7 que es igual a 0x60 y dig7 del arreglo de números que es
0x00 y se define la salida de GPIOC esta será igual a la posición de la variable ya definida números,
esta variable está haciendo indicada por dig7 y se coloca en la posición D7 y es por eso que da
salida el digito con unidades de millón llamado dig7 al dígito 7 del display #2.
Línea 77.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Línea 79.- Se concatena el valor de D8 que es igual a 0x70 y dig8 del arreglo de números que es
0x00 y esto se define la salida de GPIOC esta será igual a la posición de la variable ya definida
números, esta variable está haciendo indicada por dig8 y se coloca en la posición D8 y es por eso
que da salida el digito con unidades de decenas de millón llamado dig8 al dígito 8 del display #2
lOMoARcPSD|10248872

Línea 80.- Es llamada la función msDelay y esta se declara con un valor de 1 ya declarado, y con
esto con HAL delay hace que el tiempo de salida se tarde 1 segundo en mandar el valor al display.
Linea 81.- Cierra llave “{”.
lOMoARcPSD|10248872

Describa línea por línea el loop de control principal (contenido del While(1)) y las funciones que de
el se derivan.

Manda a llamar a la variable numeroRandom e imprime el numero contenido en esa variable en los displays.

Nota: Adjunte el codigo completo del programa utilizado en archivo zip

También podría gustarte