Motor A Pasos
Enviado por julian15 • 7 de Julio de 2015 • 1.612 Palabras (7 Páginas) • 201 Visitas
Objetivos
Utilizar el compilador de mikro C para programar el PIC18F4550
Programar un PIC18F4550 para controlar un LCD 16X2
Materiales
PIC18F4550.
LCD 16X2 (162ª)
Protoboard
POTENCIOMETRO DE 10 K Ω
Push botton
Cable para conexiones.
Resistencias de 1k Ω
Introducción
El compilador MikroC PRO
La programación de microcontroladores se basa en un código de máquina que es conocido como código ensamblador, este código contiene una a una las instrucciones del programa, este código ensamblador o también conocido como código asembler es minucioso, y tedioso de editar. El asembler crea códigos de programa extensos y de difícil comprensión. La creación de compiladores de alto nivel facilitó la edición y creación de programas en todo modo de programación lógica, por supuesto los microcontroladores no fueron la excepción, comercialmente existen varios compiladores de diferentes fabricantes y diferentes lenguajes de alto nivel.
MikroC PRO es un paquete de software con una amplia variedad de ayudas y herramientas que facilita la creación de proyectos y aplicativos para los microcontroladores PICMicro.
El estudio de este entorno de desarrollo es posible debido a que el estudiante puede descargar una versión demo o estudiantil, que tiene las mismas características de la versión completa, la única limitación es la dimensión del código de máquina que no puede exceder 2K bytes, sin embargo es una capacidad suficiente al tratarse de un prime aprendizaje. La versión demo se puede descargar de la pagina: www.mikroe.com.
Marco teórico
La mayoría de los dispositivos de lógica secuencial, entre ellos los CPU, son de naturaleza síncrona. Es decir, están diseñados y operan en función de una señal de sincronización. Esta señal, conocida como señal de reloj, usualmente toma la forma de una onda cuadrada periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden seleccionar un período apropiado para la señal de reloj.
Para el correcto funcionamiento del microcontrolador debemos definir la frecuencia del oscilador pues determinará los ciclos de instrucción; podemos utilizar un oscilador interno o externo, sin embargo es recomendable utilizar un oscilador de cristal externo para evitar un mal funcionamiento frente a las variaciones de temperatura dentro del microcontrolador.
Cálculo del ciclo máquina
Para calcular el ciclo máquina, primero debemos saber qué es, el ciclo máquina no es nada más ni nada menos que el tiempo que se tarda en ejecutar una instrucción, este valor está compuesto por el ciclo de reloj multiplicado por cuatro (debido al pipeline), multiplicado por el valor del preescaler multiplicador por el registro que se va a utilizar, es decir TMR0L (16).
Ciclo de reloj:
CR=1/f=1/4MHz=0.25µs
Ciclo de instrucción:
CI=CR*4=0.25*4=1µs
Ciclo máquina:
CM=CI*Preescaler*TMR0L
CM=(1/4MHz*4)(256)(16)=0.0409ms
Subrutina de retardo
Para repetir el número del CM n veces, se tiene que utilizar un subrutina que realice un retardo, para ello, primero definamos lo que es una subrutina.
En computación, una subrutina o subprograma (también llamada procedimiento, función o rutina), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un valor.
Para realizar nuestra subrutina de retardo, debemos realizar lo siguiente en ensamblador:
RETARDO MOVLW .3 ;RETARDA TRES VECES
MOVWF CICLO
CERO CLRF TMR0L ;REINICIA EL TIMER0
CHECK BTFSS TMR0L,4 ;REVISA EL MSB TIMER0L
GOTO CHECK
DECFSZ CICLO ;DECREMENTA CICLO
GOTO CERO ;
RETURN
Instrucciones RETURN, DECFSZ
Como podemos observar, en la subrutina anterior utilizamos RETURN DECFSZ las cuales, RETURN regresa de la pila de subrutinas de donde fue llamada esta subrutina (RETARDO) y DECFSZ se utiliza para decrementar en uno el registro CICLO.
Display de 7 segmentos
El visualizador de siete segmentos (llamado también display por calco del inglés, aunque no recomendado en español) es una forma de representar números en equipos electrónicos. Está compuesto de siete segmentos que se pueden encender o apagar individualmente. Cada segmento tiene la forma de una pequeña línea. Se podría comparar a escribir números con cerillas o fósforos de madera.
Cada uno de los segmentos que forman la pantalla, están marcados con las siete primeras letras del alfabeto (de la letra ‘a’ a la letra 'g'), y se montan de forma que permiten activar cada segmento por separado, consiguiendo formar cualquier dígito numérico. A continuación se muestran algunos ejemplos:
Si se activan o encienden todos los segmentos se forma el número "8".
Si se activan sólo los segmentos: "a, b, c, d, e, f," se forma el número "0".
Si se activan sólo los segmentos: "a, b, g, e, d," se forma el número "2".
Si se activan sólo los segmentos: "b, c, f, g," se forma el número "4".
Ánodo común
En los de tipo de ánodo común, todos los ánodos de los leds o segmentos están unidos internamente a una patilla común que debe ser conectada a potencial positivo (nivel “1”). El encendido de cada segmento individual se realiza aplicando potencial negativo (nivel “0”) por la patilla correspondiente a través de una resistencia que límite el paso de la corriente.
Cátodo común
En los de tipo de cátodo común, todos los cátodos de los leds o segmentos están unidos internamente a una patilla común que debe ser conectada a potencial negativo (nivel “0”). El encendido de cada segmento individual se realiza aplicando potencial positivo (nivel “1”) por la patilla correspondiente a través de una resistencia que límite el paso de la corriente.
Situación
Realizaremos tres circuitos, el primero encenderá y apagará un LED cada determinado tiempo; el segundo mostrará un letrero en el display de 7 segmentos, letra por letra, cambiando cada cierto tiempo con el nombre de nuestro equipo, en este caso, ELECTROSTUDENTS; el último circuito mostrará una serie de luces para el cual utilizaremos la tira de LEDs.
Programas
Letrero
;PROGRAMA QUE MUESTRA UNA SERIE
...