Você está na página 1de 38

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN

INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC

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

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
PROTEUS es un software de diseo electrnico desarrollado por Labcenter Electronics
que consta de dos mdulos: Isis y Ares y que puede constar de un tercer mdulo opcional denominado Electra. ISIS es la herramienta ideal para una rpida realizacin de complejos diseos de esquemas electrnicos destinados tanto a la construccin de equipos electrnicos como a la realizacin de tareas de simulacin y prueba. Contiene un mdulo de simulacin virtual de circuitos (VSM Virtual System Modelling) con el que se puede ejecutar software de microcontroladores. ISIS tambin permite la exportacin del circuito a diferentes formatos de otras aplicaciones CAD electrnicas adems de la posibilidad de convertirlo en una imagen para su inclusin en cualquier documento o presentacin. ISIS es el corazn del sistema PROTEUS. ARES es la herramienta de enrutado de circuitos para la realizacin de placas de circuito impreso. Puede usarse de manera manual o automtica. Una caracterstica llamativa de este mdulo es la posibilidad de ver la placa con los componentes en 3D. Desde ARES podremos hacer uso del mdulo ELECTRA que realizar un enrutamiento ms optimizado que el del propio ARES.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
MIKROBASIC es un Entorno Integrado de Desarrollo (IDE) de aplicaciones software destinadas a ser ejecutadas en microcontroladores. El uso que en esta introduccin vamos a hacer de este magnfico IDE, es bsicamente el compilador de lenguaje MikroBasic (Basic, Qbasic o QuickBasic) y sus libreras especficas para el uso de LCDs, altavoces o buzzers, utilizacin de EEPROMs (comunicacin I2C), y un largo etctera que hacen de este compilador uno de los mejores del mercado al facilitar enormemente las tareas de control de este tipo de dispositivos perifricos. Todo esto convierte este compilador en uno de los de ms alto nivel, en trminos de software, del mercado (ensamblador = muy bajo nivel = programa compilado pequeo / mikrobasic = muy alto nivel = programa compilado bastante ms grande). Bajo mi punto de vista, se trata de una herramienta ideal para comenzar en el mundo del microcontrolador aunque muchos otros prefieran la programacin en otros lenguajes, como puede ser C. 3

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
MICROCONTROLADOR: Es un circuito integrado que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y unidades de E/S. A diferencia de un computador, en el mismo chip tenemos cargado el sistema operativo en memoria no voltil (memoria de programa - Flash o EEPROM), tenemos tambin la memoria voltil o RAM (muy pequea en comparacin con la de programa), disponemos de memoria no voltil (muy pequea tambin en comparacin con la memoria de programa y se trata normalmente de memoria EEPROM), y finalmente disponemos de los puertos de E/S necesarios para su uso. El tamao de los diferentes tipos de memoria y nmero de dispositivos internos varan ampliamente de un modelo de microcontrolador a otro, lo que nos lleva a tener siempre en cuenta que hay un lmite fsico cuando desarrollemos aplicaciones en MikroBasic, y habr que observar la posibilidad de usar un microcontrolador superior si queremos mayores funcionalidades o el programa es muy extenso.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 4

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
El primer paso a seguir en el uso de microcontroladores en instrumentacin (o en cualquier otro mbito de trabajo), es el diseo del circuito electrnico ya que ste va a condicionar el flujo de programa y su funcionamiento.
SW1
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 SW-SPDT

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

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Para el diseo del circuito usaremos el ISIS:

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Para aadir componentes desde las libreras pulsaremos e botn que presenta una letra P y al pasar el ratn por encima del mismo nos presenta una etiqueta de ayuda que indica Pick from libraries.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Al pulsar el botn P se nos abre una nueva ventana donde podremos buscar y aadir a nuestro proyecto cualquier componente de los incluidos en las libreras de la versin de Proteus que hayamos instalado. Habr que tener en cuenta que algunos componentes NO se pueden simular ya que no tienen esa funcin implcita. En estos casos habr que sustituirlos por aquellos que si la incluyan.
8

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
En este caso hemos aadido 8 LEDs rojos, 8 resistencias genricas, un conmutador (que no aparece en la imagen) y tambin un microcontrolador PIC16F84A. Hemos dibujado tambin las conexiones entre componentes.

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

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
El diagrama en bloques del PIC16F84A, muestra gran parte de las caractersticas de este microcontrolador. En esencia es un microcontrolador de la gama media de Microchip Technologies (35 instrucciones), con una longitud de instruccin de 14 bits y una longitud de datos de 8 bits, que puede trabajar a una velocidad de hasta 20 MHz (clock cada instruccin necesita 4 ciclos/reloj para ejecutarse).
10

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
El entorno IDE de MikroBasic (no profundizaremos en su uso):

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

