Anda di halaman 1dari 17

ARTÍCULO DE TAPA

Interffasse Gráffica para TV


Convierta su TV en Multímetro, Osciloscopio
o Cualquier Otro Instrumento Electrónico
Para un técnico en electrónica, contar con instrumentos
de prueba adecuados se convierte en un factor muy im-
portante a la hora de reparar equipos electrónicos.
¡Imagínese tratar de reparar una fuente de alimentación
sin un voltímetro!
El instrumento de prueba más usual es el multímetro, el
cual puede medir volts, resistencia, corriente e inclusive
algunos pueden medir capacitancia, frecuencia, transisto-
res y temperatura. Los hay de muy variados precios, de
aguja o digitales. Otro instrumento útil, pero de costo re-
lativamente elevado, es el osciloscopio, de los cuales hay
analógicos o digitales, de uno o más canales. El oscilos-
copio es indispensable cuando se trata de analizar seña-
les que fluctúan en el tiempo, como pulsos digitales, señales de audio e inclusive señales de RF.
Para analizar señales digitales se usa un analizador de estados lógicos, el cual es semejante al oscilosco-
pio con la diferencia que despliega señales lógicas (uno o cero) y además tiene como mínimo 8 canales.
Estos dos últimos instrumentos no son frecuentes entre los aficionados a la electrónica principalmente
debido a su costo, sin embargo son instrumentos muy útiles.
Desde su creación, Saber Electrónica se ha caracterizado por ofrecer a sus lectores la posibilidad de
aprender electrónica mediante la publicación de artículos con proyectos útiles, de bajo costo y cuyos ele-
mentos son fáciles de conseguir. En los últimos años el uso de microcontroladores en proyectos de elec-
trónica se ha vuelto una práctica común, debido a su bajo costo y versatilidad.
Continuando con esta línea, se propone el uso de una tarjeta de interfase para televisión con capacidades
gráficas con el fin de usarla para diseñar equipo de instrumentación de alta calidad y bajo costo. En la ac-
tualidad existe una gran cantidad de instrumentos virtuales, los cuales utilizan una PC para procesar da-
tos y desplegar gráficas vistosas, sin embargo no siempre se requiere de tal capacidad. De sobra sabe-
mos que basta un simple display de cuarzo para cubrir las necesidades de despliegue de incontables ins-
trumentos. La interfase que proponemos se conec-
ta a cualquier televisión o monitor con entrada de
video para obtener así un display de alta resolu-
ción con varios tonos de gris. Además, la tarjeta
es inteligente y puede procesar señales digita-
les para facilitar mostrar en la pantalla múlti-
ples controles, imágenes y caracteres, inclu-
so tiene integradas instrucciones para simu-
lar un display de cuarzo.

Autor: Ing. Luis Roberto Rodríguez


e-mail: luisrobertorodu@aol.com

Saber Electrónica

3
Artículo de Tapa
INTRODUCCION

Uno de los problemas con el que nos enfrentamos a


la hora de diseñar algún aparato que requiera mostrar in-
formación es, precisamente, dónde la vamos a desplegar:

¿En un display de cuarzo?,


¿El display debe ser gráfico o sólo de caracteres?,
¿Cuál es el costo máximo del display que podemos
usar?

Un ejemplo que se me ocurrió una vez, fue que se me


pidió diseñar un contador de llamadas telefónicas, con la
característica de mostrar en alguna pantalla las llamadas
que se hicieron y quién las hizo (con claves distintas pa-
Figura 1
ra cada usuario). A la hora de seleccionar el display nece-
sitaba uno de varias líneas y con iluminación. Después de utilizan la tarjeta de interfase necesitan invariablemente el
revisar varias opciones (la mayoría de precio elevado), control de algún microcontrolador.
decidí diseñar una interfase para televisión. El desplegar
gráficos y caracteres en una televisión ofrece varias ven-
tajas: PANTALLA PRINCIPAL DE LA INTERFASE

* Bajo costo (hay televisiones desde 20 dólares). La figura 1 muestra la pantalla principal al conectar la
* Se puede alcanzar gran resolución (hasta 320 por Interfase. La pantalla indica si se cuenta con las memo-
240 pixeles). rias opcionales tipo EEPROM. Como se puede apreciar,
* Se puede conseguir fácilmente. en este caso se cuenta con las dos unidades.
* Posibilidad de desplegar colores.

El proyecto ha culminado en una tarjeta de interfase Ejemplo de Aplicación


para televisión, la cual puede trazar gráficos y caracteres La figura 2 muestra un diagrama en bloques con un
en la pantalla. ejemplo simple de una aplicación, en este caso un termó-
Con esta tarjeta podremos diseñar cualquier instru- metro. El microcontrolador envía instrucciones a la tarje-
mento que requiera desplegar gráficos sin más que en- ta gráfica utilizando sólo 3 líneas (D0, RJ y LR) y la tar-
viarle las instrucciones apropiadas al procesador gráfico jeta envía la señal de video a una televisión para su des-
incluido. pliegue.
Algunos ejemplos posibles de construir son:

* Multímetros digitales. PRINCIPIOS DE FUNCIONAMIENTO


* Frecuencímetros.
* Trazadores de curvas de dispositivos semiconduc- Básicamente, la idea es direccionar secuencialmente
tores. una memoria y convertir el dato de la localidad en turno
* Analizadores lógicos.
* Osciloscopios digitales.
* Sistemas de desarrollo com-
pletos para microcontroladores.

Y un largo etcétera, con la imagi-


nación del aficionado o técnico como
límite.
La elaboración del proyecto pro-
porciona, además, una excelente
oportunidad para aprender microcon-
troladores, ya que los aparatos que Figura 2

Saber Electrónica

