En este post vamos a ver como generar números pseudo-aleatorios e imprimirlos en un lcd 16x2 utilizando el micro-controlador PIC 16F628A
¿QUE ES UN NUMERO PSEUDO-ALEATORIO?
Un número pseudo-aleatorio es un número generado en un proceso que parece producir números al azar, pero no lo hace realmente. Las secuencias de números pseudo-aleatorios no muestran ningún patrón o regularidad aparente desde un punto de vista estadístico, a pesar de haber sido generadas por un algoritmo completamente determinista, en el que las mismas condiciones iniciales producen siempre el mismo resultado.
MATERIALES:
Los materiales utilizados para este proyecto son los siguientes:
- PIC 16F628A
- LCD 16*2
DIAGRAMA DE CONEXIONES:
FUNCIONAMIENTO:
Al energizar el micro-contolador nos aparecerán números aleatorios en el LCD, en este caso los números que nos aparecerán irán de 0 a 50, si queremos obtener valores mayores a 50 debemos modificar los siguientes valores.
X = (((7*X)+5) Mod 99) N = X Mod 51
Ejemplo:
Si queremos generar números aleatorios con valores que vayan de 0 a 100 modificamos:
X = (((7*X)+5) Mod 199) N = X Mod 101
Para la generación de los números pseudo-aleatorios nos basamos en el siguiente algoritmo: Generador de congruencia lineal
CÓDIGO:
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : Esteban Carrillo - www.edeptec.com *
'* Notice : Copyright (c) 2022 *
'* : All Rights Reserved *
'* Date : 18/03/2021 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5
x VAR BYTE
y VAR BYTE
n VAR BYTE
y = 5
CICLO:
x = (((7*x)+5) Mod 99)
n = x Mod 50
LCDOUT $fe, 1
LCDOUT $fe, $80 + y, "Num:" ,DEC n
PAUSE 500
GOTO CICLO
Publicar un comentario
¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.
» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?
Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.
¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.