11

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Esta es la ventana de Proyecto del IDE MikroBasic donde pondremos nombre al mismo, seleccionaremos la carpeta donde queremos guardarlo, seleccionaremos el tipo de microcontrolador que usaremos, indicaremos la velocidad a la que funcionar el reloj, y configuraremos los fuses o device flags del PIC.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

12

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Acto seguido el entorno pasa a la ventana de edicin donde realmente escribiremos el programa que nos interese, siempre atendiendo a las caractersticas estructurales de nuestro hardware. Lo compilamos mediante la opcin Project/Build All y nos crear, entre otros, un fichero con extensin .HEX que es el fichero cargable y ejecutable que reconoce el PIC.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 13

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Para cargar un programa en un PIC debemos disponer del cargador hardware adecuado al modelo de PIC usado. En internet se pueden encontrar infinidad de ellos. Para cargar el programa en nuestro circuito de simulacin de Proteus, debemos seleccionar con el botn derecho del ratn la representacin de nuestro componente PIC y pulsar sobre la opcin Edit Properties del men desplegable.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

14

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Tras seleccionar esta opcin nos aparece una ventana como la del grfico. En el apartado Program File pulsaremos en el botn con una carpeta dibujada y acto seguido se nos abre otra ventana del explorador de buscaremos el archivo .HEX que queremos cargar en nuestro PIC virtual. Una vez se ha seleccionado ese archivo, en teora, cada modificacin de software y consiguiente compilacin quedara automticamente cargada en nuestra simulacin siempre que se mantenga misma ruta y nombre de archivo.
15

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Concretamente para el montaje anterior, uno de los programas posibles sera:
program luces main: TRISB=0 'puerto B como salida PORTB=0 ponemos a nivel bajo todas las patillas del puerto B bucle: DELAY_MS (500) PORTB = NOT PORTB 'invierte el valor de los bits del puerto GOTO bucle end.

Veamos la simulacin en Proteus:

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

16

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Analizaremos ahora este pequeo programa con el fin de conocer paso a paso el efecto que tiene en el hardware cada una de las instrucciones: program luces (obligatoria) es la primera sentencia con la que iniciaremos cualquier programa, identificndolo con el nombre que pongamos: luces en este caso.

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

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
TRISB=0 'puerto B como salida comando especfico del ensamblador del PIC adoptado por MkroBasic (y muchos otros lenguajes), al no disponer el Basic de un comando propio para realizar esta funcin. Esta sentencia configura TODO el puerto B del PIC, es decir los 8 bits (patillas), como dispositivos de salida. Podemos usar una configuracin diferente para cada bit (patilla) de cada puerto, dependiendo de nuestras necesidades. Por ejemplo TRISB=%01101010 (binario), o tambin TRISB=0x6A (o $6A ambas son expresiones hexadecimales), o incluso TRISB=106 (decimal), todas ellas configuraran los bits (patillas) RB6, RB5, RB3 y RB1 como entradas y el resto como salidas. PORTB=0 ponemos a nivel bajo todas las patillas del puerto B este comando tambin es un comando especfico del ensamblador del PIC. Podemos utilizar valores binarios, hexadecimales y decimales al igual que en el anterior y adems podemos poner a nivel bajo o alto cada bit (patilla) individualmente utilizando esta nomenclatura PORTB.[nmero de patilla del puerto]=0/1. 18

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
return: etiqueta (de retorno de bucle en este caso). Explicado anteriormente. DELAY_MS (500) procedimiento interno de MikroBasic que realiza un retardo en milisegundos segn el valor especificado entre parntesis. PORTB = NOT PORTB 'invierte el valor de los bits del puerto comando ya comentado salvo en la parte del NOT, negacin lgica que cambia el nivel de todo el puerto bit a bit, es decir, aquellos que se encuentren a nivel alto pasarn a nivel bajo y viceversa. GOTO bucle comando de salto hacia o hasta una etiqueta determinada. En este caso la etiqueta bucle que delimita el bloque que debe repetirse indefinidamente, en este caso. end. comando obligatorio de fin de programa.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 19

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Compliquemos un poco el funcionamiento del mismo circuito:
program juego_de_luces2 dim luces as byte [4] array de 4 variables dim i as byte contador de bucle main: TRISB=0 luces[0] = %10000001 paso n1 luces[1] = %01000010 paso n2 luces[2] = %00100100 paso n3 luces[3] = %00011000 paso n4 bucle: i=0 for i=0 to 3 PORTB= luces [i] delay_ms (100) 'retardo de 0.1seg next i for i=2 to 0 step -1 PORTB= luces [i] delay_ms (100) next i goto bucle end. T.M.A. (Avinica) Jos Luis Martnez Palenzuela

