Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Parte
En esta primera parte intentaremos dar unas pequeas pinceladas en lo que concierne al uso del software de simulacin de Proteus, pasando rpidamente a la programacin en MikroBasic partiendo de ejemplos prcticos sencillos y su simulacin por ordenador. A la vez que nos iremos introduciendo cada vez ms en MikroBasic iremos adquiriendo algunas nociones de cmo usar los microcontroladores PIC en la instrumentacin en particular y en infinidad de mbitos de trabajo y circuitos de control electrnico en general. Terminaremos esta primera parte con la conversin analgica-digital no elaborada, es decir, la presentacin del dato crudo en una pantalla LCD.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 1
U1
16 15 4 OSC1/CLKIN OSC2/CLKOUT MCLR
D8
LED-RED
D7
LED-RED
D6
LED-RED
D5
LED-RED
D4
LED-RED
D3
LED-RED
D2
LED-RED
D1
LED-RED
R8
330
R7
330
R6
330
R5
330
R4
330
R3
330
R2
330
R1
330
U1
16 15 4 OSC1/CLKIN OSC2/CLKOUT MCLR RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC16F84A 17 18 1 2 3 6 7 8 9 10 11 12 13
SW1
SW-SPDT
D8
LED-RED
D7
LED-RED
D6
LED-RED
D5
LED-RED
D4
LED-RED
D3
LED-RED
D2
LED-RED
D1
LED-RED
R8
330
R7
330
R6
330
R5
330
R4
330
R3
330
R2
330
R1
330
11
12
14
16
main: (etiqueta) es un identificativo que, a voluntad del programador y por inters en el programa, sirve como punto de referencia para algn comando (p.e. como punto de referencia en un bucle con goto). En este caso nos indica desde donde comienza el bloque principal del programa (main), ya que delante de esta etiqueta puede existir otro bloque de programa para definicin de variables, constantes, arrays, etc. El indicativo de etiqueta viene dado por los dos puntos al final del nombre de la misma y sta debera ajustarse a la columna ms izquierda del mdulo donde se incluya (esttica de programa y facilidad de lectura).
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 17
22
Usaremos el mismo circuito y pasamos a comentar lo que hay de nuevo en este programa: if then else end if comando que establece una o varias condiciones y que ejecutar un bloque de comandos comprendidos entre el then y el else si se cumplen las condiciones especificadas y que, en caso contrario, ejecutar un bloque diferente de instrucciones que se encontrar comprendido entre el else y el end if cuando dichas condiciones no se cumplan. Normalmente se les denomina comandos de bifurcacin de flujo de programa y puede ser utilizado slo con la parte if then end if, cuando no nos interese hacer nada si no se cumplen las condiciones. En este caso chequeamos si el conmutador est en la posicin de GND (PORTA.0=0 - 0 lgico) y realizamos la secuencia de iluminacin de LEDs en un sentido y, si por el contrario el conmutador se encuentra en Vcc (PORTA.0=1 - lgico), el programa realiza la secuencia de encendido en el sentido contrario.
23
Esta funcin calcula la potencia n de x, ambos datos pasados como parmetros de la funcin en cuestin. La variable i es una variable local y, por tanto, su modificacin tiene lugar slo en el mbito interno de la funcin (podramos tener una variable i en cada procedimiento o funcin e incluso otra en el programa principal y todas seran tratadas como variables diferentes).
La variable result es una variable comodn, especficamente se usa como almacn de intercambio de datos entre la funcin y la variable que ha de contener el resultado. Se define como variable local automticamente por el compilador en el momento en que se le llama o asigna un valor, con el fin de contener el valor resultante de dicha funcin. Podramos tener varias funciones y todas usaran la variable result para retornar el valor calculado de cada una de ellas ya que en la llamada se hace alusin al nombre de la funcin y no al nombre de la variable local result. En este ejemplo se calcula la 12 potencia de 3 y se almacena en Tmp que previamente fue definida tambin como longint.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 26
Comentemos lo nuevo del cdigo: Lcd_Cmd(LCD_SHIFT_RIGHT) como vemos no se trata de un comando nuevo salvo por la parte concerniente al comando especfico del LCD. Concretamente estamos ordenando al display que desplace TODA la pantalla un carcter a la derecha, el efecto es tal que el mensaje se desplaza una posicin a la derecha. Si eso lo repetimos x veces, el efecto ser un mensaje en movimiento. Lcd_Cmd(LCD_SHIFT_LEFT) tiene el mismo efecto que el anterior pero el movimiento se realiza hacia la izquierda en este caso. La memoria del LCD no cambia y contiene todo el mensaje completo. Combinando ambos comandos podemos crear un atractivo efecto en el mensaje que queremos transmitir.
31
ADCON1=0x8E; el registro ADCON1 del PIC, nos permite configurar ciertos parmetros que en un momento dado nos pueden interesar de un modo u otro para la lectura A/D. Se recomienda mirar la datasheet del dispositivo. 33
35
36
37
Fin 1 Parte
En la segunda parte de esta introduccin a la simulacin con proteus y la programacin con mikrobasic intentaremos profundizar an ms en la conversin analgico-digital, elaborando ms el dato que nos interesa y, adems, variando las referencias mxima y mnima de muestreo de la seal analgica con el fin de darle an ms precisin. Adems, repasaremos otras funciones de los microcontroladores PIC como puede ser la modulacin de ancho de pulso (PWM), uso de interrupciones, uso de los timers internos, uso de motores paso a paso, sensores, etc.
38