4
Artículo de Tapa
en un nivel de voltaje de video, con el fin de desplegarlo Figura 3
en la pantalla de un televisor.
El inicio del despliegue es en la esquina superior iz-
quierda de la pantalla.
Después de direccionar cierto número de localidades
(número de puntos por línea horizontal) se detiene el di-
reccionamiento de la memoria y se genera una señal lla-
mada blanqueo, la cual en la pantalla es invisible.
Después de cierto tiempo de blanqueo se genera un
pulso de sincronía horizontal, lo cual hace que se inicie
en la televisión una nueva línea. Al cabo de cierto tiempo
después del pulso de sincronía, se quita la señal de blan-
queo y se continúa con el direccionamiento de la memo-
ria en la siguiente línea.
Este proceso se repite cierto número de veces (líneas CARACTERISTICAS DE LA INTERFAZ
horizontales) hasta que se llega a la parte baja en la de-
recha de la pantalla, entonces se genera otro blanqueo y En realidad, la tarjeta es una verdadera microcompu-
posteriormente se genera un pulso de sincronía vertical, tadora con las siguientes características:
lo cual hace que el trazo en la pantalla inicie de nuevo su
trayectoria en la parte superior izquierda de la pantalla. * Entrada por teclado estándar de PC.
Este movimiento de arriba a la izquierda hasta abajo a la * 32kbytes de memoria RAM (volátil).
derecha en la pantalla se repite constantemente, varian- * Hasta 64kbytes de memoria EEPROM (no volátil).
do la luminosidad del punto en la pantalla de acuerdo al * Salida de video estándar para TV.
dato contenido en la memoria. * Resolución de 228 x 216 pixeles con 16 tonos de
Después de cada pulso vertical se reinicia el direccio- gris.
namiento de la memoria de video.
El procesador gráfico utiliza menos de los 128kbytes
de memoria RAM disponible, quedando cerca de 32kby-
ASPECTO FISICO DE LA TARJETA tes libres, los cuales pueden ser usados por el microcon-
trolador externo en algún proyecto.
La figura 3 muestra una fotografía de la tarjeta IGTV, No en todos los proyectos se requiere de un teclado o
donde se pueden apreciar los dos microcontroladores uti- de memoria EEPROM, la tarjeta funciona sin la necesi-
lizados, el ATMEL ATMega8515 y el PIC 16C55 . Debajo dad de estos elementos, los cuales pueden ser agrega-
del PIC se puede apreciar la memoria RAM de video y a dos en el momento en que se hagan necesarios. Sin em-
la izquierda dos memorias EEPROM de 8 patas cada una bargo, la memoria RAM de 32kbytes siempre estará dis-
(en la foto sólo se ha insertado una). ponible, ya que forma parte de la memoria de video la
Debajo del 8515 se aprecia el conector de interfaz, el cual está integrada en la tarjeta.
cual es una base de 16 patas con la cual se comunica la
IG con el mundo exterior.
Arriba a la izquierda se puede observar el conector COMUNICACION CON LA INTERFASE
RCA para la salida de video.
El conector de arriba a la derecha es para la entrada La tarjeta tiene un conector DIP de 16 patas, el cual
de alimentación de 12 volts. A la izquierda del 8515 se se usa para la comunicación entre el microcontrolador ex-
puede apreciar un interruptor analógico CMOS 4066. terno y la IG (Interfase gráfica).
La tarjeta tiene, además, la posibilidad de insertar un Básicamente se usan sólo 3 líneas (LR, D0 y RJ).
conector de entrada para un teclado estándar de PC, La señal LR (Listo para Recibir) la envía la IG cuando
con el fin de usar entrada por teclado en los proyectos está lista para recibir datos del mundo exterior. Las ins-
que así lo requieran, como ejemplo un sistema de desa- trucciones se envían por D0 de manera sincrónica (sín-
rrollo de microcontroladores, donde es necesario un edi- crona), los pulsos de reloj se envían a través de RJ, los
tor de texto. cuales son proporcionados por el microcontrolador exter-
También se han dispuesto 2 bases para memorias no.
EEPROM del tipo serie, con el objeto de disponer de me- Obviamente los datos se envían en serie, ya que sólo
moria no volátil en los proyectos que así lo requieran. hay una línea (D0) para recibir las instrucciones.

Saber Electrónica

6
Artículo de Tapa
Las instrucciones se componen de uno o más bytes,
por ejemplo, para borrar la pantalla se debe enviar un “0”,
en cuyo caso la instrucción consta de un solo byte.
Para dibujar un punto se debe enviar un “8” seguido
de dos bytes indicando las coordenadas del punto “X” y
“Y”. Esta instrucción requiere de 3 bytes.
Para ilustrar con un ejemplo, supongamos que desea- Figura 4
mos borrar la pantalla y luego dibujar un punto en el cen-
tro (coordenadas 114, 108). Los bytes que debemos en-
viar por D0 serían los siguientes:
din de la tarjeta. También se han implementado instruc-
Byte 1 0 Instrucción borrar la pantalla. ciones para grabar y leer la memoria de video y aprove-
Byte 2 8 Instrucción dibujar un punto. char los 32kbytes (32K) libres en algún proyecto que re-
Byte 3 114 Coordenada X del punto. quiera memoria RAM.
Byte 4 108 Coordenada Y del punto. En la figura 5 se muestra el diagrama en bloques de
nuestra interfase gráfica, para explicar su funcionamiento
Después de estas instrucciones, lo que veríamos en se supone que el lector posee un ligero conocimiento de
la pantalla sería un punto en el centro de la misma. El co- las señales de televisión. Si requiere una explicación más
lor del punto se establece con otra instrucción de 2 bytes. amplia se sugiere consultar la serie de artículos del Club
En la figura 4 se muestra la manera en que se envía Saber Electrónica “Aprenda TV color en 8 lecciones“,
un “8” a la IG: donde se explica la generación, tratamiento y despliegue
Como señala el dibujo, el dato lo lee la IG en cada su- de la señal de video (puede bajar gratuitamente este cur-
bida del RJ, el cual es enviado por el microcontrolador ex- so de nuestra web: www.webelectronica.com.ar, ha-
terno, junto con el dato. ciendo click en el ícono password e ingresando la clave
Se observa también que no se comienza a enviar el “quierotv”). Sin embargo, para usar la tarjeta y diseñar
byte hasta que LR está en estado lógico “1”. Esta señal la equipo con ella, no se requiere gran conocimiento de las
proporciona la IG cuando está lista
para recibir instrucciones.
Mientras la IG procesa cada byte Figura 5
recibido, coloca LR en “0” para avi-
sar que no se deben enviar más by-
tes. Al terminar de procesar el dato
recibido, la IG avisa de nuevo que
está lista para recibir más datos colo-
cando a “1” la señal LR.
Es labor del microcontrolador ex-
terno revisar el estado de LR antes
de enviar cada byte.
La IG es capaz de dibujar puntos,
líneas verticales y horizontales, cua-
dros, marcos, botones, caracteres,
imágenes e inclusive tiene integrada
una función para dibujar un display
de cuarzo de hasta 8 dígitos simple-
mente enviando el código en 3 bytes
en formato binario. La IG se encarga
de hacer la conversión a decimal y
desplegar el valor en la pantalla si-
mulando displays de cuarzo.
Se ha incorporado un editor de
texto de una línea, el cual se contro-
la con un teclado común de PC, el
cual se inserta en el conector mini-

Saber Electrónica