Veamos la simulacin en Proteus:


20

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Comentaremos en este caso slo el cdigo nuevo: dim luces as byte [4] array de 4 variables comando de Basic que define el nombre de una variable, su tipo de dato y opcionalmente su dimensin/es. En este caso se trata de un array de 4 elementos, que podran ser variables y que, en este caso, siguiendo el cdigo vemos que tienen asignado un valor que adems es del tipo byte (8bits). for i=0 to 3 next i bucle que repite un nmero de veces determinado por los valores que se le asignen a la variable, incrementando sta hasta alcanzar un valor deseado. Si no se expresa otra cosa mediante el modificador step, se asume que el incremento es de una en una unidad. En este caso se comienza con el valor de 0 para la variable i, y va incrementndola de uno en uno hasta llegar a 3, con lo que el bloque comprendido entre for y next se repite 4 veces (0,1,2 y 3).
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 21

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
PORTB= luces [i] este comando asigna al puerto B (8 bits) el valor de cada elemento del array luces[i] (8 bits) que lo recorre en sus cuatro elementos utilizando como ndice la variable i que vara de 0 a 3 gracias al bucle for next. for i=2 to 0 step -1 next i ya comentado anteriormente, repite el bloque de cdigo comprendido entre el for y el next 3 veces decrementando en una unidad dicha variable hasta alcanzar el valor 0 (2,1 y 0). As recorre de nuevo el array luces[i] pero en sentido decreciente en este caso y omitiendo el primer elemento del array con la finalidad de no repetirlo y que quede un efecto ms atractivo en la secuencia de iluminacin de luces. El resto de cdigo ya ha sido comentado y su comportamiento es, por tanto, fcilmente deducible.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

22

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
program juego_luces_3 dim luces as byte[8] dim i as byte luces[0]=%10000000 luces[1]=%01000000 luces[2]=%00100000 luces[3]=%00010000 luces[4]=%00001000 luces[5]=%00000100 luces[6]=%00000010 luces[7]=%00000001 main: TRISA=0x01 TRISB=0x00 bucle: i=0 if PORTA.0=0 then for i=0 to 7 PORTB=luces[i] Delay_ms(100) next i else for i=7 to 0 step -1 PORTB=luces[i] Delay_ms(100) next i end if GOTO bucle end.

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

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Cambiamos ahora de circuito y pasamos a realizar un contador ascendente / descendente con un display de 7 segmentos de ctodo comn:
program D7Seg 'CATODO COMUN dim i as byte dim cont as byte[10] sub procedure numasig cont[0]=%00111111 cont[1]=%00000110 cont[2]=%01011011 cont[3]=%01001111 cont[4]=%01100110 cont[5]=%01101101 cont[6]=%01111100 cont[7]=%00000111 cont[8]=%01111111 cont[9]=%01100111 end sub sub procedure ascendente numasig P: i=0 for i=0 to 9 PORTB=cont[i] Delay_ms(300) next i end sub sub procedure descendente numasig G: i=0 for i=9 to 0 step -1 PORTB=cont[i] Delay_ms(300) next i end sub main: TRISA=1 TRISB=0 bucle: if PORTA=0 then ascendente else descendente end if GOTO bucle end.

Veamos la simulacin en Proteus.


