Universidad Catolica de Cuenca

Anuncio
UNIVERSIDAD CATÓLICA DE CUENCA
COMUNIDAD EDUCATIVA AL SERVICIO DEL PUEBLO
UNIDAD ACADÉMICA DE INGENIERÍA DE SISTEMAS,
ELÉCTRICA Y ELECTRÓNICA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
TRABAJO DE INVESTIGACIÓN PREVIO A LA OBTENCIÓN DEL
TÍTULO DE INGENIERO ELÉCTRICO
SOFTWARE PARA UN MICROCONTROLADOR 18F4550 PARA
CONTROLAR UNA MATRIZ DE LEDS.
INVESTIGADOR:
TNLGO. DIEGO ARMANDO FERNANDEZ CAJAMARCA.
DIRECTOR:
MSC. ING. CIRO LARCO BARROS
CUENCA-ECUADOR
Universidad Católica de Cuenca
AGRADECIMIENTO
Al creador de todo, el que hace posible e imposible todas las cosas de la
vida. Nuestro Padre creador, que nunca permitió que me pase nada malo,
que me cuido todo el tiempo, me lleva a caminar de su mano el largo
camino de la vida, aunque algunas veces me aleje de el y pretenda tomar
caminos diferentes. El envió por mí a unos ángeles que me cuidan y me
acompañan en el camino de la vida. Ellos me enseñan que nada está
perdido si uno se lo propone, ser pacientes, comprensibles, humildes y dar
amor ya que todos somos hermanos ante DIOS.
Tlgo. Diego Armando Fernández Cajamarca
Página 2
Universidad Católica de Cuenca
DEDICATORIA
Mi Mami que aunque no estuvo conmigo por un buen tiempo, ella me
enseño desde un principio y me inculco los mejores valores; el respeto, la
humildad, la confianza, la credibilidad, el perdón, el esfuerzo, el trabajo y el
más importante de todos ya que sin el no tenemos nada el amor.
Mis sobrinos los que trajeron alegrías a mi vida que se encontraba un poco
triste por los obstáculos de la vida de ellos aprendí que las cosas malas que
te pasan tienes que olvidarlas para poder seguir creciendo hay que dejarlas
que se marchen en el viento del olvido.
Mis amigos a ellos quienes llegaron a ser un pilar fundamental en mi vida.
Ellos son quienes nos acompañan en momentos fáciles y difíciles con ellos
se fortalece la confianza y aumentan las ganas de vivir de seguir triunfando
y se fortalece la boca y los pulmones porque son momentos de mucha risa
de mucha alegría solo les puedo decir gracias que Dios les pague.
Tlgo. Diego Armando Fernández Cajamarca
Página 3
Universidad Católica de Cuenca
INDICE GENERAL
CAPITULO 1.
FUNCIONAMIENTO
1.1 Funcionamiento de las matrices…………………….pág.
1.2 Funcionamiento de un reloj de
tiempo real modelo (DS 1307)……………………………pág.
1.3 Funcionamiento de un sensor de
temperatura modelo (LM 35)………………………………..pág.
1.4 Diagrama de conexión de un microcontrolador
18F4550 con las matrices, el reloj de tiempo real DS 1307
y el sensor de temperatura LM35…………………………………pág.
CAPITULO 2.
PROGRAMACION EN PROTON
2.1 Desarrollo de un control básico para el
multiplexado de las matrices…………………………………………pág.
2.2 Control de la velocidad de la visualización
de los caracteres…………………………………………………pág.
2.3 Generación de caracteres especiales y letras…………pág.….
2.4 Generación de efectos para los caracteres o letras………pág.
Tlgo. Diego Armando Fernández Cajamarca
Página 4
Universidad Católica de Cuenca
2.5 Generación de efectos prediseñados……………………pág.…
CAPITULO 3.
ENLACE, SIMULACION
3.1 Adquisición de datos de un DS1307 y
su visualización…………………………………………………pág.…
3.2 Adquisición de datos de un LM 35 y su visualización………pág..
Tlgo. Diego Armando Fernández Cajamarca
Página 5
Universidad Católica de Cuenca
INTRODUCCION:
Con este proyecto lo que se busca es el desarrollar la
programación necesaria para controlar un letrero elaborado con
10 matrices de leds.
Determinar los tiempos necesarios para aprovechar al máximo
toda su iluminación y evitar tener puntos oscuros debido al
exceso de carga cuando deban encenderse todas las matrices
al mismo tiempo o a la escases de tiempo de encendido.
Desarrollamos el enlace con un sensor de temperatura y con un
reloj de tiempo real obteniendo con esto mejorar el producto
que se tiene en el mercado, brindando funcionabilidad
optimizando un letrero de leds.
La programación necesaria para el microcontrolador 18F4550
se la realiza en Protón.
Tlgo. Diego Armando Fernández Cajamarca
Página 6
Universidad Católica de Cuenca
CONTENIDOS
Capitulo1.
1.1
funcionamiento de una matriz.
El funcionamiento de las matrices dependerá de la conexión
que se realice, podemos formar matrices sin importar el tamaño
que se desee. En el mercado podemos encontrar matrices que
ya son comunes, están formadas por 7 filas y 5 columnas de
leds (7x5), en esta matriz utilizamos 35 leds en total para poder
armar esta matriz, o también otra matriz muy común es la de 8
filas y 8 columnas (8x8) para poder armar esta matriz
necesitaremos 64 leds, a partir de estas matrices podemos
obtener matrices de mayor tamaño, ensamblamos varias
matrices hasta obtener el objetivo deseado muy posiblemente
una pantalla en la cual su definición dependerá de la cantidad
de leds que se utilice, los tamaños de los mismos dando como
resultado una pantalla o un cartel pasamensajes con una
resolución alta o baja.
Tlgo. Diego Armando Fernández Cajamarca
Página 7
Universidad Católica de Cuenca
Figura (1.1)
Para elaborar una matriz de leds como se muestra en la figura
(1.1) tenemos que conectar en paralelo todos los ánodos que
conforman una fila eso lo realizaremos para cada fila
respectivamente, el mismo proceso lo realizaremos para los
cátodos que son los que formaran las columnas obteniendo con
estos una matriz a las que se les denomina de ánodo o cátodo
común. Ánodo común son las que en las filas tiene el cátodo
conectado y las de ánodo común son cuando se encuentra el
ánodo en las filas, el diseño que tenemos en la figura (1.1) esa
matriz es de ánodo común.
Tlgo. Diego Armando Fernández Cajamarca
Página 8
Universidad Católica de Cuenca
los leds utilizados en este diseño son monocolor, pudiendo ser
utilizados bicolor (dos colores) y los RGB este ultimo nos
permitirá
obtener
todos
los
colores,
claro
está
que
necesitaremos adjuntar el debido controlador para poder
manejar estos leds que son de mas complejidad. En este led
que es igual en apariencia a los anteriores leds mencionados a
diferencia que en este contamos con 4 patitas para su
respectiva conexión, en este encapsulado contamos con tres
leds de menor tamaño los que se encuentran en el interior del
encapsulado siendo cada uno de estos un color primario, estos
son el rojo (Red), el verde (Green) y el azul (Blue).
El encapsulado nos permite visualizar un solo color ya fuera del
mismo, debido a que es posible la mezcla de colores tenemos
una gran gama de colores con los cuales podemos trabajar.
Tlgo. Diego Armando Fernández Cajamarca
Página 9
Universidad Católica de Cuenca
Figura (1.2)
El encendido de la matriz se lo hace multiplexando varios
puntos estos son encendidos como se ve en el ejemplo de la
figura (1.2). Tomando la primera matriz para la explicación,
dentro de un intervalo de tiempo se deberán encender y apagar
cada columna de la matriz con su respectiva fila teniendo
cargado su respectivo dato el que fuese. El tiempo de
encendido y apagado de cada columna deberá ser menor al
que puede percibir el ojo humano y así poder dar la similitud de
una imagen completa y se puede dar hasta los efectos de una
imagen en movimiento el proceso es similar al proceso que se
utiliza en las películas que son formadas por varias imágenes
Tlgo. Diego Armando Fernández Cajamarca
Página 10
Universidad Católica de Cuenca
fijas las mismas que al ser reproducidas de manera continua y
a determinada velocidad dan un efecto de movimiento como se
muestra en la figura (1.3). Debido a la lentitud de nuestra vista
para capturar las imágenes. Dependerá de la velocidad a la que
se realice este efecto el que determinara si se consigue
engañar a nuestra vista o se pierde en el intento pudiendo
nuestra vista captar un parpadeo o un vacio entre el proceso de
cambio este es el indicador que necesitamos más velocidad.
Figura (1.3)
A partir de una matriz se procede a la unión con otras matrices
formando una pantalla led o los conocidos pasa mensajes, los
cuales están en pleno auge en nuestro medio pudiendo ser
estos de forma rectangular, forma cuadrada, depende de la
necesidad.
Tlgo. Diego Armando Fernández Cajamarca
Página 11
Universidad Católica de Cuenca
Figura (1.4)
El ensamble de las matrices como se muestra en la figura
(1.4) vemos que formaran un conocido pasamensajes con 16
matrices pero por diseño se muestra las tres primeras y las tres
últimas pero se ve como es la conexión, las filas son comunes
para todas las matrices respectivamente y las columnas libres
para poder recibir los datos, estos serán enviados de manera
serial, así optimizamos las matriz y para lograr esto utilizamos
el CI (circuito integrado) 74LS164 o el 74HC595, teniendo los
dos similares características en la el diseño de la figura (1.4)
vemos que utilizamos el 74LS164 nosotros trabajaremos con el
CI 74HC595.
Tlgo. Diego Armando Fernández Cajamarca
Página 12
Universidad Católica de Cuenca
1.2
funcionamiento del CI 74HC595.
Figura(1.5)
Este circuito integrado es un conversor serial-paralelo recibe en
su entrada un dato serial y lo lleva a sus salidas en donde lo
leemos de forma paralela en paquetes de 8 bits ya que cuenta
con 8 pines de salida como se muestra en la figura (1.6).
Tienen un registro de desplazamiento secuencial es decir que
los valores de sus salidas dependen de sus entradas en el
interior de este circuito integrado encontramos flip flops
conectados en cascada como se ve en la figura (1.6).
Vemos que desde el pin 1 hasta el 7 y el 15 son salidas. El pin
8 y el 16 son las entradas de alimentación GND y 5VCC
respectivamente, el pin 9 (serial data output) lo utilizamos
cuando conectamos en cascada los 74HC595 para poder
seguir desplazando los datos hasta el otro circuito integrado.
En el pin 10 ( reset ) encontramos el reset que se encuentra en
todos los circuitos este habilita si tiene un uno lógico en su
Tlgo. Diego Armando Fernández Cajamarca
Página 13
Universidad Católica de Cuenca
entrada o deshabilita, borra todo registro del 74HC595 si tiene
un cero lógico.
En el pin 11 (shift clock) se realiza el desplazamiento al darle
una señal de reloj en cada flanco de bajada se recorre un
espacio hasta que el dato se ubique en su respectiva salida. El
pin 12 (latch clock) se encarga de cargar en la salida el dato
que se encuentra en el primer registro, el pin 13 (output enable)
habilita la salida es por eso que debe estar siempre conectado
a GND para tener los datos en la salida caso contrario el dato
que obtendremos en las salidas va a ser solo ceros lógicos, por
ultimo muy importante es el pin 14 (serial data input A) es la
entrada de los datos de manera serial.
Este circuito integrado lo que hace es que nos simplifica mas el
funcionamiento de las matrices debido a que si quisiéramos
hacerla trabajar directamente de forma paralela las columnas,
necesitaríamos demasiados recursos y el circuito crecería de
tal manera que no seria aceptable.
El funcionamiento es se envía el dato a la entrada y se le da
una señal de clock, al darle un pulso el primer bit de la cadena
de datos se ubica en la primera salida ,damos otro pulso y el
segundo dato se ubica ahora en la primera entrada y el dato
anterior se ha corrido hasta la segunda salida y asi
respectivamente hasta haber ingresado los 8 bits después de
esto procedemos dar una señal de clock al habilitador damos
un pulso y el dato que ya se cargo ahora lo hemos desplazado
Tlgo. Diego Armando Fernández Cajamarca
Página 14
Universidad Católica de Cuenca
hasta las salidas respectivas y tenemos el dato ahora de forma
paralela.
Figura (1.6)
Tlgo. Diego Armando Fernández Cajamarca
Página 15
Universidad Católica de Cuenca
1.3
Funcionamiento de un reloj de tiempo real modelo
(DS 1307).
Figura (1.7)
El RTC (real time clock) es un CI con un encapsulado tipo
araña
cuenta
con
8
pines.
Este
CI
trabaja
con
los
microprocesadores de la mano, dándole al mismo el sentido del
tiempo ya que el microprocesador no tiene la menor idea de en
que dia y hora se encuentra, y solo se limita a desarrollar sus
procesos, con este CI el desempeño del microcontrolador crece
considerablemente le facilita el cumplimiento de las tareas
encomendadas. El RTC es un circuito integrado muy preciso
ganando con eso la confianza de todos los profesionales y
aficionados a la electrónica.
Tlgo. Diego Armando Fernández Cajamarca
Página 16
Universidad Católica de Cuenca
Figura (1.8)
Empezando por los pines 1 y 2 vemos en la figura (1.8) que se
trata de los pines para la conexión del cristal de cuarzo que le
dará la frecuencia propia de oscilación del DS 1307, se ha
calculado que la frecuencia a la que debería oscilar el circuito
es de 32.768 KHz. Un arcano designio que tiene que ver con
2 exp 15 = 32.768. por esta razón la frecuencia es divisible de
forma exacta binariamente hablando para generar 1000 es
decir nuestro segundo exacto.
Tenemos los pines 3,4 y 8 los que son nuestras entradas de
alimentación para dejar que nuestro circuito no muera. Por un
lado en los pines 4 y 8 tenemos la alimentación normal del
circuito tenemos GND y 5 VCC respectivamente pero además
Tlgo. Diego Armando Fernández Cajamarca
Página 17
Universidad Católica de Cuenca
contamos con el pin 3, aquí se conectara una batería de litio de
3 voltios como se muestra en la figura (1.9) la cual brindara
respaldo permitiendo al circuito funcionar normalmente a pesar
de haber perdido la alimentación principal el respaldo de la
batería es solo para el RTC el resto del circuito al que se
encuentre conectado se apagara.
Esta batería sirve también para mantener viva la NVRAM
adicional que tenemos.
El DS 1307 se encarga de hacer la conmutación cuando falla la
alimentación primaria por lo que no debemos de preocuparnos
de que se vaya a perder los datos a no ser que la batería
también haya llegado a su fin en ese caso se deberá
reemplazar la misma.
B1
3V
U11
2
X2
X1
VBAT
SOUT
CRYSTAL
SDA
1
X1
SCL
3
7
R42
D1
220
LED-BLUE
SDA
SCL
5
6
DS1307
R43R62
4.7k 4.7k
Figura (1.9)
En los pines 5 y 6 que son los que nos interesan más porque
son los encargados de enviar y recibir los datos, el pin 5 es el
Tlgo. Diego Armando Fernández Cajamarca
Página 18
Universidad Católica de Cuenca
SDA a través de este pin se envían los datos y el pin 6 es el
SCL este da la señal necesaria para que puedan ser
transmitidos
los
datos
estos
pines
son
conectados
al
microcontrolador. Son pines de colector abierto por lo que es
necesario colocarle una resistencia pull-up de unos 10Kohmios
a VCC. En varios modelos de microcontroladores cuentan con
pines propios para realizar este enlace solo se los activa
ingresando a la configuración del microcontrolador que nos
brinde esta opción, en los que no cuentan con esta opción que
son muy pocos se lo realiza mediante software al momento de
programar el microcontrolador se realiza una subrutina que se
encargue de grabar y leer el RTC.
Por último nos queda el pin 7 el cual es un pin de salida si se
encuentra debidamente habilitado, nos ofrece una onda
cuadrada con determinadas frecuencias
los
valores se
muestran en la figura (1.10)
Figura (1.10)
Tlgo. Diego Armando Fernández Cajamarca
Página 19
Universidad Católica de Cuenca
1.4
Funcionamiento de un sensor de temperatura modelo
(LM 35).
Figura (1.11)
El LM35 es un sensor de temperatura con una precisión de un
grado centígrado. El rango de temperatura admisible para este
sensor se encuentra desde -55 °C hasta + 150 °C, la salida es
muy lineal y cada grado centígrado equivale a 10mV en la
salida. El dato que se obtiene es un valor muy bajo por lo que
Tlgo. Diego Armando Fernández Cajamarca
Página 20
Universidad Católica de Cuenca
es necesario un circuito amplificador para llevarlo a un valor
manejable.
Su tensión de salida es proporcional a la temperatura en la
escala Celsios. Su rango de alimentación está comprendido
desde los 4 hasta los 30 voltios.
Tiene baja impedancia de salida, su salida es lineal y su
calibración es precisa por todo esto es posible su fácil
instalación.
Su corriente de alimentación es de tan solo 60 uA, debido a
esto se produce un efecto de autocalentamiento el cual es muy
reducido menos de 0,1°C esto en un ambiente de sin
ventilación de aire estacionario.
Este sensor cuenta con diferentes tipos de encapsulados, se
muestra en la figura (1.11) los tipos de encapsulados en los que
los podemos encontrar, el más común que encontramos en las
tiendas de venta de elementos electrónicos es el encapsulado
tipo TO-92, este es el más común entre los transistores de baja
potencia.
El LM 35 permite una muy buena precisión, hasta de fracción
de grado. Pero para ello es necesario un correcto tratamiento
de la señal ya que como la señal es tan baja cualquier ruido o
interferencia pudiese
hacernos tomar una mala lectura, y
tendríamos un dato erróneo el mismo que dará como resultado
en primer lugar la perdida de la confiabilidad del sensor, y la
falla de el proceso para el que lo adquirimos, para evitar estos
contratiempos se recomienda que la lectura del sensor sea
Tlgo. Diego Armando Fernández Cajamarca
Página 21
Universidad Católica de Cuenca
mediante un microcontrolador, en la figura (1.12) se muestra la
conexión del sensor con un circuito que amplifica el dato
obtenido de manera proporcional obteniendo como resultado un
dato más manejable a este dato se lo llevara a una entrada
analógica del microcontrolador. Tenemos el dato en el
microcontrolador ahora podemos dar paso a realizar acciones
que den solución a un problema o necesidad. Lo mejor de este
sensor es su bajo costo y gran precisión por eso su gran
temp
acogida.
TERMOMETRO
8
5
4
C1
3
LM35
1
+88.8
2
Volts
20k
4
6
2
RV1
3
7
20.0
VOUT
U19:A
8
U19:B
U20
1
LM358
22uF
LM358
R68
3.9k
Figura (1.12)
Tlgo. Diego Armando Fernández Cajamarca
Página 22
Universidad Católica de Cuenca
1.5
Diagrama de conexión de un microcontrolador 18F4550 con
las matrices, el reloj de tiempo real DS 1307 y el sensor de
temperatura LM35.
Figura (1.14)
En la figura (1.13) vemos como se encuentran enlazados los
elementos electrónicos que habíamos detallado anteriormente ahora
con este circuito lo que debemos lograr es el funcionamiento correcto
de todos los elementos.
Todos
los
elementos
que
se
encuentran
conectados
al
microcontrolador 18F4550 deberán trabajar de manera coordinada
entre ellos y de eso se va a encargar el microcontrolador el va a ser el
cerebro del circuito.
Tlgo. Diego Armando Fernández Cajamarca
Página 23
Universidad Católica de Cuenca
Dentro
de
las
características
con
las
que
cuenta
este
microcontrolador que son muchas lo más básico y que nos interesa
ahora a nosotros porque no nos interese ahondar demasiado en el
tema porque no lo necesitamos podemos ver en la figura (1.14) que
este microcontrolador cuenta con 40 pines para el circuito que se
muestra en la figura (1.13) estamos utilizando solamente 13 pines con
sus respectivos puertos, quedándonos libres 19 puertos listos para
ser utilizados según la necesidad.
Podemos resaltar que los pines 11 (VDD) y 12(VSS) conjuntamente
con los pines 31 (VSS) y 32 (VDD) son para la alimentación del
microcontrolador son pines comunes basta con alimentar uno de los
dos y el microcontrolador trabajara, tenemos los pines para la
conexión del cristal son el pin 13 (OSC1) y el pin 14 (OSC2) y el pin 1
(MCLR) que no debemos olvidar de conectar con una resistencia a
VCC porque si no lo hacemos el microcontrolador no arrancara se lo
puede eliminar pero eso se lo realiza en la programación ahí se lo
configura y se elimina el master clear.
Tlgo. Diego Armando Fernández Cajamarca
Página 24
Universidad Católica de Cuenca
Tlgo. Diego Armando Fernández Cajamarca
Página 25
Universidad Católica de Cuenca
Capitulo 2.
2.1 Desarrollo de un control básico para el multiplexado de las
matrices.
El multiplexado de las matrices se lo realiza enviando el dato en la
columna y procedemos a encender la fila que corresponda ya sea
comenzando desde la primera o desde la última pero el encendido se
lo realiza en orden y en cada una de estas el dato que se encuentra
en la columna ira variando acorde al carácter que se vaya a
visualizar.
La programación necesaria se la puede realizar con varios lenguajes
de programación que soporte el microcontrolador pudiendo ser desde
lenguaje ensamblador llamado también lenguaje de bajo nivel que es
el lenguaje propio del microcontrolador las ventajas de este es que
nos permite optimizar al máximo el uso del microcontrolador y usar
declaraciones propias del mismo o también utilizar programas que
fueron
desarrollados
para
facilitar
la
programación
llamados
programas de alto nivel como lo son para los microcontroladores
PROTON, MICROCODE, PIC BASIC entre otros. Para nuestro
desarrollo utilizamos Proton, con este programa desarrollaremos toda
la programación necesaria para poder realizar la multiplexacion
programaremos los tiempos necesarios y más adecuados para poder
dar el efecto que se necesita para la visualización de los caracteres.
El tiempo de visualización debe ser repartido entre las 7 filas tomando
en cuenta que la sumatoria de todos los tiempos tienen que ser
menor a un segundo. Si se encuentran sobre el segundo nuestra vista
Tlgo. Diego Armando Fernández Cajamarca
Página 26
Universidad Católica de Cuenca
captara el encendido y apagado que se realiza
y no se habrá
realizado la multiplexacion correcta.
Como vemos en la programación (2.1) que se encuentra a
continuación tenemos el proceso para encender y apagar las filas
coordinadamente en la variable dmatriz0 se encuentra el dato a
visualizarse en la fila 1 lo cargamos en la variable valor se llama a
una subrutina llamada escribo la que se encarga de enviar el dato de
manera serial a través del 74HC595 y los ubica en la columna que
corresponde hacemos el mismo proceso antes descrito pero esta vez
con el dato que se encuentra en la variable dmatriz0_0 y lo mismo
para dmatriz00 al haber hecho esto hemos armado el dato por
completo de la primera fila, ya con el dato en el registro listo para
visualizarse lo encendemos y mientras esta encendido cargamos el
nuevo realizando el proceso anteriormente detallado ya listo el nuevo
dato le damos una pausa encendidas las matrices de 2ms después
de este tiempo apagamos desplazamos el nuevo dato y encendemos
pero ahora con la segunda fila así lo hacemos para el resto de filas
hasta terminar con la séptima ya terminada todas si sumáramos el
tiempo que pausamos la visualización solo transcurrió 14ms los
cuales jamás notaremos entonces hacemos que este proceso sea
repetitivo logrando multiplexar y por ende visualizar el dato deseado.
Tlgo. Diego Armando Fernández Cajamarca
Página 27
Universidad Católica de Cuenca
'****************************************************
visualizacion:
'velocidad = 5
For l1=0 To velocidad
valor = dmatriz0
GoSub escribo
valor = dmatriz0_0
GoSub escribo1
valor = dmatriz00
GoSub escribo2
habilitador = 0
DelayUS 2
habilitador = 1
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 1
' CARGA EL DATO EN LAS MATRICES
'da una señal de
'clock para poder
'habilitar el dato cargado
fila1 = 1
' ENCIENDE LA FILA 1
valor = dmatriz1
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 2
' CARGA EL DATO EN LAS MATRICES
GoSub
valor
GoSub
valor
GoSub
escribo
= dmatriz1_1
escribo1
= dmatriz11
escribo2
DelayMS 2
fila1 = 0
' DEMORA 2 MILISEGUNDOS
' APAGA LA FILA 1
habilitador = 0
DelayUS 2
habilitador = 1
'da una señal de
'clock para poder
'habilitar el dato cargado
fila2 = 1
' ENCIENDE LA FILA 2
valor = dmatriz2
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 3
' CARGA EL DATO EN LAS MATRICES
GoSub escribo
valor = dmatriz2_2
GoSub escribo1
valor = dmatriz22
GoSub escribo2
DelayMS 2
fila2 = 0
' DEMORA 2 MILISEGUNDOS
' APAGA LA FILA 2
habilitador = 0
DelayUS 2
habilitador = 1
'da una señal de
'clock para poder
'habilitar el dato cargado
fila3 = 1
' ENCIENDE LA FILA 3
Tlgo. Diego Armando Fernández Cajamarca
Página 28
Universidad Católica de Cuenca
valor = dmatriz3
GoSub escribo
valor = dmatriz3_3
GoSub escribo1
valor = dmatriz33
GoSub escribo2
DelayMS 2
fila3 = 0
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 4
' CARGA EL DATO EN LAS MATRICES
' DEMORA 2 MILISEGUNDOS
' APAGA LA FILA 3
habilitador = 0
DelayUS 2
habilitador = 1
'da una señal de
'clock para poder
'habilitar el dato cargado
fila4 = 1
' ENCIENDE LA FILA 4
valor = dmatriz4
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 5
' CARGA EL DATO EN LAS MATRICES
GoSub escribo
valor = dmatriz4_4
GoSub escribo1
valor = dmatriz44
GoSub escribo2
DelayMS 2
fila4 = 0
' DEMORA 2 MILISEGUNDOS
' APAGA LA FILA 4
habilitador = 0
DelayUS 2
habilitador = 1
fila5 = 1
' ENCIENDE LA FILA 5
valor = dmatriz5
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 6
' CARGA EL DATO EN LAS MATRICES
GoSub escribo
valor = dmatriz5_5
GoSub escribo1
valor = dmatriz55
GoSub escribo2
DelayMS 2
fila5 = 0
' DEMORA 2 MILISEGUNDOS
' APAGA LA FILA 5
habilitador = 0
DelayUS 2
habilitador = 1
fila6 = 1
' ENCIENDE LA FILA 6
valor = dmatriz6
' GUARDA EN OTRA VARIABLE EL
VALOR DE LA FILA 7
Tlgo. Diego Armando Fernández Cajamarca
Página 29
Universidad Católica de Cuenca
GoSub escribo
valor = dmatriz6_6
GoSub escribo1
valor = dmatriz66
GoSub escribo2
DelayMS 2
' CARGA EL DATO EN LAS MATRICES
fila6 = 0
' APAGA LA FILA 6
habilitador = 0
DelayUS 2
habilitador = 1
fila7 = 1
DelayMS 2
fila7 = 0
' ENCIENDE LA FILA 7
' DEMORA 2 MILISEGUNDOS
' APAGA LA FILA 7
' DEMORA 2 MILISEGUNDOS
Next l1
Return
'******************************************************************
Programación (2.1)
Tlgo. Diego Armando Fernández Cajamarca
Página 30
Universidad Católica de Cuenca
2.2 Control de la velocidad de la visualización de los caracteres.
Para poder controlar la velocidad con que se visualizan los caracteres
debemos primero contar con una velocidad básica en la que estemos
visualizando los caracteres y a partir de ese programa podemos
realizar los cambios necesarios para dar el efecto de mayor o menor
velocidad.
La programación del control de velocidad lo
vemos en la
programación (2.1), esta va de la mano con la multiplexacion. En el
programa podemos ver que cuenta con una variable que dice
velocidad dependiendo del valor que se encuentre el programa
demora la visualización partiendo de la velocidad más rápida a la que
se puede visualizarse los caracteres a esa le vamos haciendo más
lenta si aumentamos el valor de la variable velocidad, debemos tomar
en cuenta que si aumentamos demasiado la velocidad también va a
ser imposible la visualización y su lectura.
Tlgo. Diego Armando Fernández Cajamarca
Página 31
Universidad Católica de Cuenca
2.3 Generación de caracteres especiales y letras.
Los caracteres especiales y las letras son usadas al momento de
escribir un texto es por eso que un cartel de matriz de leds debe
contar con esta opción, con la capacidad de dar la opción de
visualizar caracteres especiales como lo son el signo de suma,
asterisco, numeral, y muchos más.
Al momento de generar un carácter lo haremos a nuestro gusto. Se
puede diseñar una gama de letras de diferente tipo como lo hay en
diferentes aplicaciones para elaborar textos por ejemplo de tipo arial,
verdana y una gran variedad mas nosotros podemos hacer el modelo
que más nos agrade o el que lo solicite el usuario.
Tanto las letras como los caracteres para poder ser visualizados
deben ser descompuestos en puntos según el modelo de matriz o el
tamaño en el que va a ser visualizado.
Revisando la programación (2.2) vemos toda una lista con variables y
ceros y unos el programa lo que hace es comparar el valor que viene
en una variable y así determina la letra solicitada por ejemplo
tomamos el número $43 que está en hexadecimal el programa
compara con el primero como no es el numero salta al siguiente hasta
encontrar el valor, en este caso se encuentra en tercer lugar el
programa se detiene en ese Case e ingresa a realizar lo que se
encuentra en su interior allí encontramos unos datos y otra variable
los datos son los ceros o unos que necesita el circuito saber para
poder encender cuando se desee visualizar esa letra que en este
Tlgo. Diego Armando Fernández Cajamarca
Página 32
Universidad Católica de Cuenca
caso es la letra C en la figura (2.1) podemos ver la simbolización en
números binarios.
001110
fila 1
100001
fila 2
100000
fila 3
100000
fila 4
100000
fila 5
100001
fila 6
001110
fila 7
Figura (2.1)
La variable Y1 lo que hace es tomar el dato de la fila que corresponda
y lo envía hasta otra variable de mayor capacidad en donde se está
ensamblando parte por parte el dato final como se indico
anteriormente con la variable dmatriz0.
Tlgo. Diego Armando Fernández Cajamarca
Página 33
Universidad Católica de Cuenca
'**********************************
Case $41
'letra "A"
Select Z1
Case 1
Y1=%011100
Case 2,3,5,6,7
Y1=%100010
Case 4
Y1=%111110
End Select
Case $42
'letra "B"
Select Z1
Case 1,4,7
Y1=%111100
Case 2,3,5,6
Y1=%100010
End Select
Case $43
'letra "C"
Select Z1
Case 1,7
Y1=%011100
Case 2,6
Y1=%100010
Case 3,4,5
Y1=%100000
End Select
Case $44
'letra "D"
Select Z1
Case 1,7
Y1=%111100
Case 2,3,4,5,6
Y1=%100010
End Select
Case $45
'letra "E"
Select Z1
Case 1,7
Y1=%111110
Case 2,3,5,6
Y1=%100000
Case 4
Y1=%111000
End Select
Case $46
'letra "F"
Select Z1
Case 1
Y1=%111110
Case 2,3,5,6,7
Y1=%100000
Case 4
Y1=%111000
Tlgo. Diego Armando Fernández Cajamarca
Página 34
Universidad Católica de Cuenca
End Select
Case $47
'letra "G"
Select Z1
Case 1,7
Y1=%011100
Case 2,3
Y1=%100000
Case 4
Y1=%101110
Case 5,6
Y1=%100010
End Select
Case $48
'letra "H"
Select Z1
Case 1,2,3,5,6,7
Y1=%100010
Case 4
Y1=%111110
End Select
Case $49
'letra "I"
Select Z1
Case 1,7
Y1=%111110
Case 2,3,4,5,6
Y1=%001000
End Select
Case $4A
'letra "J"
Select Z1
Case 1
Y1=%111110
Case 2,3,4
Y1=%001000
Case 5,6
Y1=%101000
Case 7
Y1=%010000
End Select
Case $4B
'letra "K"
Select Z1
Case 1,7
Y1=%100010
Case 2,6
Y1=%100100
Case 3,5
Y1=%101000
Case 4
Y1=%110000
End Select
Case $4C
'letra "L"
Select Z1
Case 1,2,3,4,5,6
Y1=%100000
Case 7
Y1=%111110
Tlgo. Diego Armando Fernández Cajamarca
Página 35
Universidad Católica de Cuenca
End Select
Case $4D
'letra "M"
Select Z1
Case 1,4,5,6,7
Y1=%100010
Case 2
Y1=%110110
Case 3
Y1=%101010
End Select
Case $4E
'letra "N"
Select Z1
Case 1,5,6,7
Y1=%100010
Case 2
Y1=%110010
Case 3
Y1=%101010
Case 4
Y1=%100110
End Select
Case $4F
'letra "O"
Select Z1
Case 1,7
Y1=%011100
Case 2,3,4,5,6
Y1=%100010
End Select
Case $50
'letra "P"
Select Z1
Case 1,4
Y1=%111100
Case 2,3
Y1=%100010
Case 5,6,7
Y1=%100000
End Select
Case $51
'letra "Q"
Select Z1
Case 1
Y1=%011100
Case 2,3,4
Y1=%100010
Case 5
Y1=%101010
Case 6
Y1=%100100
Case 7
Y1=%011010
End Select
Case $52
'letra "R"
Select Z1
Case 1,4
Y1=%111100
Tlgo. Diego Armando Fernández Cajamarca
Página 36
Universidad Católica de Cuenca
Case 2,3
Y1=%100010
Case 5
Y1=%101000
Case 6
Y1=%100100
Case 7
Y1=%100010
End Select
Case $53
'letra "S"
Select Z1
Case 1,4,7
Y1=%011100
Case 2,6
Y1=%100010
Case 3
Y1=%100000
Case 5
Y1=%000010
End Select
Case $54
'letra "T"
Select Z1
Case 1
Y1=%111110
Case 2,3,4,5,6,7
Y1=%001000
End Select
Case $55
'letra "U"
Select Z1
Case 1,2,3,4,5,6
Y1=%100010
Case 7
Y1=%011100
End Select
Case $56
'letra "V"
Select Z1
Case 1,2,3,4,5
Y1=%100010
Case 6
Y1=%010100
Case 7
Y1=%001000
End Select
Case $57
'letra "W"
Select Z1
Case 1,2,3
Y1=%100010
Case 4,5,6
Y1=%101010
Case 7
Y1=%010100
End Select
Case $58
'letra "X"
Select Z1
Tlgo. Diego Armando Fernández Cajamarca
Página 37
Universidad Católica de Cuenca
Case 1,2,6,7
Y1=%100010
Case 3,5
Y1=%010100
Case 4
Y1=%001000
End Select
Case $59
'letra "Y"
Select Z1
Case 1
Y1=%100010
Case 2
Y1=%010100
Case 3,4,5,6,7
Y1=%001000
End Select
Case $5A
'letra "Z"
Select Z1
Case 1,7
Y1=%111110
Case 2
Y1=%000010
Case 3
Y1=%000100
Case 4
Y1=%001000
Case 5
Y1=%010000
Case 6
Y1=%100000
End Select
'***********************************************
Programación (2.2)
En la programación (2.2) vemos el abecedario completo en letras
mayúsculas. El mismo proceso que se muestra en la parte superior se
lo realiza para las letras minúsculas en el tipo de letra que se desee
hacerlo. Dependerá de lo que se vaya a visualizar para el
empaquetado de los datos se podrá mantener en 6 bits o subir a 8 o
los que sean necesarios sin salirnos del rango que permite la
declaración de cada tipo de variable si es Byte, Word, String, long.
Tlgo. Diego Armando Fernández Cajamarca
Página 38
Universidad Católica de Cuenca
2.4 Generación de efectos para los caracteres o letras.
Los efectos que se aplican a los caracteres realzan una visualización
que se esté realizando atrayendo la atención de quien ve como las
matrices interactúan entre si cada una haciendo su parte dentro de la
función.
Los efectos parten de la idea que la da el programador o el usuario
haciendo un estilo de desvanecimiento de las letras o que se forme
un texto de manera pixelada se ensambla punto a punto hasta
formarse la palabra a ser visualizada y volver a desaparecer.
Con todo lo antes ya revisado nos resultara fácil entender la idea de
cómo sería el proceso de elaboración de un efecto por ejemplo para
hacer que las letras se vayan armando fila a fila y que se vea como
que van cayendo lo que hacemos es ensamblamos el dato de la
séptima fila y la mandamos a visualizar pausadamente en la primera
fila ya hecho esto lo cambiamos a la segunda así sucesivamente
hasta que llegue a su puesto que es la fila séptima y lo mantenemos
ahí ahora alistamos el dato de la fila sexta y realizamos el mismo
proceso que realizamos para la fila séptima solo que ahora
multiplexamos el dato que se encuentra en la fila séptima y el nuevo
que es el de la fila sexta hasta que el dato de la fila sexta haya
llegado a su sitio designado ya listo con este procedemos a hacer
este proceso para las filas que faltan.
Tlgo. Diego Armando Fernández Cajamarca
Página 39
Universidad Católica de Cuenca
2.5 Generación de efectos prediseñados.
Los caracteres especiales son creados para dar un toque de
personalidad, mostrando gráficos que varias veces identifican a
empresas, compañías, instituciones entre otros a todas aquellas que
hagan uso de este tipo de publicidad con carteles de matrices de leds.
En la programación (2.3) vemos los datos necesarios para poder
visualizar una imagen que se encuentra ya prediseñada la imagen
que hemos elegido para este ejemplo es el escudo de la Universidad
Católica de Cuenca.
El proceso que hemos realizado para poder obtener los datos
necesarios para dibujar el escudo es el mismo que se realizo
anteriormente para visualizar las letras. se a pasado a ceros y unos el
dibujo como se muestra en la programación (2.3) aquí se realizara el
proceso que se explico para las letras solo que en este caso los
valores ya son fijos y ya no se compara para saber que letra es la que
se asignara sino directamente va ensamblando los datos fila por fila y
damos un efecto ascendente o descendente para que se pueda ver
todo el dibujo en este caso el escudo.
'************** datos del dibujo a visualizarse ********************
ESCUDO_UCACUE:
Select bloque
Case 2
Select matriz
Case 1,6
Select Z1
Case 1,2,3,4,5,6,7
Y1=%00000
Tlgo. Diego Armando Fernández Cajamarca
Página 40
Universidad Católica de Cuenca
End Select
Case 2
Select Z1
Case 1
Y1=%10001
Case 2
Y1=%00010
Case 3,5
Y1=%00100
Case 4
Y1=%11000
Case 6
Y1=%11110
Case 7
Y1=%00000
End Select
Case 3
Select Z1
Case 1,4
Y1=%11111
Case 2,3,5
Y1=%00000
Case 6
Y1=%00001
Case 7
Y1=%11110
End Select
Case 4
Select Z1
Case 1,4
Y1=%11111
Case 2,3,5
Y1=%00000
Case 6
Y1=%10000
Case 7
Y1=%01111
End Select
Case 5
Select Z1
Case 1
Y1=%10001
Case 2
Y1=%01000
Case 3,5
Y1=%00100
Case 4
Y1=%00011
Case 6
Y1=%01111
Case 7
Y1=%00000
End Select
End Select
'de la matriz
Tlgo. Diego Armando Fernández Cajamarca
Página 41
Universidad Católica de Cuenca
'****************************segundo bloque ********************
Case 3
Select matriz
Case 1
Select Z1
Case 1,4
Y1=%01000
Case 2,3,7
Y1=%10000
Case 5
Y1=%00100
Case 6
Y1=%01110
End Select
Case 2
Select Z1
Case 1,2
Y1=%10100
Case 3
Y1=%01001
Case 4
Y1=%10011
Case 5
Y1=%00110
Case 6
Y1=%11100
Case 7
Y1=%01000
End Select
Case 3
Select Z1
Case 1
Y1=%10001
Case 2,3,5
Y1=%11111
Case 4
Y1=%00000
Case 6
Y1=%10111
Case 7
Y1=%01000
End Select
Case 4
Select Z1
'4
Case 1
Y1=%10001
Case 2,3,5
Y1=%11111
Case 4
Y1=%00000
Case 6
Y1=%11101
Case 7
Y1=%00010
Tlgo. Diego Armando Fernández Cajamarca
Página 42
Universidad Católica de Cuenca
End Select
Case 5
Select Z1 '5
Case 1,2
Y1=%00101
Case 3
Y1=%10010
Case 4
Y1=%11001
Case 5
Y1=%01100
Case 6
Y1=%00111
Case 7
Y1=%00010
End Select
Case 6
Select Z1 '6
Case 1
Y1=%00010
Case 2,3,7
Y1=%00001
Case 4
Y1=%00010
Case 5
Y1=%00100
Case 6
Y1=%01110
End Select
End Select
'de la matriz
'************************************ tercer bloque *************
Case 4
Select matriz
Case 1
Select Z1 '1
Case 1
Y1=%01000
Case 2,6,7
Y1=%00100
Case 3,4,5
Y1=%10100
End Select
Case 2
Select Z1
'2
Case 1
Y1=%00000
Case 2,3,4
Y1=%10101
Case 5,6
Y1=%10011
Case 7
Y1=%10010
End Select
Tlgo. Diego Armando Fernández Cajamarca
Página 43
Universidad Católica de Cuenca
Case 3
Select Z1 '3
Case 1
Y1=%10000
Case 2
Y1=%11111
Case 3,4,5,6,7
Y1=%10001
End Select
Case 4
Select Z1
'4
Case 1
Y1=%00001
Case 2
Y1=%11111
Case 3,4,5,6,7
Y1=%10001
End Select
Case 5
Select Z1 '5
Case 1
Y1=%10100
Case 2,3
Y1=%10101
Case 4
Y1=%01101
Case 5
Y1=%11101
Case 6,7
Y1=%01001
End Select
Case 6
Select Z1 '6
Case 1
Y1=%00010
Case 2,3,4
Y1=%00101
Case 5,6,7
Y1=%00100
End Select
End Select
' de la matriz
'********************************** cuarto bloque ***************
Case 5
Select matriz
Case 1
Select Z1 '1
Case 1,2,3,4,5,6
Y1=%00000
Case 7
Y1=%10000
End Select
Case 2
Select Z1
'2
Tlgo. Diego Armando Fernández Cajamarca
Página 44
Universidad Católica de Cuenca
Case 1,2,3
Y1=%00001
Case 4
Y1=%11001
Case 5,6
Y1=%00101
Case 7
Y1=%00100
End Select
Case 3
Select Z1 '3
Case 1,4
Y1=%11111
Case 2,3,5,6,7
Y1=%10000
End Select
Case 4
Select Z1
'4
Case 1,4
Y1=%11111
Case 2,3,5,6,7
Y1=%00001
End Select
Case 5
Select Z1 '5
Case 1,2,3
Y1=%10100
Case 4
Y1=%10011
Case 5,6
Y1=%10000
Case 7
Y1=%00000
End Select
Case 6
Select Z1 '6
Case 1,2,3,4,5,6
Y1=%00000
Case 7
Y1=%00001
End Select
End Select
' de la matriz
'************************ quinto bloque ***********************
Case 6
Select matriz
Case 1
Select Z1 '1
Case 1,2,3,7
Y1=%00000
Case 4,6
Y1=%10000
Case 5
Y1=%11000
Tlgo. Diego Armando Fernández Cajamarca
Página 45
Universidad Católica de Cuenca
End Select
Case 2
Select Z1
'2
Case 1
Y1=%00100
Case 2
Y1=%11010
Case 3,7
Y1=%00001
Case 4,5,6
Y1=%00000
End Select
Case 3
Select Z1 '3
Case 1
Y1=%10000
Case 2
Y1=%01111
Case 3
Y1=%00000
Case 4,5,6
Y1=%10000
Case 7
Y1=%11111
End Select
Case 4
Select Z1
'4
Case 1
Y1=%00001
Case 2
Y1=%11110
Case 3
Y1=%00000
Case 4,6
Y1=%00001
Case 5
Y1=%10001
Case 7
Y1=%11111
End Select
Case 5
Select Z1 '5
Case 1
Y1=%00100
Case 2
Y1=%01011
Case 3
Y1=%10000
Case 4,5
Y1=%00000
Case 6
Y1=%00001
Case 7
Y1=%10010
Tlgo. Diego Armando Fernández Cajamarca
Página 46
Universidad Católica de Cuenca
End Select
Case 6
Select Z1 '6
Case 1,2,3,7
Y1=%00000
Case 4,6
Y1=%00001
Case 5
Y1=%00011
End Select
End Select 'de la matriz
'*************************** bloque de ceros ************************
Case 1
Select matriz
Case 1,2,3,4,5,6
Select Z1 '1
Case 1,2,3,4,5,6,7
Y1=%00000
End Select
End Select 'de la matriz
End Select
Return
'**********************************************************************
Programación (2.3)
Tlgo. Diego Armando Fernández Cajamarca
Página 47
Universidad Católica de Cuenca
Capitulo 3.
3.1 Adquisición de datos de un DS1307 y su visualización.
Posterior a la conexión que ya se realizo entre un DS 1307 con el
microcontrolador como se muestra en la figura (1.13) realizaremos la
programación con la misma podremos enviar y recibir datos del RTC
DS 1307.
Revisando la programación (3.1) vemos y empezamos primeramente
enviamos a grabar en la memoria y en la ubicación cero el valor de
cero el mismo que nos servirá para no volver a grabar si es que se
reinicia el microcontrolador como siguiente paso ahora leemos el dato
que se encuentra en la memoria en la ubicación cero lo asignamos a
una variable y si el dato es cero pasamos a grabar el DS 1307. Se
graba los datos en cada espacio de memoria la sentencia que se
encuentra declarada i2cout dpin, cpin se encarga de llevar el dato al
DS 1307 el código binario ( %11010000,0 ) que lo sigue es la
dirección en donde se va a guardar el dato y el numero que vemos al
final es el valor que se va a cargar que puede ser de hora minutos
segundos, meses y otros y al final escribimos en la memoria un uno
que nos servirá para indicar que ya se ha grabado el DS 1307 y no se
vuelva a grabar nuevamente.
EData 0, 0
Actualizado = ERead 0
If Actualizado = 0 Then
GoSub grabarRTC
Tlgo. Diego Armando Fernández Cajamarca
Página 48
Universidad Católica de Cuenca
EndIf
'=========================R
grabarRTC:
T
C ===========================
i2cout dpin,cpin,%11010000,0,[$00]
DelayMS 10
i2cout dpin,cpin,%11010000,1,[$44]
DelayMS 10
i2cout dpin,cpin,%11010000,2,[$12]
DelayMS 10
i2cout dpin,cpin,%11010000,3,[$04]
DelayMS 10
i2cout dpin,cpin,%11010000,4,[$13]
DelayMS 10
i2cout dpin,cpin,%11010000,5,[$05]
DelayMS 10
i2cout dpin,cpin,%11010000,6,[$09]
DelayMS 10
i2cout dpin,cpin,%11010000,7,[$10]
DelayMS 10
'segundos
'minutos
'horas
'dia de la semana
'dia del mes
'mes
'año
'frec 1hz
EWrite 0, [1]
Return
'-------------------------------------------------------------
Programación (3.1)
Para poder leer los datos desde el DS 1307 se realiza un proceso
casi similar al anteriormente explicado, el momento de grabar como
se muestra en la programación (3.2) lo que varía es el i2cin y al final
en donde se encontraba el dato ahora colocamos una variable para
poder guardar el dato obtenido del DS 1307.
'------------------------------------------------------------leer_RTC:
i2cin dpin,cpin,%11010000,0,[SEGUNDOS]
i2cin dpin,cpin,%11010000,1,[MINUTOS] 'y los guarda en sus
i2cin dpin,cpin,%11010000,2,[HORA]
' respectivas variables
I2cin dpin,cpin,%11010000,3,[diaS]
'variables para ser leidos
I2cin dpin,cpin,%11010000,4,[diaF]
I2cin dpin,cpin,%11010000,5,[mes]
I2cin dpin,cpin,%11010000,6,[anio]
Return
Tlgo. Diego Armando Fernández Cajamarca
Página 49
Universidad Católica de Cuenca
Programación (3.2)
Ya con los datos extraídos del RTC, estos son asignados a nuevas
variables para poder ser comparados y como se mostro anteriormente
el dato obtenido lo pasamos a comparar con una base de datos en la
cual se encuentra el dato listo en ceros y unos de forma binaria,
tomamos y ensamblamos con los datos respectivos como se muestra
en la programación (3.3).
'===========SUBRUTINA OBTENER DIGITOS DE HORAS Y MINUTOS==============
CALCULA:
dmatriz00=0
dmatriz11=0
dmatriz22=0
dmatriz33=0
dmatriz44=0
dmatriz55=0
dmatriz66=0
visual=16'9
visual1=29
visual2=1'9
lim = 5
tipoletra=1
For Z1=1 To 7
'***** obtiene el primer digito de la hora *****
hor=HORA >> 4
Y1=hor & %00001111
'se obtiene el 1er digito de la hora
Call comprobador
GoSub decodeabecedario
GoSub corrimiento
'***** obtiene el segundo digito de la hora *****
Y1=HORA & %00001111 'se obtiene el 2do digito de la hora
Call comprobador
GoSub decodeabecedario
GoSub corrimiento
'***** escribira los dos puntos *****
Y1=$3A
'directamente va a buscar el valor de los
GoSub decodeabecedario
'dos puntos (:)
GoSub corrimiento
'***** obtiene el primer digito del minuto *****
Tlgo. Diego Armando Fernández Cajamarca
Página 50
Universidad Católica de Cuenca
minu=MINUTOS >> 4
Y1= minu & %00001111
'se obtiene el 1er digito del min
Call comprobador
GoSub decodeabecedario
GoSub corrimiento
'**** obtiene el segundo digito del minuto ******
Y1=MINUTOS & %00001111 'se obtiene el 2do digito del min
Call comprobador
GoSub decodeabecedario
GoSub solosuma
GoSub cargar1
'***** escribira los dos puntos *****
Y1=$3A
'directamente va a buscar el valor de los
GoSub decodeabecedario
'dos puntos (:)
GoSub corrimiento
'***** obtiene el primer digito del segundo *****
segu=SEGUNDOS >> 4
Y1= segu & %00001111
'se obtiene el 1er digito del seg
Call comprobador
GoSub decodeabecedario
GoSub corrimiento
'**** obtiene el segundo digito del segundo ******
Y1=SEGUNDOS & %00001111 'se obtiene el 2do digito del seg
Call comprobador
GoSub decodeabecedario
GoSub solosuma
GoSub cargar
Next Z1
Return
Programación (3.3)
Tlgo. Diego Armando Fernández Cajamarca
Página 51
Universidad Católica de Cuenca
3.2 Adquisición de datos de un LM 35 y su visualización.
El microcontrolador cuenta con unas entradas analógicas las mismas
que deben ser configuradas para que funcionen como entradas
analógicas o digitales para la lectura del LM 35 configuraremos el
puerto A del microcontrolador como entradas analógicas, porque
como sabemos el LM 35 nos entrega un dato analógico.
Cada vez que deseemos leer los datos del LM 35 lo haremos con la
declaratoria que se muestra en la programación (3.4)
TEMPERA1 = ADIn 0
DelayMS 10
TEMPERA1=TEMPERA1*10
TEMPERA2 = ADIn 0
DelayMS 10
TEMPERA2=TEMPERA2*10
TEMPERA3 = ADIn 0
DelayMS 10
TEMPERA3=TEMPERA3*10
TEMPERA4 = ADIn 0
DelayMS 10
TEMPERA4=TEMPERA4*10
TEMPERA5 = ADIn 0
DelayMS 10
TEMPERA5=TEMPERA5*10
TEMPERA=TEMPERA1+TEMPERA2+TEMPERA3+TEMPERA4+TEMPERA5
TEMPERA= (TEMPERA/50)
Programación (3.4)
El microcontrolador cuenta con códigos propios para realizar
funciones en este caso utilizamos el código ADIn el cual toma el valor
que se encuentre en un pin analógico y lo asigna a una variable. En la
Tlgo. Diego Armando Fernández Cajamarca
Página 52
Universidad Católica de Cuenca
figura (1.13) vemos la conexión que se realizo entre el sensor de
temperatura y el Port A.0 del microcontrolador.
En la programación (3.4) vemos que leemos el dato del puerto 0 lo
asignamos a una variable, este valor obtenido lo multiplicamos por 10
para aumentar su valor, realizamos una pausa de 10 ms y volvemos a
realizar este proceso en este caso lo hemos realizado 5 veces
quedando esto a criterio del programador y el resultado de cada
lectura son sumados entre si hasta obtener un valor final el mismo
que será dividido para 50 para de esa manera obtener un valor
promedio el que será el mas acercado a el valor real.
'*********************************************************************
secutempera:
dat = 0
formarfila = 0
velocidad = 160
visual=9
visual1=29
visual2=12
tipoletra=1
lim = 5
For Z1=1 To 7
'***** escribira la "T" *****
Y1=$54
'directamente va a buscar el valor de
GoSub decodeabecedario
'"T"
GoSub solosuma
GoSub cargar2
'***** dara un espacio *****
Y1=$5F
'directamente da una matriz de espacio
GoSub decodeabecedario
'
GoSub corrimiento
'***** obtiene el primer digito de la temperatura *****
q1=TEMPERA >> 4
Y1=q1 & %00001111 'se obtiene el 1er digito de la temp
Call comprobador
GoSub decodeabecedario
GoSub corrimiento
'***** obtiene el segundo digito de la temperatura *****
Y1=TEMPERA & %0000111 'se obtiene el 2do digito d la temp
Tlgo. Diego Armando Fernández Cajamarca
Página 53
Universidad Católica de Cuenca
Call comprobador
GoSub decodeabecedario
GoSub corrimiento
'***** escribira la "C" *****
Y1=$43
'directamente escribira el la letra "C"
GoSub decodeabecedario
'
GoSub corrimiento
'***** escribira los grados *****
Y1=$FC
'directamente escribe el signo de grados "º"
GoSub decodeabecedario
'
GoSub solosuma
GoSub cargar1
Next Z1
Call visualizacion
Return
'***********************************************************************
Programación (3.5)
En la programación vemos que el dato que se adquirió se lo a
comparado con la base de datos de donde obtenemos el valor
necesario a ser visualizado en este caso de la temperatura se lo
visualizara con un carácter especial el de grado para poder indicar
que se trata de grados centígrados.
Tlgo. Diego Armando Fernández Cajamarca
Página 54
Universidad Católica de Cuenca
CONCLUSIONES
1. Este tipo de proyectos tienen gran acogida en nuestro medio pero
también existe gran escases de quien provea este producto y que
mejor si es realizado en nuestro país obteniendo con esto el poder
adquirir un equipo acorde a nuestras necesidades.
2. Las ganancias por publicidad visual se incrementan al ser un
proyecto que tiene acogida y los empezamos a ver ya colocados
en varios lugares con información de diferentes tipos de carácter
informativo, preventiva y otros tipos.
3. Según la necesidad se recomienda armar las matrices ya que en el
mercado nacional se carece del tipo de matrices que son
necesarias para realizar un buen letrero que pueda competir con
los que son importados de los cuales el servicio técnico que nos
pudiesen brindar será muy limitado.
4. El trabajar con un lenguaje de alto nivel nos brinda muchas
facilidades para poder realizar una programación rápida a
diferencia de un lenguaje de bajo nivel.
Tlgo. Diego Armando Fernández Cajamarca
Página 55
Universidad Católica de Cuenca
RECOMENDACIONES
1. Usar también el microcontrolador 18F452 no se necesita realizar
muchas configuraciones a diferencia del 18F4550.
2. Los leds para las matrices tienen que ser de alto brillo y con un
ángulo de visión mayor a 45°esto nos ayudara el momento de
realizar el multiplexado a poder ganar tiempo ya que como emiten
más luz a diferencia de los comunes que tenemos que esperar un
poco más de tiempo para que se enciendan completamente
porque su iluminación es muy baja claro hablamos de tiempos que
están hasta por debajo de las milésimas de segundo pero ya
cuando se a programado todo el tiempo que podamos ganar será
muy valioso.
3. Realizar por bloques la programación, así será mucho más fácil el
desarrollar las aplicaciones o modificaciones que queramos
realizarle al programa.
4. Hay que asegurarnos de encerar siempre las variables porque
podemos empezar a tener errores el momento de simular o que
funcione el circuito ingresando datos erróneos.
Tlgo. Diego Armando Fernández Cajamarca
Página 56
Universidad Católica de Cuenca
BIBLIOGRAFÍA:
Libro de Microcontroladores Pic Autor: Carlos A. Reyes
Programación desarrollada en Proton
Simulación en el programa llamado Proteus Isis
www.ucontrol.com
www.wikipedia.com
www.datasheet.com
Tlgo. Diego Armando Fernández Cajamarca
Página 57
Universidad Católica de Cuenca
ANEXOS:
La programación realizada para el microcontrolador desarrollada con
el programa llamado proton, su respectiva simulación realizada en
proteus un programa de diseño y simulación de circuitos electrónicos.
Tlgo. Diego Armando Fernández Cajamarca
Página 58
Descargar