8
Artículo de Tapa
señales de televisión, ya que la tarjeta sólo espera ins- cual no es utilizada por el 16C55, estos períodos se co-
trucciones en forma de bytes y los circuitos internos se nocen como blanqueo y se presentan antes y después de
encargan del despliegue en la pantalla. iniciar cada línea horizontal y antes y después de cada
La tarjeta consta de 2 microcontroladores, un pulso vertical.
PIC16C55 del conocido fabricante Microchip y otro de la Es en estos instantes cuando el 8515 se apropia de la
serie Atmel (ATMega8515). memoria y escribe lo que debe desplegarse en la panta-
El PIC16C55 se encarga de generar las señales de lla. En cuanto el 16C55 vuelve a posesionarse de la me-
televisión, las cuales son sincronía vertical, sincronía ho- moria, se continúa con el barrido secuencial.
rizontal y blanqueo. No podemos escribir en la memoria cuando el PIC es-
Además el PIC se encarga de direccionar la memoria té presentando la señal en la pantalla, ya que alteraría-
de video y avisar al procesador gráfico (8515) cada vez mos el video al pretender que los 2 microcontroladores
que la memoria está libre (durante los periodos de blan- escriban en la memoria al mismo tiempo.
queo), con el fin de que el 8515 pueda tomar los buses de En cuanto el PIC envía la señal de blanqueo (abriendo
datos y direcciones para guardar en la memoria de video SW1 y cerrando SW2), se indica al microcontolador 8515
los datos a desplegar. a través de la señal “Memoria Libre”, que el bus de datos y
Los bits de datos de la memoria (D0-D3) se llevan a direcciones de la memoria RAM están libres, esto debido a
un convertidor D/A, el cual convierte el dato en la locali- que el PIC coloca sus salidas en alta impedancia, para que
dad de la memoria en un nivel de voltaje que luego se puedan ser manipuladas por el 8515 (IG).
aplica a la salida de video. Durante la señal de blanqueo, el PIC además de po-
El convertidor D/A de 4 bits genera, en la pantalla, una ner sus salidas de direcciones y datos en alta impedan-
gama de grises de 16 tonos, más que suficientes para cia, genera las señales apropiadas de sincronía horizon-
cualquier propósito de instrumentación (recuerde que por tal y/o vertical, las cuales consisten en pulsos negativos
lo general el display de cuarzo sólo tiene 2 tonos). que a través del diodo llevan la señal de video práctica-
La señal de video pasa a través del interruptor analó- mente a tierra, obteniéndose así el nivel bajo que se re-
gico SW1, el cual es controlado por el PIC. quiere para una sincronía en video.
Cuando se llega al final de cada línea horizontal o ver- Como se observa en el diagrama en bloques, el 8515
tical, el SW1 se abre y, al mismo tiempo se cierra el SW2, también controla la entrada del teclado (si existe) y las
enviando a la salida el nivel de voltaje de blanqueo, el memorias EEPROM (si se han colocado).
cual es “más negro que el negro” en lo que a video se re-
fiere, y en consecuencia es invisible en la pantalla.
El 16C55 direcciona la memoria en orden creciente CONSTRUCCION
(0000-FFFF) y de acuerdo al dato almacenado en cada
localidad, se presenta en la pantalla un punto de distinta En la figura 6 se puede apreciar el diagrama esque-
luminosidad, proporcionado por el convertidor D/A. mático de la IG.
Sin embargo, hay tiempos muertos de la memoria la En la figura 7 se observa la placa de ciruito impreso

Lista de Materiales C1, C2, C4, C5 - 15pf - Cerámico D2 - 1N914 - Diodo de uso general
C7 - 1000µF - Electrolítico x 25V Q1, Q2 - 2N2222 - Transistores
Resistencias C6 - 100µF - Electrolítico por 25V
R1, R2, R15 - 1kΩ Conectores
R4, R7, R8, R11, R12 - 1.8kΩ Integrados J4 - Conector RCA - Salida Video
R18 - 2.7kΩ U3 - ATMega8515 - Microcontrolador J3 - Conector Teclado (Opcional)
R20, R21, R24, R25 - 3.3kΩ 16MHz J1 - Conector programación (Opcio-
R3, R5, R6, R9, R10, R17 - 3.6kΩ U1 - PIC16C55 - Microcontrolador nal)
R23 - 100Ω 20MHz U7 - Conector de alimentación - Ba-
R16 - 220Ω U8 - 628128 - Memoria RAM 128K nana Invertida
R26 - 270Ω U4, U5 - AT24C256 EEPROM (Op-
R13, R14, R19 - 390Ω cionales) Varios
R22 - 470Ω U2 - 4066 - Interruptor analógico Y2 - Cristal 16MHz
U6 - 7805 - Regulador de voltaje Y1 - Cristal 20MHz
Condensadores (todos en µF) S1 - Interruptor de encendido (Opcio-
C8, C9, C10 - 0.1µF - Cerámico Diodos y transistores nal)
C3 - 10µF - Electrolítico x 25V D1 - LED de 5mm color rojo (Encendido) J2 - Conector DIP de 16 patas

Saber Electrónica

10
Interfase Gráfica para TV
Figura 6

Saber Electrónica

11
Artículo de Tapa
del lado de los
componentes (la
placa es doble
faz), la figura 8
muestra el dorso
de la placa de
circuito impreso.
En la figura 9 se
muestra el dia-
grama pictórico
para la localiza-
ción de los com-
ponentes.
J1 es un co-
nector del tipo
doble línea de 6
patas el cual se
usa para progra-
mar al 8515 en
sitio. Esto gene- Figura 7
ralmente es para
actualizar el soft-
ware y general-
mente el usuario
no lo necesita.
En la página
WEB de la revis-
ta encontrará el
código fuente
completo de los
dos microcontro-
ladores, así co-
mo los archivos
binarios para
grabarlos direc-
tamente con el
programador
adecuado. Pue-
de bajar gratuita-
mente toda la in-
Figura 8
formación y los
códigos, así co-
mo el manual de uso de la placa de nuestra web: www- representa a la “verdaera interfase gráfica IG”. Por cues-
.webelectronica.com.ar, haciendo click en el ícono tiones de espacio, nos vemos obligados a no “transcribir”
password e ingresando la clave “graficatv”. el software de la Interfase gráfica ya que por más que lo
hagamos en letra pequeña, ocuparía varias páginas y no
creo que nadie “pierda” varias horas en el tipeo de dicho
UN POCO DE SOFTWARE programa. El programa se llama: “IGTV.asm” y el ejecuta-
ble (que se debe grabar en el microcontrolador Atmel) se
Recuerde que nuestra placa posee un microcontrola- llama “IGTV.hex”. Para la comunicación con la IG, es ne-
dor que genera las señales de sincronismo de TV cesario el uso de un microcontrolador. Este programa
(PIV16C55), un programa que genera “el entorno gráfico” puede bajarlo de nuestra web en cualquiera de las dos
para mostrar señales en el TV en escalas de grises y que versiones: assembler (asm) o hexadecimal (hex).

Saber Electrónica

12
Interfase Gráfica para TV
desarrolle, sim-
plemente se in-
tegra al código
de las demás
subrutinas.
“Dato” es cual-
quier registro li-
bre del PIC, RJ
y D0 están en
RB0 y RB1.

Algunos
Ejemplos
Volviendo a
nuestro ejemplo
para dibujar un
punto en el cen-
tro de la panta-
lla, el código se-
Figura 9 ría el siguiente:

