Вы находитесь на странице: 1из 23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores

Ejemplo N 2

Modelo PIC utilizado: 16F84

Este proyecto tambin puede ser desarrollado con los PIC:

16F6xx / 16F87x

Ttulo

Contador de eventos externos de 0 a 99.

Descripcin

Desarrollar un contador de eventos externos de 0 a 99 visualizando el estado de


la cuenta en 2 displays de 7 segmentos mediante un codificado CD4511. El estado de la cuenta de incrementa al presionar un pulsador.

Objetivo

Mostrar la manera de contabilizar eventos externos.

Procedimiento

Iniciar el contador a 0 y visualizarlo en los displays de 7 segmentos. Cada vez


que se presione un pulsador se incrementa el estado de la cuenta y se actualiza
la visualizacin.

Mdulos utilizados

Configuracin de puerto.
Asignacin da registro
Evaluacin de registro
Evaluacin de bits
Conversin a BCD
Visualizacin en display de 7 segmentos con codificador

Desarrollo del ejemplo


Comience creando un
nuevo proyecto.

Una vez generado un


nuevo proyecto, comenzamos declarando registros que vamos a utili zar.

Para eso debemos ir al men Declaracin/Registros como se


muestra en la imagen a la der echa.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 1/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Para declarar un registro haga doble clic
sobre uno de los registros de Usuario (de color verde). Estos registros son los que Ud.
puede utilizar para guardar los datos que se
requieran en el proyecto. Declare un registro
llamado contador.

Del mismo modo declare otro registro ll amado Banderas. Este registro lo utilizaremos para declarar un Bit en el cual vamos a
guardar el estado del pulsador.

Una vez declarados los registros proce da


a declarar un Bit llamado Pulsado.
Este Bit lo utilizaremos para indicar el estado actual del pulsador.

Para declarar un bit ingrese al men Declaracin/Bits.

Declare un bit llamado pulsado en el bit 0 del registro banderas.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 2/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


A continuacin vamos a configurar el puerto B. Para es to ingrese al rbol de herramientas como se muestra en la imagen de la derecha.
Se presenta la pantalla de configuracin del puerto B. El puerto B lo utilizaremos para conectar los displays de 7 segmentos, por esto l o configuramos como sali da.

Luego configure el puerto A. El pin RA0 como entrada como entrada y el resto como salidas.

El pin A0 lo utilizaremos para conectar el pulsador. Por esto debe estar configurado como Entrada.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 3/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Hasta ahora, el diagrama de flujo debera verse como la siguiente imagen.

Al comienzo del programa inicialice el Bit Pulsador en 0. Esto significa


que el pulsador no esta presio nado. Para esto ingrese al rbol de herramientas como se muestra en la im agen de la derecha.
Se presenta la pantalla Asignar un Valor a un Bit.
Asigne el valor 0 al Bit Presionado tal como se muestra en la siguiente imagen.

El diagrama debera verse como la siguiente imagen.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 4/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


A continuacin vamos a inicializar el registro contador en 0.
Para esto ingrese al rbol de herramientas como se muestra en la im agen
de la derecha.
Se presenta la pantalla Asignar un valor a un registro.
Asigne el valor literal decimal 0 al registro contador como lo muestra la
imagen siguiente.

Hasta ahora el diagrama debe verse como la siguiente imagen.

El siguiente paso consiste en visualizar el estado de la cuenta en los displays de 7 segmentos.


Para esto, es necesario primero convertir el valor del contador a formato BCD, es decir que debemos
descomponer el valor de la cuenta en Unidades y Decenas para luego mostrar cada valor en el display correspon diente.
Para mayor informacin sobre visualizacin de datos en displays de 7 segmentos consulte el Anexo1Visualizacin de datos en displays de 7 segmentos .
Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 5/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Para convertir un valor a BCD ingrese al men como se muestra en la
imagen de la derecha:
Se presenta la pantalla convertir registro a BCD.

Primero seleccione el registro que desea convertir a BCD. En este caso, el registro Contador.
Luego debe s eleccionar los registros donde guardar el resultado de la conversin. Como an no hemos
declarado los registros, presionamos el botn nuevo correspondiente a las unidades. Se presentar la
pantalla de declaracin de registros y decl aramos el registro Unidad.
Al volver de la pantalla de declaracin de registros, el registro recin declarado ha sido seleccion ado en
la lista automticamente.
Procedemos de la misma manera p ara el registro Decena.
Dado que nuestro proyecto slo cuenta hasta 99, el valor d e las centenas no es ne cesario declararlo.
Al presionar ingresar se inserta el bloque en el diagrama de flujo.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 6/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


