Programando Embedded System Microcontroller
con Metologia interactiva.
GILBERTO PASCUAL, 2019
Passive Avr
Programmer
Figura1
Figura2
“Ahora usted puede aprender a
Programar Microcontroladores de forma muy fácil”.
Introducción:
El siguiente proyecto nos enseña controlar
un Display de Ánodo Común, guardando la lógica de los números del Display en la
memoria EEPROM del Microcontrolador Atmega16.
En la Figura3 se muestra la lógica que se
usara para mostrar los números de 0 a 9 en el Display de ánodo común, teniendo
presente que para activar un segmento del Display usaremos un “0” lógico.
Figura3
Esquema
electrónico:
El siguiente esquema electrónico muestra
la implementación de este proyecto en un ambiente de test o simulación,
mediante el cual podemos ver el funcionamiento del software e interacción con
el hardware:
Figura4
Nota: El esquema presentado no es necesariamente el
que se implemente en un ambiente real.
Programa de
Control [Firmware]:
En la Figura5, se puede apreciar el código
escrito en leguaje Basic para controlar un Display de Ánodo común, guardando la
lógica de los números del Display en la memoria EEPROM del Microcontrolador, la
lógica a usar esta detallado en la Figura3.
Figura5
Análisis del
código del Programa:
1.
$regfile = "m16def.dat"
Declaramos el
Microcontrolador que usaremos, con esto el compilador conocerá los componentes
internos que podemos utilizar.
2.
$crystal = 8000000 Declaramos la frecuencia con la cual
trabajara nuestro Microcontrolador, puede usarse un cristal interno o externo.
3.
Config Portb = Output Configuramos todos los pines del puerto B
del Microcontrolador como salida.
4.
Portb = &HFF Asignamos a todos los pines del puerto B
con el calor de “1”, para iniciar con todos los segmentos del Display apagados.
5.
Declare Sub Leer_eemprom Mediante
esta línea le indicamos al compilador que estamos declarando una función
denominado “Leer_eeprom”, que posteriormente detallaremos que acciones realiza
esta función.
6.
Dim Datos (10) As Byte Declaramos una variable de nombre “Datos”
de tipo Array de 10 datos de tamaño Byte (8 Bits) para almacenar temporalmente
los datos que se encuentran en la memoria EEPROM.
7.
Dim I As Byte Declaramos una
variable de nombre “I” de tamaño Byte,
para utilizarlo como contador en la condicionales For.
8.
Do Creamos una sentencia secuencial,
mediante “Do”, hacemos repetitivo todo el código que se encuentra dentro de
lazo “Do” y “Loop”.
9.
Call Leer_eeprom Con
esta línea llamamos la función “Leer_eeprom” para que se ejecute.
10.
For I=0 To 9 Mediante esta línea iniciamos la sentencia For, donde indicamos al compilador que realice
todo el contenido que se encuentra entre For y Next desde I=0 hasta 9.
11.
Portb = Datos(i) Asignamos cada dato del Array guardado a
los pines del puerto B.
12.
Waitms 250 Después de haber hecho la asignación a los pines del puerto B, indicamos que
mantenga los valores por un tiempo de 250 ms.
13.
$eeprom - $data Dentro de estas palabras reservadas le
indicamos al compilador que los datos escritos mediante las etiquetas se van a
guardar en la memoria EEPROM del Microcontrolador y no en la memoria RAM.
14.
Segmentos: Etiqueta
donde se indica que datos se están guardando en la memoria EEPROM. Es decir le
indicamos que todos estos datos mencionados después de $Data, serán parte de la etiqueta Segmentos,
podemos crear muchos segmentos y guardarlos en la memoria EEPROM, para poder
reconocer la información se hace uso de las etiquetas para luego llamarlos.
15. Sub Leer_eeprom Aquí empezamos a escribir las acciones que
realizara la función “Leer_eeprom” y cerramos la función con la palabra End Sub.
16. For I=0 TO 9 Volvemos a llamar la secuencial For, para poder hacer la lectura de los datos
en la EEPROM y pasarlo en una variable local.
17. Readeeprom Datos(i),I Indicamos al programa que asignamos a cada
valor del Array “Datos (i)” un valor consecutivo de la memoria EEPROM.
Simulación
del proyecto:
En la Figura6, se puede apreciar el
momento en el cual el Display muestra el número 2.
Figura6
En la Figura7, se puede apreciar el
momento en el cual el Display muestra el número 5.
Figura7
En la Figura8, se puede apreciar el
momento en el cual el Display muestra el número 9.
Figura8
En la Figura9, se observa la simulación realizada
para observar el comportamiento de los registros y memoria EEPROM del
Microcontrolador.
Figura9
En la Figura10, se da a conocer cuando se
puso a compilar el código del programa, no se encontró ningún error.
Figura10
“Si te gusto el
artículo, compártelo, recuerda que hay otros que desean aprender y tú puedes
ayudarlos, comentando y compartiéndolo en tus redes”.
¡Gracias!
Atte. Gilberto
Pascual
hola amigo me podrias ayudar ? , debo realizar un luxómetro en bascom avr el cual debe medir la intensidad de luz mediante un ldr y debe mostrar el valor medido mediante 2 4511 a 2 display bcd 7 segmentos , y no se como realizarlo . desde ya muchas gracias ;) saludos .
ResponderEliminar