Por otra parte, el programa a grabar en el PIC16C55, MOVLW 0 ; Instrucción “Borrar Pantalla”.
encargado de generar las señales de TV, se denomina CALL EnviarByte ; Enviar el Byte a la IG.
“picigtv.asm” y también lo puede bajar de nuestra web. MOVLW 8 ; Instrucción “Dibujar Punto”.
Para la comunicación con la IG, es necesario el uso CALL EnviarByte ; Enviar el Byte a la IG.
de un microcontrolador. En el caso de usar el popular MOVLW 114 ; Coordenada X del punto.
PIC, en el listado 2 se muestra un ejemplo de una subru- CALL EnviarByte ; Enviar el Byte a la IG.
tina para enviar un byte a la IG. En cada proyecto que se MOVLW 108 ; Coordenada Y del punto.
CALL EnviarByte ; Enviar el Byte a la IG.

A continuación se muestra la manera en que se


puede poner la pantalla en blanco.

MOVLW 10 ; Instrucción “Color de Fondo”.


CALL EnviarByte ; Enviar el byte a la IG.
MOVLW 15 ; Color blanco ( 0=negro, 15 =blanco).
CALL EnviarByte ; Enviar el Byte a la IG.
CLRW ; Instrucción “Borrar Pantalla”.
CALL EnviarByte ; Enviar el Byte a la IG.

En el caso anterior, al enviar la instrucción “Borrar


Pantalla” (Enviando un Cero), la pantalla se llena-
rá con el color de fondo, el cual en el ejemplo es
15 (color blanco). Aunque los ejemplos anteriores
son muy simples, esto dará una idea de lo fácil
que es manejar la Interfase Gráfica.

PROYECTOS

A continuación se describen algunos de los pro-


yectos que se llevarán a cabo en las próximas edi-
ciones de la revista:

Saber Electrónica

13
Artículo de Tapa
MEDIDOR DE CONDENSADORES DIGITAL: Con ciones. Para este proyecto inicial necesitaremos la tarje-
este primer proyecto podremos medir condensadores ta IGTV, un microcontrolador PIC16F84, una tarjeta de
desde 1pf hasta 40µF en 3 escalas. experimentos y algunas piezas.
Con este sencillo proyecto aprenderá algunas instruc-
GENERADOR DE FUNCIONES: Con este proyecto ciones básicas y le aseguramos que pronto adquirirá tal
crearemos un generador de señales digital, el cual pro- conocimiento acerca de la IG que en poco tiempo comen-
porcionará salidas de forma de onda cuadrada, sierra, zará a diseñar su propio equipo.
triangular y senoidal. Sin embargo, si su deseo es aprovechar los kits que
se pondrán a su disposición, de igual forma se verá usted
ANALIZADOR DE ESTADOS LOGICOS: Construire- beneficiado de la versatilidad de la IGTV.
mos un analizador digital de estados lógicos de 8 canales
expandible a 24. Con este instrumento podremos captu- EQUIPO NECESARIO
rar la secuencia de señales digitales para, posteriormen- Para trabajar desarrollando proyectos con la IG nece-
te, analizarlas de manera visual mediante su representa- sitará de algunos recursos, los cuales se enumeran a
ción gráfica en la pantalla. continuación:
1) Una PC con Windows 98SE o superior.
OSCILOSCOPIO DIGITAL: Construiremos varios ti- 2) El sistema de desarrollo MPLAB IDE de Microchip,
pos de osciloscopios, comenzaremos con uno sencillo de el cual es proporcionado gratuitamente en la página WEB
un solo integrado (sí, estimado lector, leyó usted bien... de dicha compañía.
¡un solo integrado!), sin embargo será capaz de mostrar 3) Un programador de microcontroladores PIC.
perfectamente señales de audio en su televisor. 4) Una tarjeta IGTV.
Posteriormente realizaremos otros de alta frecuencia 5) Subrutinas y macros especiales para la programa-
y de altas prestaciones. ción.
Aunque el costo de estos instrumentos puede llegar a 6) Una Televisión con entrada de video (si es con pan-
ser elevado, nosotros los construiremos a un precio real- talla de 5 pulgadas mejor).
mente reducido, de tal forma que será accesible a todos
los lectores de SABER ELECTRONICA. Es necesario aclarar que se puede utilizar cualquier ti-
po de microcontrolador y no necesariamente PIC (la IG
Estos instrumentos son sólo una pequeña muestra de tiene incluso un microcontrolador Atmel), sin embargo, los
lo que es posible construir con la tarjeta IGTV. PIC son populares y existen muchos programadores de
Posteriormente se construirán diversos instrumentos bajo costo y fáciles de utilizar por lo que hemos decidido
en base a las sugerencias de los lectores y conforme sur- emplear este tipo de microcontroladores en los proyectos.
jan necesidades de equipo especial, tal como instrumen- Hemos desarrollado también una serie de subrutinas
tos de prueba para electrónica del automóvil e incluso y macros para facilitar la escritura de los programas de
sencillos video-juegos. aplicación.
Cabe aclarar que todos los proyectos que se constru- Estas subrutinas contienen macros que facilitan utili-
yan estarán disponibles en forma de kits. A continuación zar las instrucciones de la IG, ya que para llamarlas se
vamos a establecer nuestro lema para todos los proyec- hace uso de una instrucción menos abstracta y con pará-
tos, el cual será: “BAJO COSTO Y PIEZAS FACILES DE metros incluidos, por ejemplo, para borrar la pantalla sim-
CONSEGUIR” plemente se escribe “BORRAR PANTALLA” en lugar de
MOVLW 0 seguido de una llamada a la subrutina EN-
VIAR_BYTE.
Dichas subrutinas, junto con el manual, están disponi-
*********************************************************
bles gratuitamente en la página WEB del Club Saber Elec-
trónica (ingrese a www.webelectronica.com.ar, haga click
MONTAJE en el ícono password e ingrese la clave “graficatv”). Por
supuesto, usted puede desarrollar sus propias macros y
subrutinas, sin embargo aconsejamos no reinventar el “hi-
Primer Proyecto - RELOJ DIGITAL lo negro” y utilizar las que ya hemos desarrollado.

A continuación se explicarán las instrucciones más SUBRUTINAS Y MACROS ESPECIALES


importantes de la interfase. Luego diseñaremos un reloj Si estas subrutinas no las tiene, deberá bajarlas de la
digital paso a paso para poner en práctica tales instruc- página WEB sin cargo, con la clave “graficatv”, sin em-

Saber Electrónica