A continuacin vamos a evaluar el estado del pulsador.
El pin de entrada A0 lo conectamos a 5V mediante una resistencia de
10K y el pulsador lo conectamos a masa. De esta manera, mientras no se
presiona el pulsador, el pin de entrada se encuentra asegurado en estado
alto (5V) y al presionar el pulsador se conecta directamente a masa gen erando un pulso bajo (0V).
Este tipo de conexin es muy comn al utilizar pulsadores ya que se el iminan los falsos pulsos a causa de ruido elctrico.
Para evaluar el estado del pin de entrada, se utiliza el bloque de evaluacin de Bit, para lo cual ingresamos al rbol de herramientas como lo muestra la imagen d e la dere cha.
Se presenta la pantalla Evaluar un Bit.
Seleccione el Bit a evaluar RA0, el operador de comparacin = y el
valor de comparacin 0, tal como se muestra en la siguiente imagen.

Al ingresar el bloque, el diagrama de


flujo debera verse como la siguiente imagen.
El bloque de evaluacin de Bit se puede interpretar como la formulacin de la
siguiente pregunta:
Si el bit RA0 es igual a 0

Dado que se trata de un bloque de


evaluacin (smbolo rombo), el mismo
debe tener 2 salidas, una para el SI y
otra para el NO.
El primer bloque que se inserta des pus de un bloque de evaluacin corresponde a la salida el SI y el segundo bloque corresponde a la salida del NO.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 7/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Con el bloque anterior (evaluacin del Pin RA0) estamos detectando si el pulsador se encuentra presionado. Si el resul tado de esta evaluacin es verdadero, debemos consultar el bit Pulsado que nos indica si
el pulsador ya estaba pr esionado desde el ciclo anterior.
La ejecucin del programa del microcontrolador se produ ce a tan alta velocidad, que en el breve instante
en que mantenemos presionado el pulsador, el microcontrolador evala varias veces el estado del pulsador
encontrndolo en estado presionado. Es aqu donde utilizamos el Bit pulsado para determinar si la pulsacin que se detecta en el pin de entrada corresponde a la misma pulsacin detectada en el ciclo anterior. Si
el Bit pulsado es 1, significa que la tecla se mantiene presionada, mientras que si el bit pulsado se encuentra en 0, significa que se ha presionado el pulsador nuevamente y en este caso corresponde incrementar el estado de la cuenta.
Mientras el pulsador no se encuentre presionado, ponemos el Bit pulsado a 0, de esta manera detectamos cada vez que el usuario suelta la tecla y as podemos detectar una nueva pulsacin.
Entonces, si el bit Pulsador es 0 significa que el pulsador no ha sido presionado anteriormente, y significa que el usuario acaba de oprimir el pulsador. Por el contrario, si el bit pulsado esta en 1 es porque el
pulsador esta presionado desde el ciclo anterior y el usuario an no ha soltado el pulsador.
Solo cuando el bit Pulsador
esta en 0 debemos realizar el incremento del conta dor.
Entonces procedemos a inse rtar otro bloque de evaluacin de
bit del mismo modo que lo hicimos
con el pin RA0.
El diagrama de flujo debera
verse de la siguiente manera.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 8/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Como explicamos anteriormente, si el bit Pulsado es 0 de procede a
incrementar en 1 el estado de la cuenta. Para es to ingrese al rbol de
herramientas como se muestra en la imagen de la de recha.
El campo sintaxis presenta la manera de interpretar los datos solicitados. En el campo Sumando 1 seleccione el registro contador y en el
campo Sumando 2 seleccione la opcin un literal, formato decimal, valor 1. Por ltimo, seleccione el registro donde desea guardar el resultado
del clculo, en este caso, seleccione la opcin en otro registro, registro
Con tador.

El diagrama de flujo el cual debera quedar como lo muestra la siguiente im agen.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 9/23

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Dado que el presente proyecto slo cuenta hasta 99, una vez realizado el incremento del registro conta dor, debemos controlar que el valor del mismo no supere el nmero 99. Esto lo hacemos comparando el registro con el valor literal (constante) 99 y reiniciar la cuenta a 0 cuando el registro sea mayor a 99.
Para comparar el valor del registro utilizamos el bloque de comparacin
de registro a 8 bits ingresando al rbol de herramientas como se muestra
en la imagen de la derecha.
Se presenta la pantalla Evaluar un registro.
El registro a evaluar es el registro Contador, el operador de comparacin es > y el valor de comparacin es de tipo Literal, Decimal y valor
99. En la siguiente imagen se muestran los datos seleccionados.

Al insertar el bloque, el d iagrama de flujo debe verse como la siguiente imagen.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 10/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El bloque que acabamos de insertar puede interpretase como la formulacin de la siguiente pregunta:
El registro Contador, es mayor que el valor decimal 99?

Y como todo bloque de comparacin, deb e


tener 2 salidas; una para el SI y otra para el
NO.
El primer bloque insertado a continuacin de
ste, corresponde a la salida del SI y el segundo a la salida del NO.

