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