14
Interfase Gráfica para TV
bargo, al adquirir la IG en forma de kit, éstas se propor- dor y utilizar el timer interno para generar un pulso cada
cionan en el disco adjunto, el cual también contiene el segundo como referencia, sin embargo el software se
manual. Dichas subrutinas son: complicaría un poco. Por lo tanto, sólo nos queda la ter-
cera opción y es la que usaremos, esto es, tomaremos la
ComIG.asm: Comunicación con la IG. frecuencia de la línea de AC, la cual es de 60Hz ó 50Hz
MacrosIG.asm: Macros que facilitan enviar instruc- (dependiendo de la red local) de razonable precisión y la
ciones a la IG. usaremos como nuestra referencia de tiempo.
TablasDatos.asm: Subrutinas que facilitan enviar da-
tos y textos a la IG. ¿Cómo lo haremos?
Emplearemos el siguiente algoritmo simple: Introduci-
PLANEANDO NUESTRO PRIMER PROYECTO remos los pulsos de 60Hz (50Hz) al timer interno del PIC
Antes de ponernos a teclear código debemos planear y generaremos una interrupción cada 60 (50) pulsos, es-
la presentación de nuestro primer proyecto. to es, cada segundo. En la subrutina de interrupción in-
Diseñaremos un reloj digital, el cual mostrará en la crementaremos los segundos, si los segundos son 60,
pantalla un display de cuarzo simulado con las horas, mi- pondremos en cero los segundos e incrementaremos los
nutos y segundos. Tendrá dos botones de control para minutos, si los minutos son 60, pondremos en cero los mi-
ajustar las horas y los minutos: “HOR” y “MIN”. nutos e incrementaremos las horas. Si las horas son 24,
Al presionar el botón “MIN” se incrementarán los mi- pondremos las horas en cero.
nutos y se pondrán en cero los segundos. No tiene caso Lo anterior es para actualizar la hora cada segundo.
poner un botón para ajustar los segundos. Para el funcionamiento de los interruptores simplemente
Dibujaremos un pequeño ícono en forma de reloj en la verificaremos en el programa principal si han sido presio-
esquina superior izquierda y trazaremos dos barras supe- nados, en caso de ser así se incrementarán los minutos
riores con texto. La primera dirá “SABER ELECTRONICA o las horas, dependiendo del interruptor presionado.
SIMTV” y la segunda dirá “RELOJ DIGITAL”. (Bueno, en Bien, ya basta de explicaciones y premisas, pongá-
realidad usted puede poner el texto que desee). monos a trabajar.

PRINCIPIOS DE FUNCIONAMIENTO DE UN RELOJ ¡MANOS A LA OBRA!


En el momento en que empezamos el diseño de un Para este primer proyecto simple con la IG, debere-
reloj lo primero que se nos viene a la mente es: ¿de dón- mos armar un pequeño circuito en la tarjeta de experi-
de vamos a sacar la referencia del tiempo?. mentos, para lo cual necesitaremos los siguientes ele-
Para esto existen básicamente 3 opciones: mentos:

a) Un oscilador con RC. a) 1 microcontrolador PIC16F84.


b) Un oscilador con cristal. b) 1 cristal de 3.579545MHz.
c) Una señal de “línea”. c) 2 condensadores de 15pF.

La primera opción
francamente ni debe- Figura 10
mos considerarla, ya
que un oscilador sim-
ple RC aunque lo im-
plementemos con re-
sistencia y condensa-
dor de precisión no
proporcionaría la es-
tabilidad de la fre-
cuencia necesaria pa-
ra un reloj.
La segunda op-
ción parece más via-
ble, podríamos inclu-
so utilizar el cristal del
mismo microcontrola-

Saber Electrónica

15
Artículo de Tapa
d) 2 mini-interruptores tipo “push” para circuito impreso. 12) Aparece el cuadro de diálogo “Summary”, el cual
e) 1 Diodo zener de 5.1V x 1W. muestra el resumen del proyecto que acaba de crear.
f) 1 Transformador de 110V (220V) a 6V. Presione “Finalizar”.
g) 1 resistencia de 2.2kΩ.
h) Tarjeta para experimentos “Protoboard”. Aunque para este caso no es necesario crear un pro-
yecto completo, lo hemos hecho de esta manera con el
Con estas piezas arme el circuito de la figura 10. Es fin de mostrar al lector la manera en que se crea un pro-
probable que no se necesiten los condensadores del cris- yecto en el ambiente de desarrollo MPLAB.
tal ya que la tarjeta de experimentos posee suficiente ca-
pacitancia parásita entre sus terminales como para iniciar PRECAUCION: Asegúrese de que Default Radix sea
y mantener las oscilaciones; sin embargo, cuando el cir- Decimal. Esta opción está en Project>Build Options>Pro-
cuito se arma en un circuito impreso los condensadores ject Pestaña MPASM Assembler
se hacen necesarios.
A continuación se muestra paso a paso lo que deberá ARCHIVO FUENTE
hacer para preparar su PC. Partiremos del hecho de que
ya tiene instalado el programa de Microchip MPLAB IDE Lo que hemos hecho con los pasos anteriores es
y de que ya tiene las subrutinas especiales. crear un “Workspace” en donde agregaremos un archivo
fuente en ensamblador. Dicho archivo lo crearemos pre-
1) Cree un subdirectorio para sus proyectos en la PC sionando en el menú del IDE File>New.
y nómbrelo como usted desee (por ejemplo IGTV). Esto crea un archivo en blanco con el nombre por de-
2) Dentro de este subdirectorio cree otro con el nom- fecto “untitled”.
bre “Comunes”. Es en este subdirectorio donde colocare- Ahora comenzaremos a escribir el programa en éste
mos las subrutinas que serán comunes a todos los pro- archivo. Teclee el código de la tabla 2.
yectos. Observe que la palabra CONFIG está precedida de 2
3) Coloque en “Comunes” las subrutinas ComIG.asm, y no de un solo guión bajo.
MacrosIG.asm y TablasDatos.asm.
4) Dentro del subdirectorio IGTV (o el
nombre que haya elegido) cree otro con el
nombre “RelojDigital”.
5) Abra el programa MPLAB IDE.
6) Presione Project > Project Wizard.
7) Aparece “Step One:” Seleccione De-
vice: PIC16F84A y presione “Siguiente”.
8) Aparece “Step Two:” Verifique que
Active Toolsuite sea “Microchip MPASM
Toolsuite” y que Toolsuite Contents sea
“MPASM Assembler(mpasmwin.exe)”.
9) En el cuadro de edición Location
aparece el subdirectorio por defecto del
programa mpasmwin.exe, deje este cuadro
así y presione “Siguiente”.
10) Aparece “Step Three:” En Project
Name introduzca “ProyRelojDigital”.
En el cuadro de edición Project Direc-
tory presione el botón “Browse…” y nave-
gue hasta que aparezca el subdirectorio
“RelojDigital” y selecciónelo. A continua-
ción presione “Siguiente”.
11) Aparece “Step Four:” Aquí puede
selecciona algún archivo para añadir a su
proyecto, sin embargo en esta ocasión no
seleccionará ninguno. Presione “Siguien-
te”.

Saber Electrónica