Entonces, si el registro contador es ma yor


que 99, debemos reiniciar la cuenta a 0. Esto
se realiza asignando el valor 0 al registro
Contador. Para esto utilizamos el mdulo de
Asignar un valor a un Registro del mismo modo que explicamos al inicio del ejemplo.
El diagrama de flujo debe verse como la
imagen de la derecha.

Una vez que incrementamos le valor de la cuenta, debemos poner en 1 el valor del bit Pulsado, con esto estamos indicando que ya hemos realizado el incremento correspondiente a la pulsacin actual.
Para esto ingrese al rbol de herramientas como se muestra en la imagen de la derecha.

Se presenta la pantalla Asignar un Valor a un Bit.

Asigne el valor 1 al Bit Presionado tal como se muestra en la siguiente imagen.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 11/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El diagrama debera verse como la siguiente imagen.

Ahora vamos a completar la sali da del NO correspondiente al bloque de evaluacin de registro.


Para esto, genere un vnculo (flecha) entre el bloque desde el bloque de evaluacin de registro hasta el
bloque de asignacin a bit. Esto significa que cuando el valor del registro contador sea menor que 99, se
pasa directamente a poner el bit Pulsado = 1 y no reinicia la cuenta.

La siguiente imagen muestra como debe quedar el diagrama de flujo.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 12/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El siguiente paso consiste en visualizar el estado de la cuenta en los displays de 7 segmen tos .
Para esto, es necesario primero convertir el valor del contador a fo rmato BCD, es decir que debemos
descomponer el valor de la cuenta en Unidades y Decenas para luego mostrar cada valor en el display correspon diente.

Para mayor informacin sobre visuali zacin de datos en displays de 7 segmentos consulte el Anexo1Visualizacin de datos en displays de 7 segmentos.

Para convertir un valor a BCD ingrese al men como se muestra en


la imagen de la derecha:
Se presenta la pantalla convertir registro a BCD.

Primero seleccione el registro que desea convertir a BCD. En este


caso, el registro Contador.

Luego debe seleccionar los registros donde guardar el resultado de la


conversin. Como an no hemos declarado los registros, presionamos el
botn nuevo correspondiente a las unidades. Se presenta la pantalla
de declaracin de registros y declare el registro Unidad.
Al volver de la pantalla de declaracin de registros, el registro recin
declarado ha sido seleccionado en la lista automticamente.

Proceda de la misma manera p ara el registro Decena.

Dado que nuestro proyecto solo cuenta hasta 99, el valor de las ce ntenas no es necesario declararlo.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 13/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El diagrama de flujo debe verse como la siguiente imagen.

Una vez que ya ha realizado la conversin a BCD, esta en condiciones de visualizar los datos en los displays de 7 segmentos. Vamos a utilizar un codificador CD4511 para ocupar menos cantidad de pines del
microcontr olador.

Ingrese al rbol de herramientas como se muestra en la im agen de la


derec ha:
Se presenta la pantalla de visualizacin de displays de 7 segmentos con
codificador CD4511.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 14/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Primero debe seleccionar el tipo de display a utilizar. El CD4511 es un codificador para displays tipo ctodo comn, por esto seleccionamos este tipo de display.

Luego debe seleccionar la cantidad de dgitos a utilizar, en este caso seleccione 2 dgitos.
Al seleccionar la cantidad de dgitos a utilizar, se muestra un mensaje que le indica como seleccionar los
valores de mostrar en cada display.

El proceso de visualizacin de datos en los displays consiste en enviar el valor de las unidades, habilitar
el display correspondiente a las unidades y apagar el display de las decenas, mantener el display de las
unidades encendido durante un breve periodo de tiempo (algunos microsegundos), luego se apaga el di splay correspondiente a las unidades y se enva el dato correspondiente a la decenas, se habilita el display
de las decenas y se mantiene encendido durante algunos microsegundos.
Este proceso debe repetirse muchas veces y se produce a gran velocidad. De esta manera se genera la
ilusin ptica de estar visualizando el valor representado por los 2 dgitos.

El campo repeticiones contiene la cantidad de veces que el proceso de multiplexado se repite. El valor
por defecto es de 1000 repeticiones. Si el valor de las repeticiones aumenta, mayor ser el tiempo que el
micro permanecer mostrando el dato antes de seguir con la ejecucin del resto del programa.
Para nuestro proyecto ingrese un valor bajo para que el microcontrolador no se quede mucho tiempo
mostrando los datos y revise mas seguido el estado del pin de entrada (RA0).
Ingrese el valor 10 en el campo Cantidad de repeticiones

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 15/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Luego debe seleccionar el valor a visualizar en cada display. Esto se realiza haciendo un doble clic sobre
cada imagen de display.
Se presenta la pantalla Mostrar
un valor en un display.
Seleccione el registro Unidad.
Recordemos que este registro contiene el valor de las unidades del estado actual de la cuenta calculado
mediante el bloque de conversin a
BCD.
Proceda del mismo modo para el
registro de las decenas.
Una vez seleccionados los datos a visualizar en cada display, se debe seleccionar el pin por el cual desea habilitar e inhabilitar cada display para realizar el multiplexado.
Esto se realiza seleccionando el Pin correspondiente en cada una de las listas desplegables que se presentan debajo de cada uno de los displays.