24

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Acto seguido pasamos a comentar lo que hay de nuevo en este nuevo programa: Sub procedure end sub delimita un bloque de cdigo de los denominados procedimientos. Son en esencia pequeos programas dentro de un mismo programa, creados con el fin de evitar el tener que escribir el mismo cdigo cada vez que realicemos una tarea que se repite en varias ocasiones a lo largo del programa principal (main program). Deben ser declarados y definidos previamente al programa principal y pueden contener variables locales, cuya modificacin no trasciende fuera del mbito del procedimiento, o pueden modificar una o varias variables globales o de aplicacin en todo el mbito del programa. Ciertas variables con mbito limitado pueden pasarse y usarse dentro de un procedimiento diferente establecindolas como parmetros del mismo cuando realizamos la llamada. Estos parmetros y su tipo (en esencia variables locales del procedimiento) deben ser declarados en el momento de creacin de dicho procedimiento. Una vez creado correctamente un procedimiento, la manera de hacer alusin al mismo para su ejecucin es mediante su nombre (que le pondremos nosotros) y los parmetros asociados. Existe un tipo especial de procedimiento que cumple con todos los requisitos de los procedimientos normales pero que, adems, ofrece la posibilidad de retornar al programa principal un valor determinado y elaborado dentro del mismo procedimiento: son las funciones y, a diferencia de los procedimientos, hay que aplicarles un tipo de dato en su definicin, de tal modo que la variable a la que modifique sea del mismo tipo que la funcin propiamente dicha. Por ejemplo:
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 25

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Sub function potencia (dim x, n as byte) as longint dim i as byte i=0 result=1 if n>0 then for i=1 to n result=result*x next i end if end sub . Tmp=potencia(3,12) llamada a la funcin y asignacin de valor

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

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Tanto los procedimientos como las funciones, creadas o no por el usuario, hacen que un programa sea ms fcilmente entendible y traceable con el fin de detectar fallas (bugs), debido a que modularizan el cdigo y posibilitan el anlisis del mismo por partes funcionales. MikroBasic cuenta con multitud de funciones especficas que facilitan enormemente el trabajo de diseo y programacin. Se recomienda la utilizacin de la ayuda para aprender el uso debido de cada una de estas funciones y descubrir todas las posibilidades que presenta su uso. Complicaremos ahora la cosa un poquito ms, por supuesto hacindola ms interesante al aadir el uso de una pantalla LCD de 2 lneas por 16 caracteres, la cual podemos utilizar en el modo de 4 bits de datos u 8 bits de datos. En nuestro caso usaremos el bus de 4 bits que no es otro que los 4 bits ms significativos del bus de 8 bits.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 27

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
program LCD_1 'CONFIGURACION HARDWARE: 'LCD PIC 'D7 = PORTA.3 'D6 = PORTA.2 'D5 = PORTA.1 'D4 = PORTA.0 'RS = PORTB.0 'RW = PORTB.1 'EN = PORTB.2 main: Lcd_Config(PORTA,3,2,1,0,PORTB,0,1,2) Lcd_Cmd(LCD_CLEAR) Lcd_Cmd(LCD_CURSOR_OFF) bucle: Lcd_Out(1,1," HOLA AMIGOS ") Lcd_Out(2,1," DE AVIONICA ") Delay_ms(1000) GOTO bucle end.

Veamos la simulacin en Proteus:


28

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Los comandos especficos de manejo de displays LCD de MikroBasic son lo nico nuevo en este programa. Como podemos observar, el manejo de estos displays se ve reducido a la mnima expresin debido a su sencillez en este lenguaje de programacin: Lcd_Config(PORTA,3,2,1,0,PORTB,0,1,2) este comando especfico de MikroBasic sirve para informar de que puerto o puertos vamos a utilizar y cules pines del o de los mismos usaremos como bus de datos y cuales como bus de control. En este caso usaremos RA3, RA2, RA1 y RA0 como bus de datos de 4 bits y RB0, RB1 y RB2 como bus de control. Lcd_Cmd(LCD_CLEAR) este comando enva una instruccin especfica al procesador del display LCD. Para ver una lista de instrucciones/comandos especficos de los displays LCD del tipo Hitachi 44780, usaremos la ayuda de MikroBasic. ste concretamente realiza un limpiado de pantalla del LCD.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 29

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Lcd_Cmd(LCD_CURSOR_OFF) este comando hace desaparecer el cursor de la pantalla. Lcd_Out(1,1," HOLA AMIGOS ") este comando hace aparecer el mensaje comprendido entre las comillas dobles, en la lnea 1 y columna (o carcter) 1 del LCD. Para su uso habr que tener en cuenta (lgicamente) el nmero de lneas y de caracteres de que dispone nuestro display LCD (2x16, 4x16, etc.) y que slo puede ser usado con cadenas de texto (string). Lcd_Out(2,1," DE AVIONICA ") es el mismo comando que el anterior pero con distinto mensaje y se imprime en la lnea 2 del LCD en lugar de la lnea 1. Veamos ahora otro ejemplo de uso de display LCD partiendo del mismo circuito:
30

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
program LCD_2 'CONFIGURACION HARDWARE: 'LCD PIC 'D7 = PORTA.3 'D6 = PORTA.2 'D5 = PORTA.1 'D4 = PORTA.0 'RS = PORTB.0 'RW = PORTB.1 'EN = PORTB.2 dim i as byte main: Lcd_Config(PORTA,3,2,1,0,PORTB,0,1,2) Lcd_Cmd(LCD_CLEAR) Lcd_Cmd(LCD_CURSOR_OFF) bucle: for i=0 to 16 Lcd_Cmd(LCD_SHIFT_RIGHT) Lcd_Out(1,1," HOLA COMPAEROS") Lcd_Out(2,1," DE AVIONICA ") Delay_ms(300) next i for i=0 to 16 Lcd_Cmd(LCD_SHIFT_LEFT) Delay_ms(300) next i Delay_ms(1500) GOTO bucle end.

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.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

