Anda di halaman 1dari 8

PROYECTOS CON LED

Con este conocimiento previo de BASIC, ahora estamos en condiciones de empezar a experimentar y escribir algunos programas. En este tutorial se usara el PIC 18f4550 y PROTEUS. Se espera que haya sido instalado PROTON IDE, PROTEUS 7.6 y el PIC Kit 2 configurado para utilizar el PIC184550. Casi todos los libros sobre la programacin tienen como primer programa, el denominado 'Hello world' esto es generalmente una forma de poner un simple texto "hola mundo" en la pantalla o algn dispositivo de salida, en la forma ms simple y ms fcil, para mostrar todo el ciclo, y para estar seguros de que todo est funcionando. En nuestro caso, usaremos la pantalla LCD ms tarde, vamos a utilizar LEDS para mostrar nuestro mensaje. Slo queremos que todos los LEDS conectados en PORTD se enciendan a la vez, lo que tenemos que hacer es escribir un 1 lgico a todos los bits de PORTD, asegurando que todos los LEDS se enciendan.

Escribir este programa en BASIC PROTON, y guardarlo en su carpeta de proyectos PIC segn la extensin que ms se le facilite, compilar el programa y cargarlo en su microcontrolador. Device=18F4550 'Selecciona PIC XTAL 20 'Cristal de 20MHz ALL_DIGITAL true 'Configura todas las Salidas Como Digitales Output PORTD 'Poner todos los bits de PORTC como Salidas lo mismo que TRISD=0 PORTD= %11111111 'Asigna todos los bits de PORTC a 1 lgico End


Ahora vamos a diseccionar este programa una instruccin a la vez, para conocer estos comandos. Device=18F4550 Esta lnea informa al compilador que vamos a utilizar el microcontrolador 18F4550. Desde el mapeo de memoria, la disponibilidad de dispositivos de los puertos, y los bits del puerto, as como otros a bordo difieren entre microcontroladores, es importante informar al compilador. Esta suele ser la primera lnea en su programa. Cada compilador, puede ser BASIC, C o el que sea que est utilizando es importante comprobar que el dispositivo en particular est siendo apoyado por su compilador. No todos estn respaldados por estos compiladores. XTAL 20 Esta declaracin informa al compilador la velocidad de operacin del PIC. De modo que el compilador puede calcular los diversos tipos de retrasos y baudios para la comunicacin serial. ALL_DIGITAL true Como ustedes saben hay nmero de entradas analgicas de estos dispositivos, y hablamos de cmo habilitar y desactivarlas. Vamos a hablar ms sobre este tema en la seccin adecuada. En los programas que no necesite entrada analgica y en su lugar desea utilizar como E/S digitales, este comando deshabilita la entrada analgica en todas las lneas, y las hace digital. Aunque en este programa no se va a utilizar cualquier lnea, para la grabacin analgica. Output PORTD Como ya hemos discutido previamente, PORTD es bidireccional. Esto significa que puede obtener datos desde el exterior, as como hacia el exterior. Esto se logra mediante un seguimiento del registro TRISD. Este comando habilita a TRISD internamente, para establecer todos los bits de PORTD como salida. As que algn valor para registrar en PORTD por el de software, se refleja inmediatamente en los pines correspondientes, con esto, tenemos PORTD configurado como salida. PORTD= %11111111 Ahora vamos a asignar un valor al registrar PORTD. El registro PORTD es de 8 bits, por lo que puede establecer su valor al usar cualquier nmero de 0 a 255. % 11111111 es el nmero binario. Usted podra escribir la misma instruccin como: PORTD= 255 255 es el nmero decimal, equivalente a% 11111111, o podra utilizar el nmero hexadecimal, como: PORTD= $FF Observe el signo $ antes del nmero hexadecimal, y un signo% antes del nmero binario. Los compiladores varan en estos signos.


End Tan pronto como se establece el registro PORTD con este valor el efecto se refleja en los pines. La declaracin End crea un bucle sin fin, manteniendo el procesador ocupado, por lo que no puede tomar ninguna accin hasta que el programa se restablezca. Cualquiera que sea la salida fijada en los pines del puerto se mantendr fija, an en la declaracin final.

Ahora trate de cambiar el valor que se asigne a PORTD. Asignacin de 0 a su vez, todos los LED apagados, y un % 10101010 para LEDS alternados en ON y OFF. Espero que esto sea bastante simple y claro.