Observe que Niple slo presenta en la lista, los pines que estn configurados como Salida. De esta
mane ra se evitan los errores por seleccionar pines configurados como Entrada o no configurados.
Seleccione los pines B3 y B2 para las unidades y las decenas respectivamente.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 16/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Por ltimo, debe seleccionar los pines correspondientes al bus de datos por el cual se enva el dato a visuali zar al codificador CD4511.
Para este ejemplo seleccione los pines B4 al B7 como lo muestra la siguiente imagen.

Por ltimo puede consultar e imprimir el esquema de conexin de la configuracin que ha seleccionado.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 17/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El diagrama de flujo debe verse como lo muestra la siguiente imagen.

De esta manera hemos programado las 2 s alidas correspondientes al SI de cada una de las
2 comparaciones de Bits (RA0 y Pulsado).
Solo resta programar lo que debe realizar el
micro cuando el resultado de estas evaluaciones
sea Falso. Es decir, las salidas del NO.

Para insertar el boque correspondiente al


NO, primero debe seleccionar el bloque de
evaluacin al cual se insertar el nuevo bl o que.
La figura de la derecha muestra esto.

Una vez seleccionado el bloque, ingrese un


bloque de asignacin de Bit, poniendo el Bit
pulsado en 0. De esta manera se detecta que
el pulsador no esta presionado.

El diagrama de flujo debe verse como lo


muestra la imagen de la derecha.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 18/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Entonces, si el pulsador no esta presionado, se pone el bit Pulsador a 0 y luego genere un vnculo hasta el bloque de visualizacin de da tos en los display. Esto significa que mientras no se presione el pulsador,
el micro se quedar mostrando el valor actual de la cuenta.

Luego, desde el bloque de evaluacin del bit Pulsado genere un vnculo hasta el bloque de visualizacin de datos en display de 7 segmen tos.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 19/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Con esto estamos indicando que cuando se dete cte el pin RA0 como presionado y el bit Pulsado es = 1
no se incrementa porque el incremento de la cuen ta ya fue realizado en el ciclo anterior y directamente se
pasa a mostrar el e stado actual de la cuenta.

Luego debe cerrar el ciclo. Para esto genere un vnculo desde el bloque visualizacin de datos en displays de 7 segmentos hacia el bloque de evaluacin del pin RA0.

La siguiente imagen muestra como debe quedar el diagrama de flujo.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 20/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Por ltimo, debemos tener en cuenta un
detalle final.
Observe el como ha quedado el diagrama
de flujo hasta ahora. Al iniciar el programa se
inicializa el registro Contador a 0 e inmediatamente se evala el estado del pin RA0.
Si en este momento, el pulsador no se
encuentra presionado, el programa contina
la ejecucin por la salida correspondiente al
NO del bloque de evaluacin del pin RA0.
Pone el bit Pulsado a 0 y luego salta al
bloque de visualizacin de datos en displays
de 7 segmentos.

Aqu hay algo que esta mal y es lo siguiente: como mencionamos a lo largo del
desarrollo del ejemplo, para visualizar datos
en displays de 7 segmentos es necesario
realizar la conversin a BCD del dato que se
quiere visualizar, en este caso el registro
contador.
Observe que la conversin BCD para visualizar datos slo se realiza cuando se n
i crementa el estado de la cuenta.

Entonces, desde que se inicia el programa hasta que no se realice el primer incremento, no se realiza la conversin a BCD y
durante este tiempo el bloque de multiplexado puede funcionar errticamente.

Para esto, la solucin es realizar una conversin a BCD en el inicio del programa despus de asignar el registro Contador a 0.
De esta manera cuando se ejecute el bloque
de visualizacin sin haber realizado ningn
incremento, el bloque de multiplexado funcionar de manera correcta mostrando el valor 00.

Lo mas fcil es duplicar el bloque de conversin a BCD y ubicarlo despus de la asignacin Contador =
0 . De esta manera, los datos quedan preparados para ser visualizador en los displays.
Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 21/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El diagrama de flujo completo se ve como la siguiente i magen.

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 22/2 3

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Esquema electrnico

Imagen del proyecto en funcionamiento

Niple 16F84 Ejemplo 2 - Contador de eventos externos desde 0 hasta 99.

Pgina 23/2 3

Вам также может понравиться