CD-3160.pdf

Anuncio
ESCUELA POLITÉCNICA
NACIONAL
ESCUELA DE FORMACIÓN TECNOLÓGICA
CONSTRUCCIÓN DE TARJETA DE DESARROLLO PARA VERIFICAR
PROGRAMAS DE MICROCONTROLADORES PIC’S DE LA FAMILIA
18FXXX PARA EL LABORATORIO DE MICROPROCESADORES DE
LA ESFOT
PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE
TECNÓLOGO EN ELECTRÓNICA Y TELECOMUNICACIONES
ROJAS ROJAS LUIS JAVIER
[email protected]
MOLINA ALVAREZ DARWIN GEOVANNY
[email protected]
DIRECTOR: COSTALES GUADALUPE ALCIVAR EDUARDO
[email protected]
Quito, julio 2010
DECLARACIÓN
Nosotros, ROJAS ROJAS LUIS JAVIER y MOLINA ALVAREZ DARWIN
GEOVANNY declaramos bajo juramento que el trabajo aquí descrito es de
nuestra autoría; que no ha sido previamente presentada para ningún grado o
calificación profesional; y, que hemos consultado las referencias bibliográficas
que se incluyen en este documento.
A través de la presente declaración cedemos nuestros derechos de propiedad
intelectual correspondiente a este trabajo, a la Escuela Politécnica Nacional,
según lo establecido por la Ley de Propiedad Intelectual, por su reglamento y por
la normatividad institucional vigente.
Rojas Rojas Luis Javier
Molina Álvarez Darwin Geovanny
CERTIFICACIÓN
Certifico que el presente trabajo fue desarrollado por ROJAS ROJAS LUIS
JAVIER y MOLINA ALVAREZ DARWIN GEOVANNY, bajo mi supervisión.
Ing. Alcivar Costales
DIRECTOR DE PROYECTO
DEDICATORIA
El presente trabajo primeramente lo dedico a Dios que me permite terminar
un ciclo más en la vida y me da la fuerza diaria para continuar, a mis Padres José
Oswaldo Rojas y Deifilia Rojas que con su esfuerzo y compresión supieron darme
los valores necesarios para llegar a ser un excelente profesional, a mi hermana
Fernanda Rojas le dedico este trabajo que es con gran esfuerzo y que siempre
continúe en la vida hasta lograr alcanzar sus metas.
Este trabajo también le dedico a mi novia Joselyn que supo llegar a mi vida
en el momento preciso y que nunca deje sus sueños y metas porque todo se
consigue con esfuerzo.
A todos mis compañeros y amigos que han valorado el esfuerzo que implica
tener una gran amistad.
Rojas Rojas Luis Javier
DEDICATORIA
El presente trabajo lo dedico a Dios por permitirme alcanzar una meta mas
en mi vida, a mis padres Marco Molina y Aida Alvarez quienes con su amor y
paciencia siempre me han apoyado y guiado por el buen camino, a mis hermanos
Sonia, Mónica, Marco y Freddy quienes me aconsejaron para siempre cumplir las
metas que hay en la vida y me dieron fuerzas para conseguirlas paso a paso, a
mi novia Andrea Gavilanes quien siempre estuvo a mi lado tanto en los buenos
como en los malos momentos y finalmente a mis compañeros que estuvieron
pendientes de mi formación profesional.
Molina Alvarez Darwin Geovanny
TEMARIO
i.
RESÚMEN.
ii.
INTRODUCCIÓN.
CAPITULO 1.
1.1
MARCO TEÓRICO
TECLADO MATRICIAL. .................................................................................1
1.1.1
ESTRUCTURA INTERNA. ......................................................................... 1
1.1.2
CONEXIÒN. ............................................................................................... 2
1.2
LCD I2C. .......................................................................................................3
1.2.1
PARTES CONSTITUTIVAS. .................................................................... 4
1.2.2
MEMORIA INTERNA. .............................................................................. 4
1.2.3
CONEXIÒN. ............................................................................................. 5
1.3
TOUCH SCREEN. ..........................................................................................5
1.3.1
TIPOS ...................................................................................................... 6
1.3.2
BENEFICIOS Y UTILIDADES. ................................................................. 9
1.3.3
PROGRAMACIÒN. .................................................................................. 9
1.4
MICROPROCESADORES. ...........................................................................13
1.4.1
PIC`s 18FXXX. ....................................................................................... 13
1.4.2
DISPONIBILIDAD I2C. ............................................................................. 15
1.5
PROTOCOLO I2C. .......................................................................................15
1.5.1
INTRODUCCIÒN. ..................................................................................... 15
1.5.2
COMUNICACIÒN I2C. ............................................................................. 16
1.5.3
IMPLEMENTACIÒN. ................................................................................ 17
1.6
USB .............................................................................................................18
1.6.1
INTRODUCCIÒN. .................................................................................... 18
1.6.2
USOS. ..................................................................................................... 21
1.7
VISUAL BASIC. ..........................................................................................22
1.7.1
INTRODUCCIÒN. ................................................................................... 22
1.7.2
APLICACIONES A LOS Pic´s 18FXXX .......................................... 24
CAPITULO 2.
2.1
DISEÑO
HARDWARE. .............................................................................................. 25
2.1.1
DIAGRAMA EN BLOQUES................................................................. 25
2.1.2
PLANIFICACIÒN DE ELEMENTOS EN PROTO – BOARD. .............. 28
2.1.3
ENSAMBLAJE EN PROTO – BOARD. ............................................ 30
2.1.4
ELABORACIÒN DE PLACA ELECTRÒNICA. ................................... 31
2.1.4.1 Creación De Pistas Mediante Proteus Professional (ARES) ....... 31
2.1.4.2 Traslado De Pistas Hasta Baquelita Para Obtener Tarjeta Final... 36
2.1.5
2.2
CONEXIONES. ..................................................................................... 37
SOFTWARE. ............................................................................................... 38
2.2.1
SIMULACIÒN MEDIANTE PROTEUS PROFESSIONAL (ISIS). ....... 38
2.2.2
PROGRAMAS DE PRUEBA PARA LA TARJETA ELABORADA EN
MIKRO–C. ......................................................................................................... 41
2.2.3 IMPLEMENTACIÒN DE UN PROGRAMA EN VISUAL BASIC PARA
INTERACCIÒN PC – TARJETA . ...................................................................... 62
2.2.4
CORRECCIÒN DE ERRORES. ............................................................ 89
CAPITULO 3.
3.1
CONCLUSIONES Y RECOMENDACIONES ........................................... 91
3.2
BIBLIOGRAFÍA. ...................................................................................... 94
3.3
ANEXOS. ................................................................................................. 95
i.
RESÙMEN.
El presente trabajo abarca aspectos metodológicos conocidos en su
mayoría por los estudiantes, que permitirán desarrollar una gran gama de
aplicaciones para comprender y familiarizarse
con dispositivos electrónicos
desarrollados de tal manera que son compatibles con tecnologías que hoy en día
son muy comunes y están presentes en muchas aplicaciones ya sean
domésticas, industriales, mecánicas, etc.
El
comportamiento
creciente
de
aplicaciones
que
utilizan
microprocesadores para control y monitoreo de múltiples aplicaciones, hace que
sea de gran importancia el conocimiento del manejo de estos dispositivos y
aprovechar al máximo su potencial, es así, que ponemos en consideración
algunas aplicaciones que puedan ayudar a entender el funcionamiento de un Pic
18F4550 y la forma como interactuar entre medios tangibles y no tangibles
(medios físicos y programación involucrada).
ii.
INTRODUCCIÒN.
La utilización de dispositivos electrónicos en múltiples aplicaciones es muy
común en muchos lugares que visitamos y varía de acuerdo a las necesidades y
requerimientos del cliente.
Así para quién diseña y proporciona los diferentes dispositivos, trata de que
sean lo más sencillo posible para una interacción fácil y rápida.
Utilizar pantallas táctiles (Touch Screen) como perfiles de entrada y salida
a la vez, dejando de lado la necesidad de utilizar botones (Teclados), selectores
manuales, temporizadores externos, etc., producen una optimización del
microcontrolador que gobierna todo el circuito y así tener más aplicaciones
controladas por un solo dispositivo inteligente.
Es necesario conocer entonces el funcionamiento de elementos tales
como: Touch Screen, Teclado Matricial, PIC 18F4550, LCD I2C utilizados en este
proyecto y que se los encuentra en múltiples lugares y en múltiples aplicaciones.
Además de la interacción con un ordenador ya sea mediante comunicación
serial (RS 232), comunicación paralela (Puerto de Impresora LPT) o ya sea
mediante USB que es la que se utiliza en nuestro proyecto, es importante también
conocer como un complemento entre medios físicos hacia un ordenador y
viceversa.
CAPÌTULO
1
1
MARCO TEÒRICO
1.1 TECLADO MATRICIAL.
Representa un dispositivo de
entrada
generalmente
conectado
hacia el microprocesador el cual
permite
introducir
únicamente
señales de voltaje al momento de ser
presionada una de las teclas y de
esta manera ser procesado este
valor (voltaje) para su respectiva
aplicación.
Figura 1.1 Teclado Matricial
1.1.1 ESTRUCTURA INTERNA.
Un teclado matricial está constituido por
pulsadores normalmente abiertos formando
un circuito, el cual se activa al momento de
presionar cualquiera de las teclas enviando
así una señal de voltaje que será procesada
en el microprocesador o ya sea mediante un
decodificador de teclados.
Figura 1.2 Teclado
Matricial –
Estructura Interna
Para nuestro proyecto se utilizó un teclado
matricial 4x3 que tiene cuatro filas y tres
columnas (Figura 1.2), el cuál es un circuito
muy simple permitiendo que solo se active el pulsador o tecla que ha sido
2
presionado.
El dispositivo LDC I2C que se utiliza en este proyecto consta de una
conexión para este tipo de teclado.
Existen teclados que en su estructura interna poseen decodificadores los
cuáles envían hacia el microprocesador únicamente un valor numérico el cual
representa el número de tecla que ha sido presionada.
1.1.2 CONEXIÒN.
La conexión de un teclado
matricial depende del número
de filas y columnas que tenga
éste y generalmente cada
salida del teclado matricial se
lo conecta a una entrada del
microprocesador que va a
gobernar el circuito ya sea en
un solo puerto o entre puertos.
Figura 1.3 Teclado Matricial – Esquemático
En algunos casos se utilizan resistencias de protección para evitar enviar
valores parásitos debido a armónicos que se generan en muchos dispositivos
electrónicos.
Mediante software implementado en el compilador, se puede disminuir de
manera considerable los denominados “rebotes” o armónicos realizando un
muestreo continuo a una rapidez determinada.
3
1.2
LCD I2C.
Es un dispositivo esclavo, es decir, únicamente recibe datos desde el
microprocesador y los presenta en pantalla.
En si es un LCD gobernado por un microprocesador en su estructura
constitutiva, el cual permite transferir datos desde el microprocesador principal, es
Figura 1.4 LCD I2C
decir, desde el circuito de aplicación, hacia la pantalla utilizando 2 protocolos de
transferencia:
-
Protocolo I2C (el cuál se va a utilizar en este proyecto) y,
-
Protocolo SPI.
Los dos protocolos son de tipo serial, y necesitan únicamente un bus de
datos para su funcionamiento.
La forma de utilización entre un protocolo y otro se la realiza mediante la
utilización de un jumper, el cual permite inicializar el LCD en modo SPI (jumper
on) o I2C (jumper off).
Se ha considerado a este dispositivo como LCD I2C ya que es el protocolo
de transferencia que se va a utilizar en este proyecto, la forma correcta de
llamarlo es LCD SERIAL.
4
Tal como fue mencionado anteriormente, el dispositivo LCD I2C tiene
incorporado pines de entrada para un teclado matricial 4x3.
El software de programación ( MikroC por ejemplo ) a utilizarse debe tener
incluida la función para habilitar el modo I2C , el cuál envía códigos hacia el
microprocesador propio del LCD Serial, el cuál interpreta, procesa y muestra el
carácter deseado.
1.2.1 PARTES CONSTITUTIVAS.
En la Figura 1.5, tenemos
la distribución de pines del LCD
Serial, en la cual se muestra al
lado izquierdo en color rojo 4
pines los cuales representan la
polarización del LCD así como el
BUS SERIAL de datos, en la
parte inferior y de color rojo
también se muestran los pines
Figura 1.5 LCD I2C –Parte
correspondientes a la conexión del
TECLADO MATRICIAL 4x3 indicándose la forma de conexión tanto en filas y
columnas y por último en una circunferencia de color rojo se muestra el jumper
para selección entre modo SPI e I2C.
1.2.2 MEMORIA INTERNA.
Teniendo en cuenta que el dispositivo en
su conjunto lleva incluido un
microprocesador 16F819, es aquí donde se ha designado un Buffer de 64bytes
para recibir datos desde el circuito principal, procesarlos y sacarlos en pantalla
5
mediante sistema FIFO (First In First Out).
Se trata entonces de un Buffer de 8 bytes, con lo que puede recibir hasta
paquetes de hasta 8 caracteres por vez.
1.2.3
CONEXIÒN.
Como se trata de un BUS I2C únicamente, las líneas SDA y SCL del LCD
I2C son conectadas directamente hacia los pines P33 (RB0) y P34 (RB1) del
microprocesador 18F4550 respectivamente y en alguna parte de esta conexión
conectar resistencias de pull-up de un valor de 10KΩ c/u necesarias para
protección del dispositivo I2C y necesarias también para las condiciones de Inicio
de transferencia de datos (Start) y Parada de transferencia de datos (Stop).
1.3
TOUCH SCREEN.
Un Touch Screen o pantalla táctil
es una lámina resistiva transparente
que puede detectar una pulsación
dentro de una área determinada, esta
pulsación puede estar dada por la
mano o comúnmente por un lápiz
óptico.
El dispositivo actúa como periférico de
entrada y la acción ocurrida en esté se
Figura 1.6 G LCD con Touch Screen
lo transfiere a un GLCD (Graphical
Led Display).
Se tiene una gran variedad de aplicaciones para estos dispositivos
generalmente en computadoras y celulares.
6
1.3.1 TIPOS
En el desarrollo de los Touch Screen se utilizan varias topologías como:
•
Capacitancia.
•
Superficie de Onda Acústica (SAW).
•
Infrarrojo.
•
Resistiva.
TOUCH SCREEN CAPACITIVO
Recubierto con un material que almacena cargas eléctricas, cuando el
panel está tocado, una pequeña cantidad de carga es atraída por el punto de
contacto.
Circuitos ubicados en cada esquina del panel detectan la variación de
corriente y envía información al controlador para su procesamiento.
Paneles de pantalla táctil capacitiva se debe tocar con un dedo a
diferencia de los paneles de resistencia y la onda de superficie que pueden utilizar
los dedos y lápiz, además que pantallas táctiles capacitivas no se ven afectadas
por elementos externos y tienen una gran claridad.
TOUCH SCREEN DE SUPERFICIE DE ONDA ACÙSTICA (SAW).
La tecnología Surface Acoustic Wave es uno de los tipos de pantalla táctil
más avanzada y se basa en el envío de ondas acústicas a través de un panel de
vidrio transparente con una serie de transductores y reflectores.
Cuando un dedo toca la pantalla, las ondas son absorbidas causando un
evento táctil que se detecta en ese punto.
Debido a que el panel es enteramente de cristal, no hay capas que se
puede usar, dando a esta tecnología el mayor factor de durabilidad y también la
mayor claridad.
7
TOUCH SCREEN DE INFRARROJO.
En una pantalla táctil de infrarrojos se utiliza una matriz de XY infrarrojos
LED y un foto-detector pares alrededor de los bordes de la pantalla para detectar
una alteración en el patrón de LED.
Al momento de la pulsación, se interrumpe el haz de luz infrarrojo desde el
emisor hasta el detector, provocando en ambos ejes (X, Y) un punto “muerto” que
es detectado y enviado al microcontrolador para su procesamiento.
Una ventaja importante de este sistema es que puede detectar
prácticamente cualquier entrada incluyendo un dedo, dedo enguantado, lápiz o
bolígrafo.
A diferencia de pantallas táctiles capacitivas,
las pantallas táctiles de
infrarrojos no requieren ningún patrón en el cristal que aumenta la durabilidad y la
claridad óptica de todo el sistema.
TOUCH SCREEN RESISTIVO.
Usada en nuestro proyecto, esta topología es la más común y por tanto la
más utilizada debido a su fortaleza y confianza al momento de realizar alguna
aplicación.
Podemos encontrar Touch Screen de 4, 5, 6, 7, 8 hilos.
La diferencia entre uno y otro varía de acuerdo al tamaño de la pantalla
táctil, puntos de sensibilidad y sobre todo la aplicación.
8
El funcionamiento de esta topología básicamente consta de un divisor de
tensión (voltaje) de acuerdo a cuatro posiciones X, Y, -X, -Y, como se puede ver
en la Figura 1.7.
Figura 1.7 Capas de Touch Screen (4 Hilos)
El diseño de un Touch Screen se basa en tres capas:
• Capa X+Y+.
• Capa X- Y-.
• Capa de vidrio transparente.
Las capas: X+Y+ y X-Y- son resistivas y su composición es un bañado de
ITO (oxido de indio y estaño).
Los voltajes analógicos que en estas capas se generan son enviados hacia
el microprocesador para ser procesados.
En cambio la capa de vidrio transparente es únicamente de protección para
las otras 2 capas y evita que estas se deterioren.
9
1.3.2 BENEFICIOS Y UTILIDADES.
Tenemos variedad de aplicaciones entre otros tenemos:
• Monitores.
• Control de Computadoras.
• Control de UPS.
• Celulares.
• Lector de Huellas.
• Teclados Virtuales.
• Aplicaciones Gráficas de Alta Velocidad.
• Control de Refrigeradoras, Televisores, Lavadoras, etc.
1.3.3 PROGRAMACIÒN.
De acuerdo a la aplicación, el funcionamiento y por tanto la programación de
un Touch Screen depende básicamente de un controlador diseñado a base de
transistores PNP y NPN que trabajan conjuntamente para obtener valores
analógicos de voltaje de las 2 capas resistivas que constituyen el Touch Screen.
De esta manera los valores obtenidos son procesados y convertidos en
valores digitales para aplicarlos ya sea en un LCD o en un GLCD.
10
Figura 1.8 Controlador de Touch Screen
Nótese en la Figura 1.8 que existen 2 Drivers (DRIVEA y DRIVEB) los
cuáles van conectados hacia el microprocesador y controlan (salidas digitales) el
estado de polarización de los transistores tanto NPN como PNP para que puedan
ser obtenidos valores analógicos desde cada una de las capas (X+Y+ y X-Y-).
Valores analógicos ingresan al microprocesador mediante pines que son
configurados como entradas analógicas (depende de cada microprocesador) para
su procesamiento y posterior aplicación.
Estos valores analógicos una vez convertidos en valores digitales son ya
interpretados por el microprocesador y nos dan coordenadas X (capa X+Y+) y
coordenada Y (capa X-Y-) para representar un punto en el GLCD o bien realizar la
lectura de un valor previamente programado.
Es necesario entender también que el rango en el que puede caer el valor
digital está estrechamente relacionado con el rango de conversión que nos da el
microprocesador, el cual está dado por el número de bits de conversión.
11
Es así que al tener un convertidor A/D de 10 bits, implica que el menor valor
analógico leído y procesado corresponderá a un valor digital 0x0 (0 en sistema
decimal) y el mayor valor analógico leído y procesado corresponderá a un valor
digital 0x3FF (1023 en sistema decimal) de acuerdo con la fórmula:
# Valores digitales = 2#bits A/D -1
Ecuación 1.1
El valor digital (1023 valores) que corresponde a cada valor de voltaje
analógico depende en cambio del tamaño del paso del convertidos A/D y de los
valores de la fuente de polarización tanto en estado bajo como en estado alto ya
que la diferencia de potencial entre estos estados determinan cada qué valor de
voltaje analógico es asignado un valor digital.
Sea K = tamaño del paso:
Ecuación 1.2
En nuestro caso al tener una fuente de polarización de 0v (0mv) en estado
bajo y 5v (5000mv) en estado alto, el tamaño del paso es de:
Así para un valor analógico de 2v, el valor digital será:
De esta forma se obtienen los valores digitales para cada capa (X+Y+, X-Y-)
y por tanto se determina la coordenada X, Y para representar un punto en el
GLCD.
Nótese que la resolución obtenida se refiere a un sistema cuadrado de 1024
12
x 1024 puntos o pixeles posibles el cuál debe ser transformado a una resolución
que pueda ser vista en el dispositivo que se esté utilizando, es decir, si se utiliza
un GLCD de resolución 128x64 pixeles para el eje de coordenadas X el mayor
valor digital (1023) corresponderá el valor 128 y para el otro eje de coordenadas Y
el mayor valor digital (1023) corresponderá en cambio el valor 64.
Este cambio de coordenadas se lo puede realizar de manera sencilla en el
programa que se esté diseñando utilizando una variable la cual toma el valor para
cada coordenada mediante una simple regla de tres.
Para nuestro proyecto se utilizaron:
Entradas Analógicas (PIC 18F4550):
-
Port A.F0 (Left Touch Screen)
-
Port A.F1 (Bottom Touch Screen)
Salidas Digitales (PIC 18F4550):
-
Port A.F2 (Driver A)
-
Port A.F3 (Driver B)
Ejemplos de aplicación son detallados en el Capítulo 2.2.2 Programas de
Prueba Para La Tarjeta Elaborada en Mikro-C
13
1.4
MICROPROCESADORES.
Un Microprocesador forma parte de un circuito integrado llamado
Microcontrolador.
Un Microcontrolador en su
interior
incluye las tres unidades de una
computadora y puede ser programado:
-
Unidad Central de Procesamiento (CPU).
-
Memoria y
-
Unidades de E/S (Entrada y Salida):
Figura 1.9. Esquema de un Microcontrolador.
La estructura interna de un microprocesador es muy compleja y depende del
tipo de chip que se trate. Aunque todos poseen el esquema general mostrado en
la Figura 1.9
1.4.1 PIC`s 18FXXX.
Son Microcontroladores en cuya estructura interna se tienen características
mejoradas en comparación con Microcontroladores de familias anteriores, sean
estas 16FXXX y/o 14FXXX, tanto en memoria de programa, de datos, como en
funciones para las que se les puede utilizar.
14
El número de puertos y por tanto el número de pines de algunos
Microcontroladores de esta familia se incrementa teniendo así hasta 44 pines con
los cuáles se optimiza de mejor manera la utilización de un único microprocesador
para múltiples funciones tales como:
•
Convertidores Analógicos Digitales y viceversa.
•
Comunicación con otros Microcontroladores.
•
Modulación PWM.
•
Comunicación SPI.
•
Comunicación I2C.
•
Comunicación USB.
Estas 2 últimas (USB e I2C) propias de varios tipos de microcontroladores
18FXXX por ejemplo:
• 18F2455.
• 18F2550.
• 18F4455.
• 18F4550.
El microprocesador que se utiliza para desarrollar nuestra tarjeta es el
PIC18F4550, se lo escogió por sus características tanto de memoria y facilidad
de conectarse a la computadora ya que permite conexión USB y además
podemos trabajar mediante
comunicación I2C.
Figura 1.10 Distribución de Pines del 18F4550
15
1.4.2 DISPONIBILIDAD I2C.
Detallados en el numeral anterior, los microprocesadores con disponibilidad
I2C pueden ser de 2 formatos.
• SDIP (Standard DIP)
• SOIC (Small Outline Integrated Circuit)
• TQFP (Thin Quad Flat Pack)
• PDIP(Dual In Line Package)
Es decir, en formato planar (soldados encima de la placa) o en formato
transversa (soldados al lado contrario de la placa mediante orificios para cada
pin).
1.5
PROTOCOLO I2C.
El protocolo de comunicación I2C (Integrated Integrated Circuit)
es una forma serial de enviar o recibir datos desde distintos
dispositivos conectados en una “red” y se la realiza mediante un BUS
I2C.
1.5.1 INTRODUCCIÓN.
En un BUS I2C están conectados todos los dispositivos I2C todos ellos con
distintas direcciones físicas y que requieren:
• Una única línea para transmitir y recibir datos (SDA) dependiendo de qué
dispositivo inicia la transferencia de datos.
• Una línea la cual representa la señal de reloj a la que trabaja el sistema
(SCL).
• Dos líneas para polarización de los dispositivos conectados al bus: GND y
VCC.
16
En el BUS I2C las líneas de datos y reloj SDA y SCL respectivamente, van
conectadas hacia la fuente de polarización Vcc mediante resistencias de pull-up
generalmente de 10KΩ cada una.
La transmisión y recepción de datos se realiza únicamente en la línea de
datos
SDA
mediante
códigos de start, dirección
de dispositivo, instrucción
a realizar y código de stop
básicamente.
Figura 1.11 Condiciones de START y STOP del Bus I2C
1.5.2 COMUNICACIÒN I2C.
Para nuestro proyecto, la comunicación se realiza entre el microprocesador
(18F4550) y el LCD I2C únicamente ya que este tipo de LCD está diseñado con
esta finalidad (además de comunicación SPI).
Si bien es posible la comunicación de un microprocesador con una PC
mediante comunicación I2C, este tipo de conexión no es común ya que la
comunicación mediante USB representa la gran mayoría de dispositivos Plug &
Play por su gran rapidez y facilidad de conexión.
Entonces si es posible la comunicación PC-I2C a través de una interfaz ya
sea RS232 o el llamado USB ya que muchas computadoras llevan integradas en
sus tarjetas madre (mainboards) éstos terminales (RS232 y USB).
Dispositivos
I2C
tales
como:
relojes
en
tiempo
real,
sensores,
microprocesadores, memorias, etc. pueden ser conectados hacia el bus I2C
únicamente conectando sus respectivas líneas (SDA y SCL) hacia el bus como
17
podemos observar en la Figura 1.12
Figura 1.12 Dispositivos en Bus I2C
1.5.3 IMPLEMENTACIÒN.
Con la ayuda del compilador MikroC el cual tiene incorporado librerías
necesarias para que la comunicación I2C sea realizada, se realiza el programa
que permitirá enviar datos desde el microprocesador (dispositivo maestro) hacia el
LCD I2C (dispositivo esclavo) y mostrar los caracteres deseados en una
determinada secuencia que puede ser repetitiva o no.
Si bien es posible la comunicación entre PC – LCD I2C, esta requiere de una
interfaz que permita esta comunicación ya sea mediante USB o RS232 como ya
se expuso anteriormente.
De hecho para enviar datos o instrucciones desde una PC hacia el LCD I2C
se realiza la siguiente operación:
•
Con la ayuda de una aplicación en Visual Basic desde el ordenador hacia
el microprocesador (18F4550) utilizando comunicación USB se realiza la
interacción PC - µC.
•
Mediante programación en MikroC se realiza la interacción µC - LCD I2C.
Ejemplos de aplicación serán detallados en la sección 2.2.2 Programas
de
prueba para la tarjeta elaborada en Mikro-C, además de la sección ANEXOS en la
18
que están detallados todos los programas que se realizaron para este proyecto.
1.6
USB
El protocolo de comunicación USB ( Universal Serial Bus )
como su nombre lo indica es otro tipo de comunicación serial
que al igual que el protocolo I2C se lo realiza mediante un Bus
en el cuál constan la línea de datos D+, línea de reloj D- y dos
líneas de polarización GND y Vcc.
La diferencia entre USB e I2C radica en la mayor velocidad con la que en
USB son transferidos los datos desde un lugar a otro, ideal para dispositivos que
requieren “rapidez” para su funcionamiento tales como:
• Impresoras.
• Cámaras Web.
• Micrófonos.
• Parlantes.
• Teléfonos Móviles.
• Lectores de Huellas, etc.
Por esta razón a sido difundido con mayor amplitud este tipo de
comunicación y por tanto los dispositivos que utilizan este protocolo también han
ido en aumento.
1.6.1
INTRODUCCIÒN.
(Universal Serial Bus) o bus serial universal nació con el propósito de
remplazar la comunicación serie o paralelo que teníamos anteriormente.
Con la comunicación USB se pudo unificar todos los periféricos externos.
19
La comunicación USB es la más aplicada en nuestros días ya que por sus
facilidades, su velocidad y versatilidad han permitido un desarrollo increíble con
este protocolo de comunicación, lo que permite que una gran cantidad de
periféricos puedan conectarse a la computadora de una forma simple y rápida.
En un bus USB existen dos tipos de elementos: Anfitrión ("host") y
dispositivos; a su vez, los dispositivos pueden ser de dos tipos: concentradores
y funciones
Los concentradores ("Hubs") son el centro de una estrella, y sirven para
conectar con el sistema anfitrión, con otro hub o con una función.
Cada hub puede conectar hasta 7 dispositivos, aunque lo normal es que
sean de 4 salidas y proporcionan 500 mA de alimentación (hasta 2.5 W) a cada
uno de ellos, ya que el cable de conexión tiene hilos de señal (datos) y de
alimentación (5 V. CC ± 0.25 V).
Una función es un dispositivo capaz de transmitir o recibir datos o
información de control en un bus USB, suele conectarse como un dispositivo
independiente enlazado por un cable de menos de 5 metros, a un puerto del hub
o directamente al sistema anfitrión.
Que un hub pueda estar conectado a otro hub, significa que pueden
conectarse dispositivos en cascada; el sistema soporta un total 127dispositivos.
Una característica importante es que el concentrador (hub), proporcionan la
energía necesaria a la función por el cable de conexión (que transporta fuerza y
datos), lo que evita la necesidad de fuentes de alimentación independientes a las
funciones.
El cable USB es de 4 hilos, y comprende línea de señal de datos (D+),
línea de señal de reloj (D-) y alimentación (GND y Vcc) con lo que las funciones
pueden utilizar un único cable.
Existen dos tipos de cable: apantallado y sin apantallar, en el primer caso el
par de hilos de señal es trenzado; los de tierra y alimentación son rectos, y la
20
cubierta de protección (pantalla) solo puede conectarse a tierra en el anfitrión, en
el cable sin apantallar todos los hilos son rectos, las conexiones a 15 Mbps y
superiores exigen cable apantallado.
AWG mm Ø long. Máx.
28
0.321 0.81 m
26
0.405 1.31 m
24
0.511 2.08 m
22
0.644 3.33 m
20
0.812 5.00 m
Pin Nombre Descripción Color
1
VBUS
+ 5 V. CC
rojo
2
D-
Data -
azul
3
D+
Data +
amarillo
4
GND
Tierra
verde
Figura 1.13 Izq. Propiedades del Conductor, Der. Distribución de Pines USB
Se utilizan diámetros estándar para los hilos de alimentación del bus, para
cada sección se autoriza una longitud máxima del segmento, en la tabla izquierda
se muestran estas distancias, a la derecha se muestran la disposición de pines y
colores de identificación.
Se usan dos tipos de conectores, A y B, ambos son polarizados (solo
pueden insertarse en una posición) y utilizan sistemas de presión para sujetarse.
Los de tipo A utilizan conectores hembra en el sistema anfitrión, y suelen
usarse en dispositivos en los que la conexión es permanente (por ejemplo,
ratones y teclados).
Los de tipo B utilizan conectores hembra en el dispositivo USB (función) y
se utilizan en sistemas móviles (por ejemplo, cámaras fotográficas o altavoces).
21
En general podemos afirmar que los conectores tipo A están en el lado
del host (PC) o de los concentradores (hubs), mientras que los conectores tipo B
están del lado de los periféricos.
Conector tipo A
Conector tipo B
Figura 1.14 Tipos de Conectores USB
1.6.2 USOS.
Los usos son diversos dentro de este sistema de comunicación por la gran
diversidad ya que hoy en día casi todas las conexiones de los periféricos se los
realizan con un protocolo de comunicación USB, los periféricos como el mouse, o
memorias externas, cámaras digitales, teclados, etc. Una diversidad de periféricos
ha adoptado este protocolo de comunicación.
La tarjeta de prueba que se desarrolló lleva implementada una comunicación
USB lo que nos permite conectar nuestro microprocesador con una CPU para
poder interactuar entre estos dos dispositivos, para esto se desarrollo programa
creado en visual Basic y en micro C con la finalidad de enviar datos y se puedan
observar en display en nuestro caso un LCD.
22
1.7
VISUAL BASIC.
Mediante
este
software,
es
posible
generar un programa el cuál permita de
manera didáctica controlar los dispositivos
pertenecientes a la TARJETA.
Esta interacción PC-TARJETA se la
realiza gracias a un asistente de conexión (no
es el único) llamado Easy HID.
1.7.1 INTRODUCCIÒN.
Visual Basic es un software de programación orientado a objetos, es decir,
posee funciones prediseñadas las que pueden ser utilizadas indistintamente sin
necesidad de generar código alguno para su creación mas si para su
funcionamiento.
De esta manera podemos diseñar a nuestro parecer y de manera sencilla
una aplicación para interactuar desde el computador y así enviar códigos hacia el
microprocesador ubicado en la tarjeta para controlar los dispositivos electrónicos,
sean estos el GLCD y/o LCD I2C.
Esta interacción (PC-TARJETA) se la realiza mediante protocolo de
comunicación USB utilizando para ello un Asistente de
Conexión, que para
nuestro proyecto es el EASY HID WIZARD.
EASY HID WIZARD es un software de distribución gratuita (hasta ciertos
límites),
que
genera
automáticamente
los
códigos
necesarios
para
la
comunicación USB tanto para Visual Basic como para el compilador utilizado para
programar el microprocesador.
23
Figura
1.15Archivos
Generados por EASY HID.
En la Figura 1.15 se muestran los archivos generados mediante EASY HID,
y nótese que para el compilador se genera un archivo en PicBasicPRO lo cuál no
es útil para nuestro proyecto ya que nuestro compilador es MikroC.
Para solucionar este problema
se recurre a generar el programa para
conexión USB utilizando el Asistente
HID (Human Interface Device) del
propio MikroC, el que permite generar
el código para MikroC, MikroBasic o
MikroPascal como se observa en la
Figura1.16.
Figura1.16 Archivo Generado por Mikro C
Adjuntando el archivo generado por el Asistente HID de MikroC al programa
de aplicación que se esté realizando para la comunicación entre el computador y
la tarjeta mediante comunicación USB, se genera en el computador un lazo de
24
unión que es reconocido e instalado y de esta manera realizar operaciones entre
PC-TARJETA a través de la aplicación diseñada en Visual Basic.
Los pasos a realizarse para este efecto, son detallados en la sección 2.2.3
Implementación
de
un programa en Visual Basic para interacción PC-
Tarjeta.
1.7.2 APLICACIONES A LOS Pic´s 18FXXX
Como
se
explicó
anteriormente, el software que
ayuda
a
generar
tanto
la
aplicación para Visual Basic como
para el compilador a utilizarse es
EASY
posibles
HID
WIZARD,
siendo
únicamente
4
microcontroladores 18FXXX para
comunicación USB, ya que éstos
microcontroladores
son
los
Figura 1.17 Proyecto Generado por EASY
HID
únicos de esta familia con disponibilidad USB.
De esta manera se debe estar seguro del microprocesador a utilizarse para
comenzar a generar la aplicación en Visual Basic y así no tener problemas de
reconocimiento del dispositivo físico (Tarjeta Electrónica).
CAPÌTULO
2
25
DISEÑO
2.1
HARDWARE.
Mediante las pruebas realizadas en Proto-Board en lo que a conexión USB
se refiere, se determinó la necesidad de utilizar una fuente externa ya que el
puerto USB no entrega la corriente necesaria para el funcionamiento de la tarjeta.
Esto se debe a que teóricamente cualquier puerto USB tiene la capacidad
de entregar una corriente máxima de 500mA, pero en la práctica, esta corriente no
alcanza los 100mA razón por la cual al momento de conectar la tarjeta al
computador, ésta no llega a funcionar normalmente debido precisamente a
cuestiones eléctricas.
Con la fuente de voltaje externa y diseñada para una corriente máxima de
1A, se supera este problema pero constituye un “bloque” adicional a la Tarjeta.
El diseño de la tarjeta con todas las consideraciones tanto de energía como
de espacio, han determinado un total de 4 bloques de hardware los cuales son
detallados a continuación.
2.1.1
DIAGRAMA EN BLOQUES.
El programador de Pic´s
GTP-USB dispuesto en nuestra Tarjeta
Electrónica resulta muy útil debido a la facilidad de utilización y rapidez al
momento de programar un microprocesador.
26
J1
USBCONN
D2
D3
DIODE
DIODE
DIODE
2k2
1
3
2
4
18
1uF
Q1
Q2
R3
BC548
BC548
4k7
4k7
U1
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
VUSB
C2
1uF
100nF
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
C1
10uF
C7
U2
33
34
35
36
37
38
39
40
DIODE
C3
R2
PROGRAMADOR
GTP - USB LITE
2
3
4
5
6
7
14
13
D4
R1
VCC
D+
DGND
D1
15
16
17
23
24
25
26
2
3
4
5
6
7
10
C4
15pF
C5
21
22
23
24
25
26
27
28
15pF
19
20
21
22
27
28
29
30
8
9
10
1
PIC18F4550
R5
R6
100
100
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
OSC1/CLKI
VUSB
RE3/MCLR/VPP
11
12
13
15
16
17
18
9
C6
14
1
47uF
R4
PIC18F2550
10k
D6
R7
D7
DIODE
R9
1k
LED-BLUE
2k2
D5
R8
1k
LED-BLUE
Figura 2.1 Esquema del Programador GTPUSB LITE (PROTEUS)
Windows XP es compatible con este programador ya que versiones
posteriores tienen conflictos al momento de conectarlo al computador.
Q4
J1
2N3906
CONTROLADOR TOUCH SCREEN
1
2
3
4
CONN-H4
R2
R1
R11
1k
1k
1k
Q2
R4
de
un
arreglo
de
transistores
NPN-PNP,
J2
1
2
3
4
Botton
Left
Driver A
Driver B
CONN-H4
2N3904
resistores y capacitores que permiten leer
valores analógicos desde el dispositivo Touch
Screen mediante valores lógicos de polarización
R3
1k
El controlador de Touch Screen consiste
Left
Top
Right
Botton
47k
C1
enviados
100n
desde
el
microprocesador
para
polarizar los transistores ubicados en lugares
VSS
Q1
Q3
R5
2N3904
2N3904
C12
100n
adecuados.
1k
R6
1k
R12
Esto
permite
que en
tiempos muy
47k
Q5
2N3906
R8
pequeños (µs) se obtengan valores de cada
1k
una de las capas individualmente, es decir, una
R7
1k
Figura 2.2 Esquema del
Controlador Touch Screen
(Proteus).
esto se
capa por vez.
Dependiendo de qué Driver actúa primero
se habilita una de las capas del Touch Screen y
lo realiza mediante programación en el microprocesador.
27
El microcontrolador conjuntamente con el GLCD, Touch Screen, Teclado
Matricial y LCD I2C constituyen otro bloque de nuestra tarjeta aunque puede ser
dividida en 2 pequeños bloques debido a la posibilidad de utilizar un par de
dispositivos independientemente.
Nos referimos al par Touch Screen – GLCD y al par LCD I2C – Teclado
Matricial.
La habilitación de cada par se la realiza mediante la activación de un
switch, esto debido a que una vez conectada la fuente de energía a la tarjeta,
siempre se tendrá activados los dispositivos de la misma y mediante el uso switch
podemos inhabilitar una sección cualquiera que se trate ahorrando de esta
manera energía en el sistema.
J4
AU-Y1006-R
TECLADO 4X3 I2C
CONN-SIL7
GLCD
1
2
3
4
5
6
7
AMPIRE128X64
2
3
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
SW2
1
-Vout
RST
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
E
R/W
RS
V0
VCC
GND
CS2
CS1
VCC
D+
DGND
1k RV1
A
1
2
3
B
4
5
6
C
7
8
9
0
#
J7
SW ITCH - GLCD _ TOUCH SCREEN
1
CONN-SIL1
D
J6
U3
1
2
3
4
2
3
4
5
6
7
14
13
CONN-H4
33
34
35
36
37
38
39
40
OSC
C9
J10
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
20Mz
C8
100p
18
100p
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
VUSB
15
16
17
23
24
25
26
1
2
3
1
2
19
20
21
22
27
28
29
30
100n
LCD I2C
1
2
3
4
SW ITCH - LCD I2C
CONN-H4
J11
8
9
10
1
1
CONN-SIL1
R18
10k
C10
CONN-SIL2
SW3
PIC18F4550
C11
CONN-SIL3
J8
J9
1
CONN-SIL1
R19
100n
R20
1k
J12
1
10k
CONN-SIL1
R21
10k
J13
1
CONN-SIL1
FU1
SW1
1A
SW ITCH-PRINCIPAL
J3
1
2
HEADER
Figura 2.3 Esquema de la Tarjeta de Desarrollo (Proteus)
28
Además se ubica un interruptor general (switch) para encender o apagar la
tarjeta en su conjunto.
La
FUSIBLE
fuente
de
TRANSFORMADOR 12/12 V
alimentación es considerada
PUENTE DIODOS / 1A
V
U1
7805
120V
VI
VO
3
1
2
GND
1
SALIDA FUENTE 5V
2
R1
1k
C2
100p
C1
2200u
D1
LED
J1
un bloque adicional a la
Tarjeta Electrónica ya que
como
se
anteriormente,
explicó
la
energía
suministrada por un puerto
Figura 2.4 Esquema de la Fuente de
Alimentación 5V/1A (Proteus).
USB es insuficiente para el
correcto funcionamiento de
los dispositivos constitutivos
de dicha tarjeta.
Como podemos observar es una fuente muy simple con la particularidad de
entregar hasta una corriente máxima de 1A, lo cual es suficiente para su correcto
funcionamiento.
2.1.2
PLANIFICACIÒN DE ELEMENTOS EN PROTO – BOARD.
Pensando en la comodidad para el usuario, la ubicación de los dispositivos
se ha diseñado de tal manera que el GLCD con su respectivo TOUCH SCREEN
estén lo más cerca posible hacia el CONTROLADOR Touch Screen ya que es
necesario para su funcionamiento y de la misma manera, el LCD I2C lo más cerca
posible del TECLADO MATRICIAL ya que en su conjunto forman un
único
dispositivo completo.
Se refiere entonces a la sección inferior de la Tarjeta Electrónica en la que
se ubica el Controlador Touch Screen precisamente a continuación del GLCD con
su respectivo Touch Screen y con el switch que habilita o deshabilita todo este
conjunto permitiendo ahorrar energía para aplicaciones en las que no se utilice
estos dispositivos.
29
Cabe recalcar que para aplicaciones en las que interviene únicamente el
GLCD, tanto el Controlador y el Touch Screen pasan desapercibidos ya que su
funcionamiento
depende
de
una
programación
mediante
4
pines
del
microprocesador, caso contrario no recibe polarización y por consiguiente no
intervendrían en lo absoluto.
En la parte superior en cambio se ubica el Teclado Matricial 4x3 a
continuación del LCD I2C y de igual manera un switch el cuál habilita o deshabilita
el conjunto de igual manera para ahorrar energía.
Finalmente, en la parte inferior derecha se ubica el programador de pic´s
(18F4550 y 18F2550) GTP-USB LITE para facilidad y rapidez al momento de
poner en práctica los programas desarrollados para los dispositivos electrónicos
de la Tarjeta Electrónica.
La programación de microprocesadores se la realiza mediante el software
WinPic800 el que es distribuido de manera gratuita en la siguiente dirección
http://www.winpic800.com/ y como se explicó anteriormente es compatible con
Windows XP.
30
2.1.3 ENSAMBLAJE EN PROTO – BOARD.
Figura 2.5 Ensamblaje y Pruebas en Proto-Board
De acuerdo a la ubicación que tomará cada dispositivo en la Placa
Electrónica, se procede a armar el circuito en Proto-Board tomando en cuenta la
optimización del espacio físico en una dimensión aconsejable para su correcta
manipulación.
Nótese que en la Figura mostrada, no consta el Programador GTP-USB
Lite ya que no constituye una herramienta de control desde el computador o el
microprocesador.
31
2.1.4
ELABORACIÒN DE PLACA ELECTRÒNICA.
Consiste de 3 etapas claramente diferenciadas y que para cada una de
ellas se realiza un procedimiento dirigido, es decir, tomar en cuenta aspectos
eléctricos, aspectos físicos y medios químicos.
Así por ejemplo para el diseño se determinan aspectos eléctricos mediante
Proteus ISIS (2.2.1 Diagrama En Bloques), el cual nos ayuda a determinar la
validez o no de una conexión mediante simulación.
Para aspectos físicos en cambio nos remitimos a ARES, el cual nos permite
representar los elementos en un plano (Board Edge) y así determinar las
distancias correctas a las que se debe ubicar un elemento de otro para optimizar
el espacio.
Y en aspectos químicos nos referimos al método mediante el cual nuestras
pistas eléctricas ya elaboradas son “transferidas” hacia un medio tangible
(baquelita)
ubicando nuestros dispositivos electrónicos y así realizar las
respectivas pruebas de funcionamiento para determinar posibles errores. Para
nuestro caso se realizó el método de Insolación el cuál será explicado
posteriormente.
2.1.4.1 CREACIÒN DE PISTAS MEDIANTE PROTEUS PROFESIONAL (ARES)
Terminada la etapa de diseño en bloques realizada en Proteus ISIS,
mediante el
procedemos
ícono ARES
a
ubicar
los
,
elementos
electrónicos en la posición detallada en el
capítulo 2.2 Planificación de elementos
en
Proto-Board
previamente
estableciendo la capa de soldadura
(Board Edge) indispensable para la
creación
de
pistas,
sin
esta
Figura 2.6 Selección de Capa de
Suelda.
sería
imposible “enrutar” cada dispositivo mediante una línea de conexión y así colocar
32
cada elemento de tal forma que sean lo más compactamente posible y tomando
en cuenta espacios físicos reales de los elementos constituyentes de la Tarjeta
Electrónica.
Una vez ingresado al software para creación de pistas ARES ,
inmediatamente tenemos todos los elementos utilizados en el diseño mediante
Proteus ISIS y cuya lista aparece en orden alfabético y así ubicar un elemento
rápidamente para su colocación en el plano de soldadura
Figura 2.7 Traslado de Componentes para el
Diseño.
Trasladados todos los elementos a la mesa de trabajo se procede a la
ubicación de nuestros elementos.
Esta tal vez es la parte más complicada ya que para evitar errores al mandar
a enrutar nuestro circuito, lo hacemos a doble lado por la complejidad y
dimensiones de la tarjeta.
De esta manera se logra disminuir potenciales errores en lo que a cercanía
de pistas se refiere aunque esto conlleva a la creación automática de “puentes”
que para nuestra tarjeta resultan ser 9.
La forma de ubicar los elementos electrónicos se la realiza de manera
33
manual o automática, siendo esta última la menos recomendable ya que si bien
enruta todos los elementos electrónicos establece en muchos de los casos un
número exagerado de “puentes” que hacen difíciles las conexiones entre capas
superior e inferior.
Se observa en la Figura 2.8 un ejemplo de distribuir - enrutar
automáticamente todos los elementos y la generación de “puentes” señalados por
el círculo en rojo.
Para evitar precisamente este problema, se coloca manualmente todos y
cada uno de los elementos electrónicos de manera tal que cumpla con las
características de ser
compacta y disminuir al
máximo la generación
de puentes.
Una
vez
planificada
adecuadamente
la
distribución
de
elementos y colocadas
en nuestro plano de
soldadura,
teniendo
enrutamos
como
resultado un total de 19
Figura 2.8 Enrutamiento Automático
(Generación de Múltiples Puentes).
puentes los que son
reducidos a 9 mediante
caminos manuales de pista ya que existen caminos que no son tomados en
cuenta por el Diseño Automático de Pistas ya que se trata de un software que
sigue determinados parámetros.
Logrando así un circuito eléctrico tanto en capa superior como en capa
inferior con un número relativamente aceptable de uniones alternas (puentes).
34
Así nuestra tarjeta en capa inferior (Bottom) consiste en su mayor parte de
pistas con un espesor T30 y en capa superior con puentes del mismo espesor
indicado.
El gráfico en la Figura 2.9 detallado muestra el esquema final de la placa en
su parte inferior (Bottom) y nótese que se ha agregado un relleno de cobre.
Figura 2.9 Tarjeta de Desarrollo – Parte Inferior
En la Figura 2.10
se observa el esquema de la placa final en la parte
superior (Top), en el que constan tanto los puentes generados (9) además de la
35
simbología de los elementos electrónicos utilizados.
Figura 2.10 Tarjeta de Desarrollo – Parte Superior
36
2.1.4.2 TRASLADO DE PISTAS HASTA BAQUELITA PARA OBTENER
TARJETA FINAL.
El proceso mediante el cual se traslada el diseño con sus respectivas
pistas electrónicas desde un computador hacia un medio físico se lo realiza de
muchas maneras algunas sofisticadas y otras caseras.
Así por ejemplo como medio sofisticado tenemos máquinas especiales que
de manera automática y guiadas mediante algún software, graban en una placa
las pistas de forma muy precisa y rápida , pero que constituyen una alternativa no
muy económica en lo que a ahorro de dinero se refiere.
Por esta razón se determinó la necesidad de seguir un método alternativo y
relativamente económico para trasladar las pistas hacia una placa.
De esta manera construimos un INSOLADOR que mediante exposición a
rayos ultravioleta en un ambiente oscuro con ayuda de NEGATIVOS tanto de
placa inferior como de placa superior y de algunos químicos (Ácido Nítrico,
Esmalte Fotosensible, Ácido Crómico) permiten grabar en una baquelita o placa
las pistas diseñadas de forma muy aceptable.
El procedimiento es el siguiente:
•
En primer lugar lijar (lija # 40 o # 50) la superficie de la baquelita para
obtener una superficie suficientemente liza para que pueda ser impregnada
de mejor manera el Esmalte Fotosensible.
•
Una vez lijado y secado, limpiamos la superficie con Polvo Blanco de
España (polvo muy fino), el cual elimina cualquier resto de impurezas
presentes todavía en la baquelita.
•
Se la lava con agua y se la seca nuevamente.
•
Aislamos en un ambiente obscuro para impregnar sobre esta el Esmalte
Fotosensible y la dejamos secar.
•
Seco el Esmalte Fotosensible y siempre en un ambiente obscuro, se
procede a adjuntar los negativos del circuito electrónico al lado correcto
para ingresar el conjunto a la INSOLADORA.
37
•
Alrededor de 6 minutos son necesarios para impregnar mediante luz
ultravioleta los campos (pistas) en la baquelita.
•
Luego de sacar el conjunto de la INSOLADORA, se sumerge la baquelita
en Acido Crómico hasta distinguir claramente todas las pistas de la capa en
cuestión (15 a 20 seg.).
•
Inmediatamente después se rocía con agua a chorro para eliminar el
exceso de Esmalte que no fue expuesto a luz ultravioleta, obteniendo de
esta manera un “dibujo” exacto del negativo.
•
Con la ayuda de un mechero a una distancia de al menos 10cm y siempre
en movimiento la baquelita, se “queman” las pistas hasta llegar a una
coloración Café Oscuro punto en el cual está lista para retirar el cobre que
no es de nuestra utilidad.
•
Finalmente, introducimos la baquelita en Acido Nítrico hasta que
únicamente queden las pistas de color Café Oscuro y con cuidado ya que
se trata de químicos muy peligrosos.
Experimentando este método y al momento de realizar pruebas de
funcionamiento se obtienen resultados satisfactorios.
2.1.5 CONEXIONES.
Una vez retirado el cobre innecesario, realizamos en primer lugar una
verificación visual cuidadosa del circuito impreso para detectar posibles fallas de
conexión al utilizar el método por INSOLACIÓN.
De no encontrar ninguna anomalía visual, retiramos el Barniz de los puntos
de soldadura de los elementos con una lija suave para mediante el uso de un
Multímetro medir continuidad desde todos y cada uno de los puntos hacia sus
respectivos terminales (conexiones) asegurando con los 2 procesos anteriores
que no exista falencias en conexiones y así someter a pruebas de funcionamiento
nuestra Placa Electrónica.
38
De existir fallas detectadas visualmente o mediante el multímetro será
necesario elaborar la Tarjeta Electrónica nuevamente desde un inicio.
2.2 SOFTWARE.
El presente capítulo se refiere a las herramientas informáticas (software) que
ayudan al usuario a diseñar, simular e interactuar con dispositivos electrónicos de
manera sencilla y lógica.
Así para determinar la validez de una conexión recurrimos a una
“simulación” la cuál muestra el funcionamiento de un determinado circuito y de
esta manera asimilar los conocimientos y determinar la validez o no de dicha
conexión.
Podemos decir que el diseño y la simulación van claramente de la mano
ayudándonos a realizar un circuito y a determinar errores por confusión de ideas o
por fallidas conexiones.
En lo que a interacción se refiere una forma de realizarla es precisamente
mediante simulación, en especial para “comunicarnos” hacia nuestra tarjeta la que
existe como un medio virtual dentro de nuestro computador.
Esto siempre y cuando tengamos un programa para el microprocesador que
permita dichas simulaciones y que para nuestro caso utilizamos MikroC.
2.2.1 SIMULACIÒN MEDIANTE PROTEUS PROFESSIONAL (ISIS).
Proteus Professional ISIS es una herramienta muy útil que nos permite
diseñar con una gran cantidad de dispositivos eléctricos y electrónicos un sin-
39
número de circuitos y poder observar su funcionamiento como si tuviéramos el
hardware en nuestras manos.
El manejo de este software es relativamente simple ya que permite
interconectar cada elemento de forma rápida y sin necesidad de crear puntos de
acceso a ellos como si resulta ser en otro simulador (Eagle).
Observamos una simulación en la cual únicamente interviene un Pic
18F4550 y un GLCD Figura 2.11.
Nótese que los pines utilizados para el manejo del GLCD, MCLR y
polarización del GLCD intervienen en la simulación.
Tanto el oscilador como resistencias adicionales al circuito quedan
relegadas ya que se supone deben estar conectadas.
LCD1
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
-Vout
RST
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
E
R/W
RS
V0
VCC
GND
CS2
CS1
AMPIRE128X64
U1
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40
18
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
VUSB
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
15
16
17
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
1
PIC18F4550
Figura 2.11 Conexión del GLCD mediante Pic 18F4550
40
LCD1
Representado
AMPIRE128X64
RV2
RV1
1k
1k
por 2 potenciómetros,
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
-Vout
RST
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
E
R/W
RS
V0
VCC
GND
CS2
CS1
el siguiente circuito
muestra
una
simulación
mediante
Touch Screen en la
U1
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40
18
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
VUSB
15
16
17
23
24
25
26
cual se observa un
19
20
21
22
27
28
29
30
coordenada
8
9
10
1
PIC18F4550
punto
por
cada
XY
generadas por cada
R1
convertidor A/D.
10k
Figura 2.12 Representación de Touch Screen Mediante
División de Tensión
Esto es precisamente el funcionamiento de un Touch Screen y su resultado
expresado en un GLCD es muy diverso dependiendo del programa.
Un Touch Screen nos ayuda a poner en práctica varias aplicaciones tanto
didácticas como de seguridad.
Por ejemplo:
-
Con la ayuda de un lápiz propio de un Touch Screen dibujar y grabar
un bosquejo para luego editarlo si se desea.
-
Un programa para crear una calculadora táctil con su respectivo
valor expresado en la misma pantalla.
-
Control de acceso mediante el uso de una contraseña.
-
Interacción entre dispositivos escogidos desde la pantalla táctil.
-
Control de iluminación de un sector de una vivienda, edificio, etc.
41
Debemos tener en cuenta que todas estas aplicaciones las realiza el
microprocesador que gobierna el circuito, un Touch Screen únicamente nos da
una facilidad visual y estética de cualquier aplicación que deseemos.
2.2.2 PROGRAMAS DE PRUEBA PARA LA TARJETA ELABORADA EN
MIKRO–C.
Los programas expuestos a continuación son desarrollados en MikroC,
comprobados mediante Proto-Board y únicamente representan pruebas de
funcionamiento de cada uno de los elementos electrónicos componentes de
nuestra tarjeta electrónica (GLCD, LCD I2C y Touch Screen).
El resultado obtenido puede ser observado mediante fotografías tomadas al
momento de poner en práctica el programa desarrollado.
* PRIMER PROGRAMA DE PRUEBA:
Prueba de Funcionamiento del GLCD.
unsigned char const ESFOT_bmp [1024] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,240, 48, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0,
42
0, 0, 0, 0, 0, 0,192,224, 48, 16, 16, 16, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,112, 16, 16, 16, 16,
16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 96, 32,
16, 16, 16, 16, 48,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 16, 16, 16,240,240, 16, 16, 16, 16, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,192,254, 7, 4, 4, 4, 4, 0, 0, 0,128,128, 0, 0, 0,
0, 0, 0, 0,128, 0, 1, 3, 6,140,252,120, 0, 0,128,128,
0, 0, 0, 0, 0, 0, 0, 0,192,254, 15, 4, 4, 4, 4, 0,
0,128,128, 0, 0, 0, 0, 0, 0, 0, 0,124,255,129, 0, 0,
0, 0,128,192,120, 31, 0, 0,128,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,128,252, 31, 0, 0, 0, 0, 0,128,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 0, 0,128, 1, 1, 0, 0, 0,
0,128, 0, 0, 0, 1, 1,129,129,129,128, 0, 0, 0, 1,129,
128,128,128, 0, 0, 0, 0,128,129,129,128, 0, 0, 0, 0, 0,
128, 1, 1, 0, 0,128,128,128,128,128,128, 0, 0,129,129,129,
129, 1, 0, 0, 0,128,128,128,129, 1, 0, 0,128, 0, 0, 0,
128,128,128,128, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,120, 67, 64, 64, 96, 16, 28,
19, 17, 31, 64, 0, 0,120, 71, 68, 68, 62, 1, 0, 60, 67, 64,
64, 64, 32, 25, 6, 0,120, 7, 4, 12,114, 1, 96, 16, 28, 19,
17, 31, 64, 0, 0, 0, 96, 31, 0, 0, 0, 60, 67, 64, 64, 64,
32, 25, 6, 0,120, 7, 4, 12,114, 1, 0,120, 3, 0, 60, 67,
64, 64, 64, 32, 25, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
43
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,224, 28, 28,192, 0,128, 32, 24,236, 12, 0,192, 28, 0,
224, 24, 12, 4, 4, 12, 0,192, 60, 36,100,148, 8, 0,224, 24,
4, 4, 4, 4,200, 48, 0,192, 92, 68, 68, 36, 24, 0,192, 60,
36,100,148, 8, 0,224, 24, 4, 4, 4, 4,200, 48, 0,224, 24,
12, 4, 4, 12, 0,192, 60, 36, 36, 4, 4, 16, 44,100,196, 8,
0,128,224,152,140,248, 0, 0, 0,192, 28, 4, 4, 4,200, 48,
0,224, 24, 4, 4, 4, 4,200, 48, 0,192, 60, 36,100,148, 8,
0,192, 60, 36, 36, 4, 4, 16, 44,100,196, 8, 0, 0, 0, 0,
0, 0, 3, 0, 0, 3, 3, 0, 0, 0, 3, 0, 0, 3, 0, 0,
1, 2, 2, 2, 1, 0, 0, 3, 0, 0, 0, 3, 0, 0, 1, 2,
2, 2, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0,
0, 0, 3, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0, 0, 1, 2,
2, 2, 1, 0, 0, 3, 2, 2, 2, 0, 1, 2, 2, 2, 1, 0,
3, 0, 0, 0, 0, 0, 2, 0, 0, 3, 2, 2, 2, 1, 0, 0,
0, 1, 2, 2, 2, 2, 1, 0, 0, 0, 3, 0, 0, 0, 3, 0,
0, 3, 2, 2, 2, 0, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char const TARJETA_bmp[1024] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
44
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,130,254, 30, 2, 2,
2, 2, 0, 0,128, 96, 56, 14, 30,252, 0, 0, 0, 0, 0,192,
254,142,130,130,194,102, 60, 8, 0, 0, 0, 0,248, 62, 0, 0,
192,254,134,130,130,130, 2, 2, 0, 0, 2, 2,130,254, 30, 2,
2, 2, 2, 0, 0,128, 96, 56, 14, 30,252, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,192,254, 6, 2, 2, 2, 2, 4,252, 96, 0,
0,192,254,134,130,130,130, 2, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 63, 3, 0, 0, 0,
0, 48, 28, 7, 5, 4, 4, 4, 4, 15, 63, 0, 0, 0, 56, 63,
1, 0, 0, 1, 15, 62, 0, 32, 32, 32, 48, 31, 3, 0, 0, 56,
63, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 48, 63, 3, 0, 0,
0, 0, 48, 28, 7, 5, 4, 4, 4, 4, 15, 63, 0, 0, 0, 0,
0, 0, 0, 0, 56, 63, 32, 32, 32, 32, 16, 24, 14, 3, 0, 0,
56, 63, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
45
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,192,254, 6, 2, 2, 2, 2, 4,252,
96, 0, 0,192,254,134,130,130,130, 2, 2, 0, 0, 56,124,198,
130,130, 2, 4, 0, 0, 0,128, 96, 56, 14, 30,252, 0, 0, 0,
0, 0,192,254,142,130,130,194,102, 60, 8, 0, 0,192,254,142,
130,130,194,102, 60, 8, 0,128,240, 56, 12, 4, 2, 2, 2, 2,
6,252, 0, 0, 0,192,254, 6, 0, 0, 0, 0, 0,192,254, 6,
0, 0, 0, 0,128,240, 56, 12, 4, 2, 2, 2, 2, 6,252, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 56, 63, 32, 32, 32, 32, 16, 24, 14, 3,
0, 0, 56, 63, 32, 32, 32, 32, 32, 0, 0, 16, 32, 32, 32, 32,
49, 31, 15, 0, 48, 28, 7, 5, 4, 4, 4, 4, 15, 63, 0, 0,
0, 56, 63, 1, 0, 0, 1, 15, 62, 0, 0, 0, 56, 63, 1, 0,
0, 1, 15, 62, 0, 0, 0, 15, 31, 48, 32, 32, 32, 32, 16, 24,
15, 3, 0, 0, 56, 63, 32, 32, 32, 32, 0, 0, 56, 63, 32, 32,
32, 32, 0, 0, 15, 31, 48, 32, 32, 32, 32, 16, 24, 15, 3, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
46
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char const grupo_bmp[1024] = {
0, 0, 0, 0, 0, 0, 0,128,128,128,128,128, 0, 0, 0, 0,
0, 0, 0,128,128, 0, 0, 0, 0, 0,128,128,128,128,128, 0,
0, 0,128, 0, 0, 0, 0,128,128, 0, 0, 0, 0,128,128, 0,
0,128, 0, 0, 0,128, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,
0, 0, 0,128,128, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0,
0, 0,128,128,128,128, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,
0, 0,128, 0, 0, 0,128, 0, 0, 0, 0, 0,128, 0, 0, 0,
0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,224, 63, 1, 0, 0,128,193, 63, 12,128,224,
48, 44, 35, 33, 63,240, 0, 0,224, 63, 17, 16, 48,232, 15, 0,
0, 0,255,128,192, 48, 12, 3,255,128,192, 48, 12, 3, 0,224,
63, 1, 0,224, 63, 1, 7, 60,224,192,124, 7, 0, 0, 0, 0,
0,224, 63, 3, 15,248,128, 96, 48, 12, 6,241, 15, 0, 0,248,
134, 1, 0, 0,128,192,127, 4, 0,224, 63, 1, 0, 0, 0, 0,
224, 63, 1, 0,224, 63, 1, 7, 60,224,192,124, 7,128,224, 48,
44, 35, 33, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
47
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,240, 28, 0, 0,128, 96, 24, 12,252,128, 0,
0, 0,252,128, 0, 0,192,112, 24, 4, 0,248, 12, 0, 0,248,
76, 68, 68, 68, 4, 0, 0,248,140,132,132, 68,124, 0, 0, 0,
0, 0, 0, 0,248,140,132,132, 68,124, 0, 0,192, 48, 8, 4,
4, 4, 4,248, 32, 0, 0, 0,240, 28, 0, 0,128, 96, 24, 12,
252,128, 0, 0, 0,120, 68,196,132, 12, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 8, 8, 6, 3, 0, 12, 7, 1, 1, 1, 1, 1, 15, 0,
0, 0, 0, 15, 12, 3, 0, 0, 0, 0, 15, 1, 0, 0, 15, 9,
8, 8, 8, 0, 0, 0, 15, 1, 0, 0, 1, 15, 0, 0, 0, 0,
0, 0, 0, 15, 1, 0, 0, 1, 15, 0, 0, 0, 7, 12, 8, 8,
8, 12, 6, 3, 0, 8, 8, 6, 3, 0, 12, 7, 1, 1, 1, 1,
1, 15, 0, 4, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,128,192,192, 0, 0, 0, 0, 0, 0,192,192, 0, 0,
0, 0, 0,128,192,192, 0, 0, 0, 0,192, 0, 0, 0, 0,192,
64, 0, 0,128, 64, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,192, 96, 0, 0, 0, 0, 0,128, 64,
64, 64,192, 0, 0, 0,128,192, 64, 64,192,128, 0, 0, 0,128,
128,192, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,240, 31, 1, 7,252,192, 48, 24, 6, 3,248, 7, 0,192,
112, 24, 22, 17, 16, 31,248, 0, 0, 0, 1,255, 28, 6, 3, 0,
0,124,195,128,128,128,192, 96, 63, 2, 0, 0, 0, 0, 0, 0,
48
0, 0,128, 96, 48, 12, 3, 0, 0, 0, 0, 0,128,192,224,176,
152,140, 7, 0, 0,126,131,128,128, 64, 56, 15, 0,128,129,193,
252,131,128, 0, 0,126,131,128,128, 64, 56, 15, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char const estudiando_bmp[1024] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,128,192, 64,192,128,128,128, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 8,248,252,252,252,
248,184,240,224,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 64,
32,156,228, 33,153,251, 3, 31,243, 7, 6, 6, 5, 13, 12, 8,
24, 26, 26, 16, 52, 52, 52, 40, 40,104, 80,240, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3,255,128,193,255,255,255,
255,255,127, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,128, 64, 32, 32, 96,192,192,192,192,192,128, 0, 0, 0, 0,
0, 0, 0, 0, 0,128,128,128,128,128,128, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 96, 96, 96,176,136, 68, 38, 33, 24, 16,
2, 7,140,124, 63, 7, 63,240, 3,124,192, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,124,192, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,255,255,255,
255,224,192,192,192,192,192,128,128,128,128,128,192,192,192,192,
248, 1, 0, 0, 0, 0, 99,255,255,255,255,255,255,240,240,248,
252,252,254,254,252,252,254,254,254,255,254,255,229,195,154, 70,
46, 94, 62, 54, 42, 10, 22, 10, 10,222,223,184,184,112,224,192,
192,192,192,192, 64, 64,192, 7,127, 64, 97,254,252,240,240,240,
224,224, 96,224,224,224,192,192,192,192,192,192,192,128,131,158,
240,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 24, 31, 31, 31, 63,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 48, 72,224, 96,244,255,255,255,255,223,207,199,231,243,243,
251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,
50
254,254,124,124,126, 60, 62, 28, 31, 31, 15, 15, 15, 15, 15, 12,
30, 29, 61, 61, 57,125,125,125,251,243,243,247,251,250,250,242,
180, 22, 28, 13, 13, 13, 3, 2, 3,195,199,197, 77,109,191,135,
3, 3, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124,192,146,207,253,253,127,127,127,127,127,255,255,127, 63, 31,
15, 15, 7, 7, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 7,
7, 6, 12, 24, 16, 48, 32, 41, 49, 43,110,124, 52, 39, 38, 62,
10, 11, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
void main() {
ADCON1=0b00001101;
TRISB=0;
TRISD=0;
Glcd_Init(&PORTB,2,3,4,5,6,7,&PORTD);
repita:
Glcd_Fill(0);
Glcd_Image(ESFOT_bmp);
51
delay_ms(100);
Glcd_Fill(0);
Glcd_Image(TARJETA_BMP);
delay_ms(100);
Glcd_Fill(0);
Glcd_Image(grupo_BMP);
delay_ms(100);
Glcd_Fill(0);
Glcd_Image(estudiando_bmp);
delay_ms(100);
goto repita;
}
52
Nótese en la Figura 2.13 que los gráficos
generados en este ejemplo constituyen la
gran mayoría de líneas de código y en sí
el programa para presentar en pantalla
estos caracteres es por lo contrario muy
corto.
Observamos el resultado deseado
mostrado en pantalla de acuerdo a la
programación.
Figura 2.13 GLCD – Prueba de
Funcionamiento (Proto - Board).
Resultado real en nuestra
tarjeta electrónica
Figura 2.14 GLCD – Prueba de
Funcionamiento (Tarjeta de Desarrollo).
53
* SEGUNDO PROGRAMA DE PRUEBA:
Prueba de Funcionamiento del LCD–I2C.
void main(){
ADCON1 = 0xFF;
TRISB = 0;
PORTB = 0;
repita:
Soft_I2C_Config(&PORTb, 0, 1);
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
Soft_I2C_Write(0);
Soft_I2C_Write(19);
Soft_I2C_Write(12);
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(1);
Soft_I2C_Write('D');
Soft_I2C_Write('A');
Soft_I2C_Write('R');
Soft_I2C_Write('W');
Soft_I2C_Write('I');
Soft_I2C_Write('N');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(21);
Soft_I2C_Write('G');
54
Soft_I2C_Write('E');
Soft_I2C_Write('O');
Soft_I2C_Write('V');
Soft_I2C_Write('A');
Soft_I2C_Write('N');
Soft_I2C_Write('N');
Soft_I2C_Write('Y');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(41);
Soft_I2C_Write('M');
Soft_I2C_Write('O');
Soft_I2C_Write('L');
Soft_I2C_Write('I');
Soft_I2C_Write('N');
Soft_I2C_Write('A');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(61);
Soft_I2C_Write('A');
Soft_I2C_Write('L');
Soft_I2C_Write('V');
Soft_I2C_Write('A');
Soft_I2C_Write('R');
Soft_I2C_Write('E');
Soft_I2C_Write('Z');
Soft_I2C_Stop();
55
delay_ms(1000);
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
Soft_I2C_Write(0);
Soft_I2C_Write(19);
Soft_I2C_Write(12);
Soft_I2C_Write(0xc6);
Soft_I2C_Write(0);
Soft_I2C_Write(12);
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(6);
Soft_I2C_Write('E');
Soft_I2C_Write('S');
Soft_I2C_Write('C');
Soft_I2C_Write('U');
Soft_I2C_Write('E');
Soft_I2C_Write('L');
Soft_I2C_Write('A');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(24);
Soft_I2C_Write('P');
Soft_I2C_Write('O');
Soft_I2C_Write('L');
Soft_I2C_Write('I');
Soft_I2C_Write('T');
56
Soft_I2C_Write('E');
Soft_I2C_Write('C');
Soft_I2C_Write('N');
Soft_I2C_Write('I');
Soft_I2C_Write('C');
Soft_I2C_Write('A');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(46);
Soft_I2C_Write('N');
Soft_I2C_Write('A');
Soft_I2C_Write('C');
Soft_I2C_Write('I');
Soft_I2C_Write('O');
Soft_I2C_Write('N');
Soft_I2C_Write('A');
Soft_I2C_Write('L');
Soft_I2C_Stop();
delay_ms(1000);
goto repita;
}
57
Observamos
un
correcto
funcionamiento
de
nuestro
LCD-I2C teniendo en
cuenta que el control del mismo
es
desarrollado
mediante
software:
⇒
Figura 2.15 LCD I2C – Prueba de
Funcionamiento (Proto – Board).
Soft_I2C_Config(&PORTb, 0,
1);
Resultado en nuestra tarjeta.
Figura 2.16 LCD I2C – Prueba de
Funcionamiento (Tarjeta de Desarrollo).
58
* TERCER PROGRAMA DE PRUEBA:
Prueba de Funcionamiento del Touch Screen.
const unsigned int ADC_THRESHOLD = 970; //Máximo valor digital de GLCD
float x_min, y_min, x_max, y_max;
char PressDetect() {
// para detectar una presión del touch
unsigned adc_rd;
char result;
PortA.F2=0;
PortA.F3=0;
adc_rd = ADC_read(1);
result = (adc_rd > ADC_THRESHOLD);
Delay_us(10);
adc_rd = ADC_read(1);
result = result & (adc_rd > ADC_THRESHOLD);
return result;
}
unsigned int x() {
// para encontrar la cordenada x
unsigned int lecturax;
float x;
PortA.F2=1;
PortA.F3=0;
lecturax=adc_read(0);
x=lecturax/8,0;
return x; }
unsigned int y() {
unsigned int lecturay;
float y;
// para encontrar la coordenada y
59
PortA.F2=0;
PortA.F3=1;
lecturay=adc_read(1);
y=lecturay/16,0;
return y;
}
unsigned float x1(){
//sectorización de GLCD
float x1;
x1 = ((x()+1)-(64/x()));
return x1;
}
unsigned float x2(){
//sectorización de GLCD
float x2;
x2 = (((5*x())-64)/4);
return x2;
}
unsigned float y1(){
//sectorización de GLCD
float y1;
y1 = ((y()+1)-(72/y()));
return y1;
}
unsigned float y2(){
//sectorización de GLCD
float y2;
y2 = (((4*y())-33)/3);
return y2;
}
void main(){
ADCON1=0b00001101;
60
PORTA=0;
TRISA=0b0000011;
Glcd_Init(&PortB,2,3,4,5,6,7,&PortD);
Glcd_Fill(0);
delay_us(100);
repita:
Glcd_Rectangle(119,1,127,11,1);
Glcd_Write_Text("B",121,0,1);
while(!PressDetect()){
//Mientras hay pulsación
if ((x()<=64)&&(y()<=32)){
glcd_dot(x1(),y1(),1);
delay_us(750);
goto repita;}
if ((x()<=64)&&(y()>32)){
glcd_dot(x1(),y2(),1);
delay_us(750);
goto repita;}
if ((x()>64)&&(y()<=32)){
x2();
y1();
if((((x2()<=127)&&(y1()<=10))&&((x2()>=119)&&(y1()>=0)))){
glcd_fill(0);
delay_us(750);
goto repita;}
else {
glcd_dot(x2(),y1(),1);
delay_us(750);
goto repita;}
}
61
if ((x()>64)&&(y()>32)){
glcd_dot(x2(),y2(),1);
delay_us(750);
goto repita;}
}
}
Observamos un bosquejo
cualquiera
realizado
con
la
ayuda de un lápiz plástico el
cuál
protege
las
delicadas
capas que conforman el Touch
Screen.
Figura 2.17 Touch Screen – Prueba de
Funcionamiento (Proto – Board).
Resultado en Placa Electrónica.
Figura 2.18 Touch Screen – Prueba de
Funcionamiento (Tarjeta de Desarrollo).
62
2.2.3 IMPLEMENTACIÒN DE UN PROGRAMA EN VISUAL BASIC PARA
INTERACCIÒN PC – TARJETA.
Como anteriormente se mencionó, mediante la ayuda de EASY HID
generamos la aplicación de Interfaz de Usuario PC-TARJETA.
Esta aplicación tiene que ser diseñada de acuerdo a nuestras necesidades
de tal manera que sea realista y fácil de implementar.
A continuación de muestran los pasos realizados para este efecto tanto en
Visual Basic como en MikroC.
* GENERACIÓN DE PROYECTO MEDIANTE EASY HID.
⇒ Figura 2.19 PARÁMETROS DE
IDENTIFICACIÓN.
⇒
Figura2.20
PARÁMETROS
IMPORTANTES
COMPATIBILIDAD
MIKRO C
PARA
CON
63
⇒
Figura
2.21
NOMBRE
DE
PROYECTO USB EN VISUAL BASIC
Y SU LOCALIZACIÓN.
⇒ Figura 2.22 VALORES
PREDETERMINADOS
RECOMENDADOS)
⇒
Figura
2.23
PROYECTO
CREADO Y GUARDADO EN LA
DIRECCIÓN DESEADA.
64
* ARCHIVO CREADO MEDIANTE MIKROC *
⇒
Figura 2.24 COMPATIBILIDAD
CON VISUAL BASIC
Figura 2.25 DIRECCIÓN EN DONDE ES CREADO EL ARCHIVO EN MIKROC
(Cambiar la extensión del archivo y ponerlo en “USB_CONEXIÓN.c”)
65
* DISEÑO DEL PROGRAMA EN VISUAL BASIC *
⇒ Figura 2.26 Diseño de
Botones
y
Textos
constitutivos del programa
de prueba.
⇒
Figura 2.27 Asignación de
variables.
⇒ Figura 2.28 Generación del
archivo FORMESFOT.EXE
66
* GENERACIÓN DEL PROGRAMA EN MIKROC *
⇒ Figura 2.29 Variables del
Proyecto a Realizarse.
**** PROGRAMA EN MIKROC. ****
#include "C:\Users\Darwin Geovanny\Desktop\ESFOT\USB_CONEXION.c"
unsigned char const SERVICIOS_BMP[1024] = {
0, 0, 0,192, 0, 0, 0, 0,192, 0, 0,128, 64, 64, 64, 64,
0, 0,128, 64, 64,128,128, 0, 0, 0, 0, 64,248, 68, 68, 4,
64, 64, 64,128, 0, 0, 0,192, 64, 64, 64, 64,128, 64, 64, 64,
64,128, 0,196, 0, 0,252, 0, 0,196, 0, 0, 0, 0, 64, 64,
64,128, 0, 0,128,128, 64, 0, 0, 0, 0, 0,128, 64, 64, 64,
64,192, 0, 0, 0,128, 64, 0,192, 64, 64, 64, 64,128, 64, 64,
64, 64,128, 0,252, 64, 64, 64,128, 0, 0, 0,128, 64, 64, 64,
128, 0, 0, 0,252, 0, 0,128, 64, 64, 64, 64, 0, 0, 0, 0,
0, 0, 0, 15, 16, 16, 16, 16, 31, 0, 0, 9, 18, 18, 12, 0,
0, 15, 18, 18, 18, 18, 11, 2, 0, 0, 0, 0, 31, 0, 0, 12,
18, 17, 17, 31, 0, 0, 0, 31, 0, 0, 0, 0, 31, 0, 0, 0,
67
0, 31, 0, 31, 0, 0, 31, 0, 0, 31, 0, 0, 0, 12, 18, 17,
17, 31, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 9, 18, 18, 12,
0,129,198, 56, 6, 1, 0, 0, 31, 0, 0, 0, 0, 31, 0, 0,
0, 0, 31, 0, 31, 16, 16, 16, 8, 7, 0, 0, 15, 16, 16, 16,
8, 7, 0, 0, 31, 0, 0, 9, 18, 18, 12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,224,
240,240, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,248,248,240,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,224,160, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32,160,224, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,192,224,112, 48, 56,248,252,252,254,254,252,
249,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,248,252,
252,252,248, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,255, 0, 1, 2, 4,136,208, 96, 64, 64, 64, 64, 64, 64, 96,
208,136, 4, 2, 1, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 31, 31, 0, 0,252,255,255,255,255,199, 1,
3, 7, 6, 14, 12, 28, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,128,192,192,224,240,240,248,248,252,255,255,255,255,
254,252,248,248,240,240,224,192,192,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0,255,255,
255,192,192,192,192,192,192,192,192, 0, 0, 0, 0, 0, 0, 0,
0, 31, 24, 28, 22, 19, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 17, 19, 22, 28, 24, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
68
0, 0, 0, 0, 0, 0,192,248,255,127, 31, 7, 3, 7, 31,255,
254,248,192, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,120,124, 62,
62, 63, 31, 31, 31, 15, 15, 15, 7, 7, 7, 3,255,255,255,255,
3, 3, 7, 7, 7, 15, 15, 15, 31, 31, 31, 63, 62, 62,124,120,
112, 0, 0, 0, 0, 0,128,240,252, 28, 6, 7, 3, 0, 31, 31,
31, 25, 25, 25, 25, 25, 25, 25, 25, 24, 24,248,248,240,128, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 16, 30, 31, 7, 1, 0, 0, 0, 0, 0, 0, 0,
7, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,255,255,127,255,
240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 3, 31, 62,248,240,192,128,128, 0, 0,
0, 0, 0, 0, 0, 0, 0,128,192,224,240,112, 7, 63,255,252,
224, 96, 96,112, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 1, 1, 0, 0, 0, 0,
0, 1, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 3,
6, 6, 6, 6, 7, 7, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char const ESTUDIANDO_bmp[1024] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
69
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,128,192, 64,192,128,128,128, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 8,248,252,252,252,
248,184,240,224,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 64,
32,156,228, 33,153,251, 3, 31,243, 7, 6, 6, 5, 13, 12, 8,
24, 26, 26, 16, 52, 52, 52, 40, 40,104, 80,240, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3,255,128,193,255,255,255,
255,255,127, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,128, 64, 32, 32, 96,192,192,192,192,192,128, 0, 0, 0, 0,
0, 0, 0, 0, 0,128,128,128,128,128,128, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 96, 96, 96,176,136, 68, 38, 33, 24, 16,
2, 7,140,124, 63, 7, 63,240, 3,124,192, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,124,192, 0,
70
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,255,255,255,
255,224,192,192,192,192,192,128,128,128,128,128,192,192,192,192,
248, 1, 0, 0, 0, 0, 99,255,255,255,255,255,255,240,240,248,
252,252,254,254,252,252,254,254,254,255,254,255,229,195,154, 70,
46, 94, 62, 54, 42, 10, 22, 10, 10,222,223,184,184,112,224,192,
192,192,192,192, 64, 64,192, 7,127, 64, 97,254,252,240,240,240,
224,224, 96,224,224,224,192,192,192,192,192,192,192,128,131,158,
240,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 24, 31, 31, 31, 63,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 48, 72,224, 96,244,255,255,255,255,223,207,199,231,243,243,
251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,
254,254,124,124,126, 60, 62, 28, 31, 31, 15, 15, 15, 15, 15, 12,
30, 29, 61, 61, 57,125,125,125,251,243,243,247,251,250,250,242,
180, 22, 28, 13, 13, 13, 3, 2, 3,195,199,197, 77,109,191,135,
3, 3, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124,192,146,207,253,253,127,127,127,127,127,255,255,127, 63, 31,
15, 15, 7, 7, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 7,
7, 6, 12, 24, 16, 48, 32, 41, 49, 43,110,124, 52, 39, 38, 62,
10, 11, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
71
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char const GRUPO_bmp[1024] = {
0, 0, 0, 0, 0, 0, 0,128,128,128,128,128, 0, 0, 0, 0,
0, 0, 0,128,128, 0, 0, 0, 0, 0,128,128,128,128,128, 0,
0, 0,128, 0, 0, 0, 0,128,128, 0, 0, 0, 0,128,128, 0,
0,128, 0, 0, 0,128, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,
0, 0, 0,128,128, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0,
0, 0,128,128,128,128, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,
0, 0,128, 0, 0, 0,128, 0, 0, 0, 0, 0,128, 0, 0, 0,
0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,224, 63, 1, 0, 0,128,193, 63, 12,128,224,
48, 44, 35, 33, 63,240, 0, 0,224, 63, 17, 16, 48,232, 15, 0,
0, 0,255,128,192, 48, 12, 3,255,128,192, 48, 12, 3, 0,224,
63, 1, 0,224, 63, 1, 7, 60,224,192,124, 7, 0, 0, 0, 0,
0,224, 63, 3, 15,248,128, 96, 48, 12, 6,241, 15, 0, 0,248,
134, 1, 0, 0,128,192,127, 4, 0,224, 63, 1, 0, 0, 0, 0,
224, 63, 1, 0,224, 63, 1, 7, 60,224,192,124, 7,128,224, 48,
44, 35, 33, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
72
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,240, 28, 0, 0,128, 96, 24, 12,252,128, 0,
0, 0,252,128, 0, 0,192,112, 24, 4, 0,248, 12, 0, 0,248,
76, 68, 68, 68, 4, 0, 0,248,140,132,132, 68,124, 0, 0, 0,
0, 0, 0, 0,248,140,132,132, 68,124, 0, 0,192, 48, 8, 4,
4, 4, 4,248, 32, 0, 0, 0,240, 28, 0, 0,128, 96, 24, 12,
252,128, 0, 0, 0,120, 68,196,132, 12, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 8, 8, 6, 3, 0, 12, 7, 1, 1, 1, 1, 1, 15, 0,
0, 0, 0, 15, 12, 3, 0, 0, 0, 0, 15, 1, 0, 0, 15, 9,
8, 8, 8, 0, 0, 0, 15, 1, 0, 0, 1, 15, 0, 0, 0, 0,
0, 0, 0, 15, 1, 0, 0, 1, 15, 0, 0, 0, 7, 12, 8, 8,
8, 12, 6, 3, 0, 8, 8, 6, 3, 0, 12, 7, 1, 1, 1, 1,
1, 15, 0, 4, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,128,192,192, 0, 0, 0, 0, 0, 0,192,192, 0, 0,
0, 0, 0,128,192,192, 0, 0, 0, 0,192, 0, 0, 0, 0,192,
64, 0, 0,128, 64, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,192, 96, 0, 0, 0, 0, 0,128, 64,
64, 64,192, 0, 0, 0,128,192, 64, 64,192,128, 0, 0, 0,128,
128,192, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,240, 31, 1, 7,252,192, 48, 24, 6, 3,248, 7, 0,192,
112, 24, 22, 17, 16, 31,248, 0, 0, 0, 1,255, 28, 6, 3, 0,
73
0,124,195,128,128,128,192, 96, 63, 2, 0, 0, 0, 0, 0, 0,
0, 0,128, 96, 48, 12, 3, 0, 0, 0, 0, 0,128,192,224,176,
152,140, 7, 0, 0,126,131,128,128, 64, 56, 15, 0,128,129,193,
252,131,128, 0, 0,126,131,128,128, 64, 56, 15, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
unsigned char Read_buffer[8];
unsigned char Write_buffer[8];
unsigned char Buffer;
// Timer interrupt service routine
void interrupt()
{
HID_InterruptProc();
TMR0L = 100;
INTCON.TMR0IF = 0;
}
void main()
{
// Keep alive
// Re-load TMR0L
// Re-enable TMR0 interrupts
74
ADCON1 = 0xFF;
TRISB = 0;
PORTB = 0;
TRISc = 0;
PORTc = 255;
// Set PORT B to digital I/O
// Set PORT B to outputs
// Clear all outputs
// Set PORT c to outputs
// Clear all outputs
TRISD=0;
// Set interrupt registers to power-on defaults
// Disable all interrupts
INTCON=0;
INTCON2=0xF5;
INTCON3=0xC0;
RCON.IPEN=0;
PIE1=0;
PIE2=0;
PIR1=0;
PIR2=0;
// Configure TIMER 0 for 3.3ms interrupts. Set prescaler to 256
// and load TMR0L to 100 so that the time interval for timer
// interrupts at 48MHz is 256*(256-100)*0.083 = 3.3ms
// The timer is in 8-bit mode by default
T0CON = 0x47;
TMR0L = 100;
INTCON.TMR0IE = 1;
T0CON.TMR0ON = 1;
// Prescaler = 256
// Timer count is 256-156 = 100
// Enable T0IE
// Turn Timer 0 ON
75
INTCON = 0xE0;
// Enable interrupts
// Enable USB port
Hid_Enable(&Read_buffer, &Write_buffer);
Delay_ms(1000);
// Read from the USB port. Number of bytes read is in num
Soft_I2C_Config(&PORTb, 0, 1); // Initialize full master mode
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
// Issue start signal
// Address LCD
Soft_I2C_Write(0);
// Start from word at address 0 (configuration word)
Soft_I2C_Write(12);
// Start from word at address 0 (configuration word)
Soft_I2C_Write(19);
Soft_I2C_Write(2);
Soft_I2C_Write(22);
Soft_I2C_Write('L');
Soft_I2C_Write('A');
Soft_I2C_Write('B');
Soft_I2C_Write('O');
Soft_I2C_Write('R');
Soft_I2C_Write('A');
Soft_I2C_Write('T');
Soft_I2C_Write('O');
Soft_I2C_Write('R');
Soft_I2C_Write('I');
Soft_I2C_Write('O');
Soft_I2C_Write(' ');
76
Soft_I2C_Write(' ');
Soft_I2C_Write(' ');
Soft_I2C_Write('D');
Soft_I2C_Write('E');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(41);
Soft_I2C_Write('M');
Soft_I2C_Write('I');
Soft_I2C_Write('C');
Soft_I2C_Write('R');
Soft_I2C_Write('O');
Soft_I2C_Write('P');
Soft_I2C_Write('R');
Soft_I2C_Write('O');
Soft_I2C_Write('C');
Soft_I2C_Write('E');
Soft_I2C_Write('S');
Soft_I2C_Write('A');
Soft_I2C_Write('D');
Soft_I2C_Write('O');
Soft_I2C_Write('R');
Soft_I2C_Write('E');
Soft_I2C_Write('S');
Soft_I2C_Stop();
while (1){
77
Buffer=Read_buffer[0];
if (Read_buffer[0] == 'A'){
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
// BACKLIGHT ON
Soft_I2C_Write(0);
Soft_I2C_Write(19);
Soft_I2C_Stop();
Read_buffer[0]=0;}
if (Read_buffer[0] == 'B'){
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
// BACKLIGHT OFF
Soft_I2C_Write(0);
Soft_I2C_Write(20);
Soft_I2C_Stop();
Read_buffer[0]=0;}
if (Read_buffer[0] == 'C'){
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
// MOSTRAR CURSOR
Soft_I2C_Write(0);
Soft_I2C_Write(5);
Soft_I2C_Stop();
Read_buffer[0]=0;}
if (Read_buffer[0] == 'D'){
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
// OCULTAR CURSOR
78
Soft_I2C_Write(0);
Soft_I2C_Write(4);
Soft_I2C_Stop();
Read_buffer[0]=0;}
if (Read_buffer[0] == 'E'){
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
// BORRAR LCD-I2C
Soft_I2C_Write(0);
Soft_I2C_Write(12);
Soft_I2C_Stop();
Read_buffer[0]=0;}
if (Read_buffer[0] == 'F'){
Soft_I2C_Start();
Soft_I2C_Write(0xc6);
Soft_I2C_Write(0);
Soft_I2C_Write(12);
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(6);
Soft_I2C_Write('E');
Soft_I2C_Write('S');
Soft_I2C_Write('C');
Soft_I2C_Write('U');
Soft_I2C_Write('E');
Soft_I2C_Write('L');
Soft_I2C_Write('A');
// MOSTRA TEXTO EN PANTALLA
79
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(24);
Soft_I2C_Write('P');
Soft_I2C_Write('O');
Soft_I2C_Write('L');
Soft_I2C_Write('I');
Soft_I2C_Write('T');
Soft_I2C_Write('E');
Soft_I2C_Write('C');
Soft_I2C_Write('N');
Soft_I2C_Write('I');
Soft_I2C_Write('C');
Soft_I2C_Write('A');
Soft_I2C_Write(0);
Soft_I2C_Write(2);
Soft_I2C_Write(46);
Soft_I2C_Write('N');
Soft_I2C_Write('A');
Soft_I2C_Write('C');
Soft_I2C_Write('I');
Soft_I2C_Write('O');
Soft_I2C_Write('N');
Soft_I2C_Write('A');
Soft_I2C_Write('L');
Soft_I2C_Stop();
Read_buffer[0]=0;}
if (Read_buffer[0] == 'G'){
80
Glcd_Init(&PORTB,2,3,4,5,6,7,&PORTD);
Glcd_Fill(0);
Glcd_Image(ESTUDIANDO_BMP);
delay_ms(10);
Read_buffer[0]=0;}
if (Read_buffer[0] == 'H'){
Glcd_Init(&PORTB,2,3,4,5,6,7,&PORTD);
Glcd_Fill(0);
Glcd_Image(SERVICIOS_BMP);
delay_ms(10);
Read_buffer[0]=0;}
if (Read_buffer[0] == 'I'){
Glcd_Init(&PORTB,2,3,4,5,6,7,&PORTD);
Glcd_Fill(0);
Glcd_Image(GRUPO_BMP);
delay_ms(10);
Read_buffer[0]=0;}
if (Read_buffer[0] == 'J'){
Glcd_Init(&PORTB,2,3,4,5,6,7,&PORTD);
Glcd_Fill(0);
delay_ms(10);
Read_buffer[0]=0;}
}
Hid_Disable();
}
81
**** PROGRAMA DE VISUAL BASIC ****
' vendor and product IDs
Private Const VendorID = 100
Private Const ProductID = 1
' read and write buffers
Private Const BufferInSize = 8
Private Const BufferOutSize = 8
Dim BufferIn(0 To BufferInSize) As Byte
Dim BufferOut(0 To BufferOutSize) As Byte
Private Sub Command1_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("A")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "BACKLIGHT ON..."
End Sub
Private Sub Command10_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("J")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "GLCD BORRADO!!!"
End Sub
Private Sub Command11_Click()
Form_Unload (0)
End
82
End Sub
Private Sub Command2_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("C")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "CURSOR ON..."
End Sub
Private Sub Command3_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("E")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "LCD - I2C BORRADO !!!!"
End Sub
Private Sub Command4_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("B")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "BACKLIGHT OFF..."
End Sub
Private Sub Command5_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("D")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "CURSOR OFF..."
End Sub
83
Private Sub Command6_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("F")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "TEXTO ENVIADO..."
End Sub
Private Sub Command7_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("G")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "ESTUDIANDO EN PANTALLA..."
End Sub
Private Sub Command8_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("H")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "SERVICIOS EN PANTALLA..."
End Sub
Private Sub Command9_Click()
BufferOut(0) = 0
BufferOut(1) = Asc("I")
hidWriteEx VendorID, ProductID, BufferOut(0)
Label4 = "GRUPO EN PANTALLA..."
End Sub
84
' ****************************************************************
' when the form loads, connect to the HID controller - pass
' the form window handle so that you can receive notification
' events...
'*****************************************************************
Private Sub Form_Load()
' do not remove!
ConnectToHID (Me.hwnd)
End Sub
'*****************************************************************
' disconnect from the HID controller...
'*****************************************************************
Private Sub Form_Unload(Cancel As Integer)
DisconnectFromHID
End Sub
'*****************************************************************
' a HID device has been plugged in...
'*****************************************************************
Public Sub OnPlugged(ByVal pHandle As Long)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) =
ProductID Then
' ** YOUR CODE HERE **
Label4 = "TARJETA CONECTADA !!!!"
End If
End Sub
'*****************************************************************
85
' a HID device has been unplugged...
'*****************************************************************
Public Sub OnUnplugged(ByVal pHandle As Long)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) =
ProductID Then
' ** YOUR CODE HERE **
Label4 = " TARJETA DESCONECTADA !!!"
End If
End Sub
'*****************************************************************
' controller changed notification - called
' after ALL HID devices are plugged or unplugged
'*****************************************************************
Public Sub OnChanged()
Dim DeviceHandle As Long
' get the handle of the device we are interested in, then set
' its read notify flag to true - this ensures you get a read
' notification message when there is some data to read...
DeviceHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify DeviceHandle, True
End Sub
'*****************************************************************
' on read event...
'*****************************************************************
Public Sub OnRead(ByVal pHandle As Long)
86
' read the data (don't forget, pass the whole array)...
If hidRead(pHandle, BufferIn(0)) Then
' ** YOUR CODE HERE **
' first byte is the report ID, e.g. BufferIn(0)
' the other bytes are the data from the microcontrolller...
End If
End Sub
'*****************************************************************
' this is how you write some data...
'*****************************************************************
Public Sub WriteSomeData()
BufferOut(0) = 0 ' first by is always the report ID
BufferOut(1) = 10 ' first data item, etc.
' write the data (don't forget, pass the whole array)...
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub
87
*** RECONOCIMIENTO DEL DISPOSITIVO COMO ENTRADA USB EN
ELCOMPUTADOR ***
Figura 2.30 Reconocimiento de la Tarjeta de Desarrollo en el Computador.
88
* UTILIZACIÓN DEL ARCHIVO FORMESFOT.EXE PARA CONTROL DE
TARJETA *
Figura 2.31 Conexión PC – TARJETA DE DESARROLLO mediante archivo
FORMESFOT.exe
*** RESULTADO EN MEDIO EXTERNO
***
Figura 2.32 Conexión PC – Proto - Board.
89
Se distingue la aplicación realizada desde el computador para el LCD-I2C
(ESCUELA POLITECNICA NACIONAL)
y para el GLCD (DARWIN MOLINA,
JAVIER ROJAS MAYO 2010).
Figura 2.33 Conexión PCTARJETA DE
DESARROLLO.
2.2.4 CORRECCIÒN DE ERRORES.
Los siguientes errores que se obtuvieron al diseñar nuestra Tarjeta de
Desarrollo fueron los siguientes:
•
Mediante pruebas realizadas en Proto – Board, la corriente entregada por
el puerto USB del computador (∼ 500mA) no eran suficientes para
alimentar los dispositivos pertenecientes a la Tarjeta de Desarrollo, por lo
que recurrimos a implementar una fuente de alimentación externa la cual
está diseñada para entregar una corriente máxima de 1A
90
•
Una vez trasladados los elementos hasta la primera placa de prueba, nos
dimos cuenta que algunos elementos tenían sueldas frías lo que
provocaba fallas de voltaje que impedían el correcto funcionamiento del
Microprocesador, GLCD, LCD I2C.
•
Al momento de diseñar la placa, tuvimos problemas en el tamaño de las
pistas ya que resultaron ser muy finas, que al momento de soldar con
cautín de 40w, algunas pistas se dañaron y no soportaron el exceso de
calor, lo que condujo a que en el diseño final de la Tarjeta de Desarrollo se
incremente considerablemente el grosor de las pistas para evitar los
mismos errores que tuvimos en la placa de prueba.
•
La manipulación incorrecta y excesiva del Touch Screen en las pruebas
iníciales condujo a la rotura irreversible del FLEX que es la parte
fundamental de conexión entre el Touch Screen y el Microcontrolador, lo
que obligó a comprar un nuevo dispositivo.
•
Debido a la utilización de una fuente de alimentación externa, nos dimos
cuenta que al momento de conectar la Tarjeta de Desarrollo hacia el
computador, era necesario unir la Tierra del computador con la Tierra de la
fuente externa y deshabilitar el voltaje proveniente del computador, debido
a que no reconocía el computador a la Tarjeta como un Dispositivo de
Interfaz Humana (HID).
•
En el primer diseño no se tomó en cuenta el tamaño del porta – fusible
que se puede encontrar en nuestro medio, lo que llevó a modificar el
diseño final considerando el tamaño más estético y existente en el
mercado.
CAPÌTULO
3
92
3.1
CONCLUSIONES Y RECOMENDACIONES
El diseño y construcción de nuestra “Tarjeta de Desarrolló” para el
laboratorio de microprocesadores genera las siguientes conclusiones obtenidas
durante el proceso de elaboración:
El objetivo de nuestra Tarjeta era lograr interactuar entre el hardware y
software lo que se obtuvo satisfactoriamente.
Se desarrolló una tarjeta con la facilidad para que el estudiante pueda
elaborar nuevos programas utilizando la tecnología que ofrece un touch
screen, además de lograr utilizar la comunicación I2C a través de un LCD
con dicha tecnología.
La facilidad que tiene la Tarjeta de programar y borrar los Pics que se
utilicen a través de un puerto USB es una gran ventaja de nuestro sistema
ya que se puede conectar a cualquier computadora que tenga un sistema
operativo XP o Vista, no se ha probado la tarjeta con otros sistemas
operativos como Windows 7 o Linux.
Nuestra Tarjeta consta de un sistema de protección en caso de un corto
circuito lo que permite protegerla de cualquier sobre carga que se pueda
producir.
Con la finalidad de facilitar al estudiante en el desarrollo de nuevos
programas para interactuar con una PC también la Tarjeta puede
conectarse directamente a un computador ya que la reconoce como un
Dispositivo de Interfaz Humana (Human Interface Device), esto nos permite
utilizar el programa Visual Basic dando una potencialidad al estudiante
dentro de la programación orientada a objetos.
93
Además la construcción de nuestra Tarjeta se la realizó por etapas lo que
permite utilizarla cuando se requiera manejar el touch screen con el GLCD
o solo el LCD I2C o a su vez los dos al mismo tiempo, tomando en cuenta
que esto nos permite ahorrar energía dentro de nuestra tarjeta.
La ventaja que ofrece nuestra Tarjeta es que permite utilizar todos los
pines del Pic siempre y cuando se tome en cuenta la distribución del mismo
con relación al GLCD y el LCD I2C lo que aumenta la potencialidad del
mismo para desarrollar diferentes tipos de programas.
Se recomienda que cuando se utilice la tarjeta para programar el Pic se
utilice el sistema operativo de Windows XP ya que con este sistema se
obtuvo mejores resultados.
Además se recomienda que se utilice la fuente que se diseño para nuestra
tarjeta que aproximadamente consume 800mA.
Al realizar las pruebas con la tarjeta utilizando el programa Visual Basic se
probaron en los sistemas operativos XP y Vista, en ambos casos los
resultados fueron satisfactorios.
Se
recomienda utilizar Windows
XP
para
el funcionamiento del
Programador GTP-USB LITE ya que es diseñado únicamente para el
sistema operativo mencionado.
94
3.2
BIBLIOGRAFÍA.
Folletos
- Pic18F4550 Datasheet Microchip
Páginas Web
-http://www.winmate.com.tw/
(Información Touch Screen)
-http://www.dmccoltd.com/
(Touch Screen)
-http://www.actel.com/documents/
(Documentación Touch Screen)
-http://www.eetimes.com/design/
(Resistividad del Touch Screen)
-http://www.eetimes.com/design/
(Datos Touch Screen)
-http://www.alldatasheet.com/
(Datasheets Componetes)
-http://es.wikipedia.org/wiki/USB
(Tutoriales de USB)
-http://msdn2.microsoft.com/en-us/
default.aspx
(Ayuda Visual Basic)
95
3.3
ANEXOS.
Proceso de elaboración de la placa baquelita a través del método de insolación.
Foto donde se puede observar los negativos de nuestra placa tanto superior como
inferior.
Para la elaboración de los dos lados de nuestra placa los dos negativos deben
fijarse para que las dos caras concuerden correctamente.
96
Momento dentro de la cámara de insoladora donde se absorbe el aire para que el
negativo de nuestra placa se pegue a la baquelita.
Momento donde se fotocopia el negativo de nuestra placa a la baquelita a través
de luz ultravioleta (Cámara insoladora)
97
Foto donde se observa la impresión de nuestro negativo en la placa baquelita
después de terminar el proceso de la insolación y revelado.
Foto donde se ve terminada la placa baquelita después del atacado químico.
98
Tarjeta de Desarrollo Terminada
Oros ejemplos, manuales (PIC 18F4550, LCD I2C, Touch Screen) y videos de
elaboración de la placa electrónica son incluidos dentro del CD ANEXOS.
Descargar