16
Interfase Gráfica para TV
Las 3 primeras líneas son comentarios, ya que están CURSOR X,Y: El cursor se mueve a la posición indi-
precedidas por el punto y coma (;). cada por X,Y. Las siguientes instrucciones gráficas y de
La cuarta línea le indica al ensamblador que incluya el texto se dibujarán en la nueva posición.
archivo “p16f84.inc” el cual usa para encontrar definicio-
nes de registros, puertos y otros datos relacionados con DISPLAY_CUARZO Formato, Byte2, Byte1, Byte0:
el PIC16F84. Dibuja un display de cuarzo y despliega el número indica-
La siguiente línea se usa para configurar el microcon- do por los 3 bytes.
trolador respecto a algunas opciones como protección de Formato indica si el número llevará signo, el número
código, tipo de cristal que se usará, etc. de dígitos visibles y la posición del punto.
Enseguida deberemos apartar localidades de memo- Consulte el manual de la IG para una descripción más
ria para ciertas variables que necesitaremos en nuestro completa (puede bajarlo de nuestra web).
proyecto, para esto utilizaremos la directiva de ensambla-
dor CBLOCK, la cual define una lista de nombres de lo- BRILLO Color: Cambia el color actual de dibujo al in-
calidades comenzando en el número de localidad indica- dicado por Color, el cual puede estar entre 0 y 15. (negro
da enseguida de CBLOCK. y blanco).
En el caso del PIC16F84, las localidades RAM que
podemos usar comienzan en el número 0x0C (12 en de- BOTONES_CONTROL NumBotones: Dibuja boto-
cimal). nes de control en la parte inferior de la pantalla. NumBo-
La línea #DEFINE MODO_D0 es especial, la usa la su- tones indica cuantos botones se dibujarán. Pueden ser
brutina ENVIAR_BYTE para cambiar D0 a entrada o salida hasta 5.
y define en qué bit de qué puerto está D0. Observe que en
este caso D0 está en el Puerto B en el Bit 1 (TRISB,1). Las CUADRO_LLENO X2,Y2: Dibuja un cuadro del color
últimas líneas definen el nombre que se usará en 5 patas del Brillo actual. X2,Y2 indican la esquina inferior derecha
de los puertos del PIC. Estas son las líneas de comunica- y la esquina superior izquierda viene dada por el cursor
ción con la IG y 2 interruptores. Observe en el diagrama la actual.
coincidencia de LR, RJ y D0 de la base de 16 patas de la
IG con las patas de los puertos del PIC. MARCO_ALTO_REL X2, Y2: Dibuja un marco resal-
Antes de continuar debemos guardar nuestro archivo. tado (alto relieve). Las coordenadas se interpretan de la
Para esto, en el menú presione File> Save As … lo cual misma manera que en la macro anterior.
hace que aparezca el cuadro de diálogo para guardar.
Cambie el nombre “untitled” a “RelojDigital”. El archivo se TEXTO_FORMATO índice: Envía texto con formato a
guardará con el nombre “RelojDigital.asm” en el subdirec- la pantalla.
torio actual, el cual debe ser “RelojDigital”. Esta macro trabaja combinada con una tabla de texto,
Ahora deberemos agregar nuestro archivo al Works- la cual debe definirse antes de llamar la macro. Indice es
pace que creamos. En la ventana ProyRelojDigital.mcw el offset del byte inicial que se enviará hasta que se en-
aparece una sección titulada “Source Files”. Con el botón cuentre el fin de la cadena, el cual es el número 255.
derecho del ratón presione esta sección. Aparece un me-
nú contextual, seleccione Add Files… y en el cuado de Para una explicación más amplia del texto con forma-
diálogo que aparece seleccione el archivo “RelojDigital” to consulte el manual (por cuestiones de espacio no lo re-
(de hecho es el único que aparece en este momento). Al producimos aquí, pero lo puede bajar gratuitamente de
presionar el botón “Abrir” este archivo se agrega a nues- nuestra web, siguiendo los pasos dados anteriormente).
tro Workspace en la sección “Source Files”.
Ahora sí, ya tenemos guardado y agregado nuestro IMAGEN_2TONOS TamHor, TamVert, indice: Envía
archivo y podemos continuar. una imagen a la pantalla.
Al igual que la macro de texto, es necesario que se
MACROS DISPONIBLES defina una tabla de datos para poder usar esta macro.
En el archivo Macros.asm hemos creado varias ma- TamHor y TamVert indica el número de pixeles hori-
cros que simplifican la escritura y mejoran la legibilidad zontales y verticales de la imagen.
del código. A continuación se indican algunas de estas Esta se dibujará en el cursor actual. Indice es el offset
macros y su función: en la tabla de datos del byte inicial de los datos de la ima-
gen.
BORRAR_PANTALLA: La pantalla se borra llenán- Aunque hay muchas más macros, con las vistas has-
dose del color actual del fondo. ta ahora será suficiente para nuestro primer proyecto.

Saber Electrónica

17
Artículo de Tapa
TABLAS DE DATOS del programa. Teclee, a continuación, las líneas de la ta-
La manera más fácil para enviar un grupo de bytes a bla 3.
la IG consiste en agruparlos en una tabla y mediante una La directiva ORG 0x0000 indica la dirección donde
macro enviarlos uno por uno a la tarjeta. comenzará la ejecución del programa después de un re-
La directiva DT (Define Table) define una tabla de va- set. Aquí se ha escrito una instrucción de salto a la etique-
lores que permite inclusive escribir caracteres en código ta INICIO. Debido a que planeamos usar la interrupción
ASCII, lo cual es apropiado para enviar textos. Existe una del timer, el vector de inicio de dicha interrupción está en
macro para enviar texto y otra para enviar datos (los cua- la localidad 0x0004, donde se ha escrito un salto a la eti-
les pueden ser una imagen). Para usar dicha macro se queta INT_TMR0.
debe proporcionar el offset en la tabla correspondiente al En cuanto se produzca una interrupción del timer, se
primer byte que se enviará. No se preocupe si todo esto ejecutarán las instrucciones a partir de la etiqueta
le parece confuso, con una ojeada al código del reloj se INT_TMR0. A continuación escribimos ORG 0x0005 que
aclarará la manera en que se usan las tablas de datos. es donde iniciaremos nuestro código de subrutinas.
Observe las directivas INCLUDE las cuales le indican
VECTORES DE INICIO E INTERRUPCION, al ensamblador incluir 3 subrutinas junto con las demás
INCLUSION DE ARCHIVOS instrucciones que integran el programa.
Muy bien, ya tenemos nuestro circuito armado y tam-
bién hemos tecleado las instrucciones básicas de inicio CODIGO DE LAS TABLAS DE DATOS Y TEXTOS
A continuación crearemos las tablas de datos y textos.
Teclee el código de la tabla 4:
La tabla de datos agrupa los valores de una imagen
de 2 tonos de 16x16 pixeles la cual consiste en un peque-
ño reloj analógico. Consulte en su manual la instrucción
IMAGEN 2 TONOS si requiere de una explicación adicio-
nal.
La tabla de textos agrupa dos cadenas: la primera
simplemente tiene texto, sin embargo la segunda contie-
ne caracteres de control. La tabla 5 muestra los distintos
códigos de control para texto con formato.
Cuando la IG procesa los datos de la TABLA_TEX-
TOS de la segunda línea es-
cribe “RELOJ DIGITAL” en
la posición del cursor actual,
luego hay un carácter de
control “8”, lo cual significa
“saltar a las coordenadas
del botón de control”, luego
viene un “1”, esto es, el bo-
tón 1, Luego la IG escribe “
HOR”, lo cual lo hace dentro
del botón de control, ya que
anteriormente le ordenamos
saltar a este control.
Algo semejante ocurre con
el botón de control 2, dentro
del cual se escribe el texto: “
MIN”. Luego viene el código
“9”, lo cual hace que de aho-
ra en adelante al escribir
texto se redibuje el color del
fondo. Si no hacemos esto,
los caracteres del texto que
dibujemos se muestran em-