31

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Todo lo anteriormente visto, no es ms que una breve pincelada para familiarizarse con el uso de los microcontroladores PIC, MikroBasic y Proteus. Lo realmente interesante, desde el punto de vista de la instrumentacin, es todo lo que viene a continuacin: las conversiones A/D en primer lugar, el uso de interrupciones y mediciones de tiempo, PWM, etc. El uso de los conversores A/D tiene su aplicacin en todo tipo de mediciones y monitorizacin de seales, niveles de tensin y un largo etctera de aplicaciones derivadas.
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 32

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
En toda la gama de microcontroladores PIC existen muchos que incluyen conversores A/D en su configuracin hardware (adems de otras muchas funciones). En este caso se ha elegido el PIC16F876A que consta de 5 canales de conversin A/D de 10 bits cada uno (1024 muestras diferentes). Veamos el ejemplo: program ADC_1 Pasando a comentar lo nuevo del dim valorleido as word cdigo, lo primero que nos dim valorvisual as string[5] encontramos son los tipos de dato main: ADCON1=0x8E '%10001110, configura registro ADCON1 como lectura A/D de las variables: word y string que no 'justificada a la derecha y con frecuencia muestreo FOSC/2 comentaremos (mirar ayuda). 'todas las puertas del puerto sern digitales salvo AN0 y
'adems los voltajes de referencia sern VDD y VSS. TRISA.0=1 Lcd_Config(PORTC,3,2,1,0,PORTB,0,1,2) Lcd_Cmd(LCD_CURSOR_OFF) Lcd_Cmd(LCD_CLEAR) bucle: valorleido=Adc_Read(0) wordtostr(valorleido,valorvisual) Lcd_Out(1,3,valorvisual) Delay_ms(50) GOTO bucle end.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

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

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
valorleido=Adc_Read(0) esta instruccin almacena el valor ledo del puerto AN0 (Puerto A, pin 0) mediante Adc_Read(0) (read analog to digital converter data from channel 0). Hay que tener en cuenta que la lectura del dato de conversin A/D debe ser almacenado en una variable del tipo y longitud adecuados. En este caso la variable valorleido es numrica del tipo word por lo que puede contener datos de 16 bits de longitud (sin signo, es decir, de 0 a 65535). Como el dato suministrado por Adc_Read(0) tiene una longitud de 10 bits y hemos elegido justificacin a la derecha, los 6 bits ms significativos de la variable valorleido se rellenarn con ceros. wordtostr(valorleido,valorvisual) este procedimiento interno de MikroBasic convierte el VALOR almacenado en valorleido (del tipo word), en un valor string que es del tipo que podemos usar para visualizar directamente en el display LCD. Si el dato numrico de valorleido no tiene longitud suficiente como para ocupar toda la variable valorvisual, los huecos de la izquierda se rellenarn con el carcter espacio. Concretamente este programa nos muestra, directamente y sin elaboracin (raw), el valor ledo del canal A/D nmero 0, pero convertido en un tipo de dato que puede mostrarse en el display LCD (string).
T.M.A. (Avinica) Jos Luis Martnez Palenzuela 34

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
A modo de otros ejemplos de programacin, usando los montajes anteriores, tenemos los siguientes: 7 segmentos nodo comn: Otro juego de luces:

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

35

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Efectos de un programa para nodo comn usado en ctodo comn y viceversa:

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

36

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC
Otro juego de luces y otra posibilidad sencilla de mostrar un mensaje llamativo en un display LCD:

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

37

EL MICROCONTROLADOR Y SU USO EN INSTRUMENTACIN


INTRODUCCIN A LA SIMULACIN CON PROTEUS Y LA PROGRAMACIN CON MIKROBASIC

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.

T.M.A. (Avinica) Jos Luis Martnez Palenzuela

38