Parpadeo de LED
En nuestro prximo proyecto, vamos a hacer que estos LED parpadeen. El parpadeo tiene dos fases, una ON y OFF. Ambas fases tienen un perodo de tiempo determinado, antes de cambiar a otro estado. Esto determina la frecuencia de parpadeo. Si los tiempos de ON y OFF son los mismos, podemos decir que es una onda cuadrada. Para ver estos pulsos, estamos usando LEDS a travs de sentencias de bucle. Device=18F4550 XTAL 20 ALL_DIGITAL true Output PORTD Loop: PORTD= 255 DelayMS 1000 PORTD= 0 DelayMS 1000 GoTo Loop 'seleccionar PIC ' frecuencia 20MHz 'Todas las lneas digitales 'PORTD como salida TRISD=0 'Asigna todos los bits de portD a 1 lgico 'Dejar que los LEDS queden encendidos durante l segundo 'LEDs OFF 'Mantenerlos en OFF por 1 Segundo 'Repita proceso

Se declara una etiqueta llamada Loop, y una declaracin correspondiente Goto Loop. Las instrucciones entre estas dos declaraciones se repetirn indefinidamente. PORTD = 255 todos los LEDS en ON. Sin embargo, antes de desactivarlos, tenemos que imponer un retraso. DelayMS 1000 Esta declaracin da un retraso en mili-segundos del nmero. As 1000ms de demora es igual a 1 segundo, de manera similar 500ms retraso es medio segundo, y 100 ms es 1/10 de un segundo. Tambin se pueden hacer retrasos en micro-segundos usando DelayUs. Los LEDS se encienden, y el procesador demora la activacin en 1 segundo, entonces PORTD = 0 apagar los LEDS. Una vez ms, introducir un retraso, para mantenerlos en la condicin actual durante 1 segundo. Despus del un retraso de 1segundo, cuando testigos estn apagados, el comando GOTO transfiere el control de nuevo a la sentencia de bucle, que es seguido por PORTD = 255, que volver a su vez LEDS ON. El ciclo de ON / OFF con 1 segundo continuar para siempre En otras palabras, podemos decir una onda cuadrada de 1 Hz se est generando en todos los pines de PORTD. Compilar el programa y cargarlo en el microcontrolador. Ejecutarlo, y todos los LED deberan parpadear, precisamente, ON durante 1 segundo y OFF durante 1 segundo. Ahora puede experimentar de varias maneras: As que hemos visto que podemos asignar distintos valores a PORTD, que se reflejan en LED para activar o desactivar salidas del PIC 18F4550. Hgalo usted mismo: 1. 2. 3. 4. LED en ON durante medio segundo y OFF durante 1 segundo LED activado durante 200ms y apagado durante 2 segundos Crear una frecuencia de onda cuadrada de 10Hz. Parpadeo de LED de dos veces, con un retraso de 500 ms seguidos por un estado OFF de 2 segundos

Utilizacin de una Variable


Ahora vamos a tratar de mostrar algunos nmeros binarios en los LED. Se creara una variable, para asignarle un valor y mostrarlo en los LEDS. Eso es bastante simple. Qu pasa si queremos que todos los valores de 0 a 255 sean mostrados en LEDS, con un retraso de 200ms intervenir? Ciertamente, no es una buena idea escribir 255 bloques de cdigo con cada uno con un valor diferente. Aqu el uso de variables y los bucles es muy til. Veamos este ejemplo:

'EJEMPLO3.Bas Mostrar los nmeros binarios de 0 a 255 en los LED: Device=18F4550 'Seleccionar PIC XTAL 20 'Frecuencia de Cristal 20MHz ALL_DIGITAL true 'Poner todas las lneas del PIC como digital Output PORTD 'PORTD como salida al igual que TRISC=0 Dim x As Byte Loop: For x=0 To 255 'Iniciar un bucle controlado de la variable X PORTC=x 'Asignar x a PORTC DelayMS 200 Next x GoTo Loop En este programa hemos declarado una variable llamada X, que es una variable de tamao bytes. Para uso de un For... Next, el valor del bucle X se le permite variar de 0 a 255; cada vez, a PORTD se le asigna un valor de X, que inmediatamente se muestra en los LEDs, un retraso 200ms se inserta de manera que podamos ver el estado de los LED. Next X es el contador del valor de incremento de x por 1, todo este proceso se repite cada vez con un nuevo valor de X, despus de que el valor ha llegado a 255, el bucle se termina y el control se transfiere a la declaracin despus de X. La instruccin Goto Loop transfiere el control al bucle For, que se inicia de nuevo desde 0 a 255. Con este ejemplo se muestra dos cosas: 1. La utilidad del bucle, para variar el valor de una variable y luego usar la variable dentro del bucle. 2. En segundo lugar el uso de dos bucles, uno (el For... Next) bucle est limitado a 255 repeticiones y el segundo bucle sin fin de mantener este ciclo, a partir de Loop y Goto Loop .Estos ciclos se denominan "bucles anidados. Ahora aplique de estas variaciones: En la Comunicacin del EJEMPLO3.Bas: For x=0 To 255 Step 2 informa compilador que se incrementan en 2.