Saber Electrónica

18
Interfase Gráfica para TV
Observe el uso de la macro DIS-
PLAY_CUARZO.
Esta macro espera 3 bytes en bina-
rio, lo cual puede mostrar un número
mayor a 16 millones, sin embargo
solo usamos un número menor que
60 para cada display (Horas, minu-
tos y Segundos) por lo tanto debe-
mos enviar ceros en los bytes de va-
lor superior. Para esto hemos defini-
do un registro de nombre “Cero”, en
el cual colocamos el valor de 0 y lo
enviamos en los dos bytes que no se
usan.
El registro FormPunto se usa para
definir el formato de los números del
display. Consulte su manual para
una explicación amplia de este for-
mato.
Observe que si no se produce cam-
bio en los minutos o las horas no se
refresca el display respectivo.

PRECAUCION
DISPLAY_CUARZO espera como
palmados, ya que la IG no borraría el fondo (esto concier- argumentos registros, no valores numéricos. Por ejemplo,
ne a los segundos del display del tiempo). si tecleamos DISPLAY CUARZO 160, 4, 2, 100, su ejecu-
ción puede causar resultados inesperados, ya que la ma-
SUBRUTINA DE INTERRUPCION DEL TMR0 cro enviaría el contenido de la localidad 160, luego el de
Ahora escribiremos la subrutina que se llamará cuan- la localidad 100, luego el de la localidad 2 y por último el
do el TMR0 genere una interrupción, esto es, cada 60 de la localidad 4 ¡no los valores numéricos!.
(50) pulsos. Escriba el código de la tabla 6.

Lo primero que debemos hacer al entrar


a la subrutina es borrar el bit de aviso de in-
terrupción del TMR0 (INTCON,2), ensegui-
da debemos cargar el TMR0 con el valor
196 (206 para 50 Hz), ¿por qué?. Veamos:
El timer interrumpe al PIC cada vez que
hay un sobreflujo, la máxima cuenta es 255,
en el siguiente pulso se cambia a 0, lo cual
genera la interrupción. Si así lo dejamos, la
siguiente interrupción sería dentro de 256
pulsos, lo cual no es lo que deseamos, ya
que necesitamos que cuente 60 (50) pulsos
y no 256. Si cargamos al TMR0 con 196
(206), entonces con 60 (50) pulsos más se
produce el sobreflujo (196+60=256) y se
genera la interrupción, que es justo lo que
deseamos.
Enseguida está el código del pequeño
algoritmo que se expuso anteriormente.

Saber Electrónica

19
Artículo de Tapa
Primero debe definir 4 registros, luego colocar en porta el valor que usemos.
ellos el formato del punto y los 3 bytes que desea desple- El TMR0 cuenta los pulsos a la bajada, de acuerdo al
gar. Para usar la macro coloque los nombres de estos re- bit 4.
gistros en los argumentos. El bit 5 determina que la entrada del TMR0 sea del ex-
terior (pata 3).
CODIGO PRINCIPAL El bit 6 se usa para la interrupción externa. En nues-
Ahora escribiremos el código principal del programa, tro caso no se usa.
el cual se ejecuta al encender el circuito (reset). El bit 7 activa o desactiva resistencias en el puerto B,
Básicamente lo que hacemos en esta parte del pro- las cuales están internamente conectadas al VCC. En
grama es iniciar algunos registros, programar el registro nuestro caso las hemos activado para que no se necesi-
de opciones y configurar los puertos y las interrupciones. te colocar resistencias al VCC en los interruptores (usa-
Escriba el código de la tabla 7. mos las internas, llamadas pull-up).
El valor fijado es el 00101000 (0x28 en hexadecimal).
CONFIGURACION DE PUERTOS
El puerto A es configurado en modo entrada. INICIANDO REGISTROS
El Puerto B se configura con B,0 como salida, ya que El siguiente paso es iniciar algunas salidas y regis-
es RJ para la comunicación con la IG. Al inicio los demás tros. RJ y D0 se ponen en “0”. Ponemos a cero los regis-
bits son entradas (incluyendo D0). tros horas, minutos y segundos de modo que al encender
nuestro reloj comenzará en 00:00 00.
REGISTRO DE OPCIONES (OPTION_REG) Por último configuramos el registro del formato para
A continuación el programa carga el registro de opcio- nuestros 3 displays.
nes con el valor 0x28. Veamos qué sucede con esto: Aquí se indica la posición del punto y el número de dí-
gitos visibles (2).
BIT USO Valor fijado Motivo La última instrucción hace invisible el punto del dis-
0-2 Pre-escalador 000 No importa. play ya que no lo necesitamos y sólo nos estorbaría.
3 Asignación del pre-escalador 1 Al watch-dog.
4 Modo Disparo TMR0 0 A la bajada. DIBUJANDO EN LA PANTALLA
5 Señal del TMR0 1 Entrada externa. ¡Por fin! ahora comenzaremos a dibujar en nuestra
6 Modo de interrupción externa. 0 No importa. pantalla. Teclee el código indicado en la tabla 8.
7 Resistencias pull-up. 0 Activado. Lo primero que debemos hacer es borrar la pantalla,
para esto utilizamos la macro BORRAR_PANTALLA. Lue-
Valor fijado es lo que se programó en nuestro caso. go dibujamos dos botones de control los cuales se dibu-
Dado que el pre-escalador se asignó al watch-dog, no im- jan automáticamente en la parte inferior de la pantalla.
Enseguida dibujamos dos barras de
titulo en la parte superior de la pan-
talla. Observe que se cambia el co-
lor de Brillo a “0” (negro). Luego co-
locamos el cursor en las coordena-
das 22, 1 y dibujamos un Cuadro
Lleno con las coordenadas de la es-
quina inferior derecha en 226, 14, lo
cual da como resultado una barra
de color negro.
De la misma manera dibujamos otra
barra un poco más abajo pero de
color claro (Brillo=10).