Ejercicios Propuestos 1. Los nmeros de inicio y final de 65 a 190 2. Inicio Nmeros de 0 a 255 se incrementan en 2 3. Los nmeros de inicio 0 a 255, cada intervalo de tiempo tambin se incrementa por el mismo factor 4. Nmero de inicio y la disminucin de 255 a 0


5. Iniciar desde 0 a 255, todos los LEDs se mantienen en ON durante 2 segundos despus de decremento 255 a 0, mantenga todos los LEDs en OFF durante 2 segundos y luego repite el proceso 6. Iniciar 0 a 255 entonces los LED parpadean 5 veces y luego disminuir a 0 esperar 2 segundos y repetir

Utilizacin de un Bit por Puerto


Eso est muy bien, usted ha pasado por una serie de ejercicios, para asignar nmeros distintos a un puerto. Hasta ahora se han asignado valores a la totalidad del puerto, que afectan a los 8 bits a la vez. En nuestros proyectos del mundo real la totalidad del puerto prcticamente no se utiliza, de hecho bits individuales de un puerto se adjuntan a los diferentes dispositivos. Por ejemplo, si el bit 0 del PORTD est conectado a un rel de control del ventilador, y el bit 1 conectado a un rel de control de segundo ventilador y el bit 3 adjunto al relevo calentador. As que nos gustara que el control de los tres bits de forma individual. A pesar de que puede hacerse mediante la asignacin de nmero es mejor el control de bits individuales directamente sin afectar a otros bits. Esto es an ms til, cuando algunos de los bits en un puerto actan como insumos. Un bit individual puede ser contemplado no slo en un puerto, sino tambin en los registros de funciones especiales, e incluso variables de memoria. Esto hace la programacin muy fcil y manejable. Los bits del puerto se hacen referencia mediante la colocacin de un perodo despus del nombre del puerto y un nmero para indicar el nmero de bits. Por ejemplo, para referirse al bit 7 (bit ms alto) en PORTB, usamos PORTB.7, observe que el nmero 7 indica el nmero de bit. Al igual que en el acceso del registro de estado 0, por ejemplo, usamos STATUS.0 similar para hacer el bit 0 de PORTB como entrada, con registro TRISB, TRISB.0 = 1. Con el fin de establecer el bit de puertos de alta o baja, puede asignar un valor de 1 o 0. Tambin puede utilizar el comando, High y Low hacen lo mismo. Los comandos High and Low slo funcionan en bits del registro del puerto y no en los bits de variable general. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTD.7 Loop: High PORTD.7 DelayMS 500 Low PORTD.7 DelayMS 500 GoTo Loop

En este programa, como pueden ver, tenemos acceso directo al bit 7 de PORTD. Uso de los comandos High y Low que alternan el bit seleccionado entre el 1 lgico y 0.

Comando Toggle
Protn tiene el comando Toggle que vara el valor de un bit. Este comando acepta un pin de puerto, y los cambios de nivel opuesto. As que si el bit es 1, es cambiado a 0 y si se ha cambiado a 0 el 1.Este programa produce esencialmente los mismos resultados, sin embargo mediante un comando de conmutacin.


Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTD.7 High potd.7 loop: DelayMS 500 Toggle PORTD.7 GoTo loop

Cambio de Operadores
Los Bits pueden ser transferidos dentro de una variable o un puerto a la izquierda o la derecha, como las posiciones. El Desplazamiento de los bits hacia la izquierda tiene un efecto matemtico de multiplicar por 2, y el desplazamiento de los bits a la derecha se divide por defecto en 2 .El Desplazamiento a la izquierda se indica con operador << y desplazamiento a la derecha por operador >>. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTD PORTD=0 Loop: High PORTD.0 Dim x As Byte For x=0 To 7 DelayMS 500 PORTD=PORTD << 1 Next x DelayMS 500 GoTo Loop Este ejemplo se carga el bit 0 del PORTD en alto, entonces despus de cada 500ms desplaza los bits a la izquierda, los bits de 0 lgico se colocan a la derecha, el bit menos significativo, cuando se desplazan bits.

Operaciones
AND, OR, XOR y NOT son las puertas lgicas, sin embargo, tambin se aplican en la misma lgica dentro del software. Dos variables, o los nmeros pueden ser comparados entre s mediante estos operadores lgicos y el resultado se utiliza directamente para tomar una decisin, como en los bucles IF, While o almacenada en otra variable para su posterior uso en el programa. Estos los ejemplos concretos se darn en las secciones pertinentes del tutorial.

Anda mungkin juga menyukai