ESCRIBIENDO TEXTO
A continuación escribiremos texto dentro de las barras
de títulos. Teclee el texto de la tabla 9:
El texto en la barra superior será de color claro (Bri-
llo=10), ya que la barra es negra. Después de colocar el
cursor en la parte izquierda de la barra, ejecutamos la

Saber Electrónica

20
Interfase Gráfica para TV
macro TEXTO_FORMATO, la cual espera el offset de ini- será 00:00 00, debido a que esta parte del programa se
cio en la tabla, el cual es 0, ya que iniciamos con el texto efectúa al inicio, sin embargo se habilita la interrupción
“SABER …”. por TMR0 y a partir de este instante nuestro reloj co-
A continuación cambiamos el color a uno más oscuro menzará a funcionar. Teclee el código de la tabla 12:
y escribimos en la barra inferior. Note que el offset de
TEXTO_FORMATO es 28, ya que comenzaremos a es-
cribir a partir del carácter número 28 de la tabla de textos.

DIBUJANDO EL ICONO
Ahora dibujaremos el icono de la aplicación en la par-
te superior izquierda de la pantalla. Teclee el código de la
tabla 10.

MANEJANDO LOS INTERRUPTORES


En esta última parte del código se verifica si se ha
presionado alguno de los dos interruptores, si esto su-
cede se actúa en consecuencia incrementando los mi-
nutos o las horas. Teclee el código de la tabla 13.
Primero colocamos el cursor en la parte superior iz-
quierda (coordenadas 0, 0), luego enmarcamos nuestro
ícono con un pequeño marco realzado. Enseguida cam-
biamos el brillo a un color oscuro (Brillo=3) y por último
ejecutamos la macro IMAGEN_2TONOS, donde indica-
mos que el tamaño de la imagen será de 16x16 puntos
con offset de 0.

PREPARANDO EL DISPLAY
A continuación dibujaremos el recuadro donde pre-
sentaremos nuestro display de cuarzo. Teclee el código
de la tabla 11.

Enmarcamos nuestro display con un recuadro en ba-


jo relieve y luego dibujamos dos pequeños cuadros entre
las horas y minutos para darle un aspecto más cercano a
un reloj real de cuarzo. Con esto queda preparada la pan-
talla para desplegar la hora. Observe que si se ha detectado un interruptor pre-
sionado, inmediatamente se anulan las interrupciones,
DESPLEGANDO LA HORA Y HABILITANDO con el fin de procesar el código de refresco del display.
INTERRUPCIONES ¿Porqué se deben anular las interrupciones? . Pregun-
A continuación desplegaremos la hora actual, la cual ta interesante...

Saber Electrónica

21
Artículo de Tapa
Veamos: Si dentro del programa principal estamos en- ¿QUE SIGUE?
viando instrucciones a la IG corremos el riesgo de que al
mismo tiempo ocurra una interrupción. Si la subrutina de En el siguiente artículo construiremos el primer equipo
interrupción trata también de enviar datos a la IG, ésta se de prueba práctico que utilizará la Interfase Gráfica, un me-
confundirá ya que esperaba datos del programa principal y didor digital de condensadores, el cual usará sólo 3 circui-
de pronto llegan datos de la subrutina de interrupción. Es- tos integrados de bajo costo los cuales son un PIC16F84,
to ocasionará la ejecución aleatoria de instrucciones y la un CMOS 4538 y un interruptor analógico CMOS 4066. Es-
pantalla se corromperá junto con el programa. te instrumento será capaz de medir condensadores desde
Por este motivo se anulan las interrupciones y sólo 1pF hasta 40µF en 3 escalas.
después de refrescar el display respectivo (horas o minu-
tos) se vuelven a activar.
IMPORTANTE
¡Es todo! hemos terminado de teclear el código de ATMega8515 y AT90S8515
nuestro reloj digital.
Aunque Atmel ha descontinuado el AT90S8515, el nue-
Bien, el último paso es ensamblar nuestro programa, vo ATMega8515 tiene un modo de configuración el cual es
para esto seleccione en el menú Project > Build All. Si no 100% compatible con el anterior (AT90S8515).
tenemos errores, el ensamblador creará un archivo titulado De hecho yo no tuve necesidad de cambiar una sola lí-
“RelojDigital.HEX”, el cual se usará para programar nues- nea del código fuente.
tro PIC con algún programador disponible. En la opción "Fuses" del programador simplemente se
Cabe aclarar que si Ud. no quiere seguir todos estos marca la casilla "AT90S4414/8515 compatibility mode;
pasos, en nuestra web, con el código dado en este texto, [S8515C=0]" y se obtiene dicha compatibilidad.
podrá encontrar el archivo “RelojDigital.HEX” que podrá Utilicé un programador comercial modelo STK500.
grabar en el PIC para circuito de la figura 10, utilizando La ventaja del Mega es que puede trabajar a 16MHz, a
cualquiera de los programadores de PICs publicados en diferencia del anterior, el cual es de 8MHz, sin embargo
Saber Electrónica, como el Quark Pro 2, por ejemplo. prácticamente no se ve afectada la IG con cualquiera de
Después de crear nuestro archivo HEX, programamos los 2. Por cierto, puse un cristal de 20MHz en el Mega y
el microcontrolador y lo insertamos en nuestra tarjeta de sorprendentemente trabajó sin problemas!
experimentos. Al conectar el protoboard a la placa IG y la
placa al televisor, aparecerá la pantalla de la figura 11.
PROGRAMADOR DE
MICROCONTROLADORES ATMEL
PROBANDO NUESTRO RELOJ Por razones de espacio, en este número no podemos
publicar ningún programador (quemador) de microcontro-
Después de encender la IG, lo primero que se ve en la ladores Atmel, sin embargo Ud. puede bajar un circuito con
pantalla es una imagen aleatoria, esto se debe a los valo- su correspondiente impreso, programas e instrucciones de
res indefinidos de la memoria RAM de video al momento uso de nuestra web www.webelectronica.com.ar, haga
de alimentarla. Al cabo de un segundo aparece la pantalla click en el ícono password e ingrese la clave “graficatv”.✪
de bienvenida, la cual se muestra en la figura 1.
Después de 4 segundos de mostrar ésta pantalla, la IG
coloca LR en “1”, indicando que está lista para recibir ins-
trucciones. Es en este momento cuando nuestro reloj debe
Figura 11
comenzar a funcionar. Después de ponerlo a tiempo, la
imagen en la pantalla será semejante a la que se muestra
en la figura 11.
Esta es una aplicación sin uso práctico, dado que sería
un reloj caro y además no se ha previsto el fallo de la ener-
gía eléctrica.
Sin embargo, el objetivo principal de esta aplicación ha
sido didáctico, donde se ha mostrado el uso de algunas
instrucciones básicas.
Una buena práctica para el lector sería agregarle una
alarma.

Saber Electrónica

22

Anda mungkin juga menyukai