Vous êtes sur la page 1sur 32

MICROPROCESADORES Y MICROCONTROLADORES PARTE 1

ANTECEDENTES.

1.- MICROCONTROLADORES PIC. 2.- ESTRUCTURA INTERNA DE LOS MICROCONTROLADORES PIC. 3.- PINES DE LOS MICROCONTROLADORES PIC. 4.-PROGRAMACIN DE LOS MICROCONTROLADORES PIC 5.-FORMATO GENERAL DE UN PROGRAMA EN PICC 6.- DESCRIPCIN DEL DISPLAY LCD. 7 EMPLEO DE MOTOR DRIVERS: BA62XX Y L293.

1.-MICROCONTROLADORES PIC

Dentro del mundo de los microcontroladores, existen una gran variedad de dispositivos de varias marcas que ofrecen caractersticas muy variadas. Algunos tienen perifricos integrados tales como Convertidores Anlogo - Digital, Convertidores Digital - Anlogo, Mdulos de Modulacin PWM o SPWM, puertos seriales, etc; en cambio otros se ven mas ampliados o mas limitados en cuanto a sus perifricos integrados en la misma pastilla de circuito integrado.

Dentro de las principales diferencias entre los microcontroladores de la familia MICROCHIP, que es a la que pertenecen los PIC, y los de MOTOROLA, ATMEL, INTEL, ZILOG, ALTERA, entre otros, se encuentran las siguientes ventajas:

VENTAJAS DE LOS PIC EN RELACIN A OTROS MICROCONTROLADORES: PROCESAMIENTO DE FUNCIONES LGICAS Y ARITMTICAS COMPLEJAS, tales como funciones seno, coseno, tangente, punto flotante (potencias con entero y decimal), logaritmos, etc; as como funciones lgicas OR, AND, XOR, ETC. MANEJO EN LENGUAJES DE ALTO NIVEL: C, PASCAL, BASIC. MAYOR NMERO DE MDULOS TEMPORIZADORES (TIMERS). CONVERTIDOR ANLOGO DIGITAL DE 8 o 10 BITS Y 8 CANALES.
2

MEMORIA EEPROM DE GRAN CAPACIDAD. MEMORIA FLASH DE GRAN CAPACIDAD Y VELOCIDAD. VARIOS MDULOS DE CAPTURA Y MODULACIN POR ANCHO DE PULSO (PWM Y SPWM). MDULOS DE INTERRUPCIONES DE TIPOS: EXTERNA, DE TIEMPOS, DE COMUNICACIN PARALELA Y SERIAL, DE ESCRITURA Y LECTURA DE MEMORIA EEPROM, DE FIN DE CONVERSIN ANLOGA DIGITAL,etc. GRAN CAPACIDAD DE EROGACIN (SALIDA) DE CORRIENTE, que le permite no emplear buffers externos para cada pin de puerto. MANEJO DE GRANDES VELOCIDADES DE PROCESAMIENTO, QUE VAN DESDE 1MHZ HASTA VERSIONES QUE TRABAJAN A 100MHZ. MANEJO DE PUERTO USB EN ALGUNAS VERSIONES DE PIC. MANEJO DE MODULACIN POR RADIOFRECUENCIA DIGITAL PARA TRANSIMISIN Y RECEPCIN. Watch Dog Timer o temporizadores auto reseteables para bajo consumo (funciona anlogamente como el protector de pantalla de una PC comercial) Entre otras. As, podemos ver que los microcontroladores PIC ofrecen grandes ventajas en relacin a otros microcontroladores ms modestos, aunque siempre depender de la aplicacin particular el que se elija un tipo de micro en particular.
3

Dentro de la familia MICROCHIP, EXISTEN 4 SUBFAMILIAS que se caracterizan de la siguiente manera


PICS PEQUEOS: Su nomenclatura comienza con el nmero 12, tal que se definen como PIC12FXX o PIC12CXX. Son de 8 a 12 pines, trabajan normalmente con comunicacin serial al carecer prcticamente de pines de puertos, y tienen un consumo de corriente muy bajo, ya que son alimentados con solo 3 volts. Internamente manejan registros de 8 o 12 bits, por lo que son microcontroladores de 8 o 12 bits (de ah su nomenclatura).

PICS MEDIANOS: Su nomenclatura comienza con el nmero 16, tal que se definen como PIC16FXXX o PIC16CXXX. Son de 16 a 40 pines, trabajan con 2 a 4 puertos paralelos, tienen un consumo de corriente bajo, ya que son alimentados con 3 a 5 volts. Internamente manejan registros de 8 a 14 bits, por lo que son microcontroladores de 8 a 14 bits. Estos cuentan con capacidades de memoria interna tipo medio y cuentan con algunos perifricos complejos como CAD, mdulos PWM, Serial, entre otros.

PICS GRANDES: Su nomenclatura comienza con el nmero 18, tal que se definen como PIC18FXXX o PIC18CXXX. Son de 40 pines, trabajan con 2 a 6 puertos paralelos, tienen un consumo de corriente regular. Internamente manejan registros de 16 bits, por lo que son microcontroladores de 16 bits. Estos cuentan con capacidades de memoria interna grande, lo que permite trabajar en lenguajes de alto nivel y cuentan con varios perifricos complejos como CAD, mdulos PWM, Serial, entre otros.
4

DSPICS: Son grandes procesadores digitales de seales en un microcontrolador. Manejan hasta 32 bits de datos y velocidades hasta los 100MHz. Cuentan con un gran soporte de funciones matemticas para realizar clculos complejos como Transformada Rpida de Fourier (FFT) para realizar filtros digitales, matrices, determinantes, variables de estado, integrales, ecuaciones diferenciales, Transformada Z, entre otras. Cuentan con varios timers, varias interrupciones internas y externas, varios mdulos de PWM, Conversin A/D de alta resolucin y alta velocidad, entre otros. *En cualquiera de estos pics, la nomenclatura indica si tienen una memoria de tipo Flash (F) (muy rpidos) o son de tecnologa de memoria complementaria tipo MOSFET o CMOS (C) (de muy bajo consumo) 2.- ESTRUCTURA INTERNA DE LOS MICROCONTROLADORES PIC

La estructura interna de un microcontrolador tipo PIC est basada en buses bidireccionales internos que estn interconectados a un ACUMULADOR DE TRABAJO o REGISTRO WORK (W), que es en el que se almacenan los resultados de las operaciones de lgica y aritmtica realizados. Adems cuenta con cierta cantidad de registros de memoria interna tipo flash para acceder a un cdigo de programa. A stos bloques les acompaan otros bloques ya conocidos como los puertos paralelos y seriales, as como los del convertidor AD y mdulos de PWM, entre otros. La figura siguiente muestra la estructura interna de un PIC: 5

ESTRUCTURA INTERNA DE LOS MICROCONTROLADORES PIC

EJERCICIO: COLOQUE LOS NMEROS CORRECTOS QUE REPRESENTAN LA DESCRIPCIN DE LOS BLOQUE DEL PIC EN RELACIN A LA SIGUENTE TABLA:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

DECODIFICADOR DE INSTRUCCIONES. REGISTRO DE INSTRUCCIONES. MDULO DEL CONVERTIDOR ANLOGO DIGITAL. PUERTOS ANALGICOS DE ENTRADA Y DIGITALES DE I/O. PUERTOS DIGITALES DE I/O. GENERADOR DE TIEMPO DE CICLO MQUINA. MDULOS DE TEMPORIZADORES. STACK O ALMACEN INTERNO. MEMORIA DE PROGRAMA. MEMORIA DE DATOS. REGISTRO DE TRABAJO (ACUMULADOR). UNIDAD DE ARITMTICA Y LGICA. MDULO DE PUERTO SERIAL. MDULO DE M ODULACIN POR ANCHO DE PULSO (PWM). MEMORIA ELCTRICAMENTE BORRABLE Y PROGRAMABLE.
7

El PIC16F877 (Pic de tipo medio) como el mostrado en su estructura interna en sta figura, tiene adems las siguientes caractersticas generales:

As como las caractersticas de perifricos siguientes:

EJERCICIO: TRADUCIR A ESPAOL ESTAS DOS TABLAS DE CARACTERSTICAS 8

3.- PINES DE LOS MICROCONTROLADORES PIC


Todos los pines del PIC son de niveles TTL (0= 0V y 1 = 5V), excepto los pines del Convertidor Anlogo Digital que pueden admitir voltajes entre 0 y 5V de forma contnua (analgica).En las siguientes figuras se observa una tabla descriptiva de las terminales del PIC 16F877.

3.- PINES DE LOS MICROCONTROLADORES PIC


Terminales del PIC 16F877. o PIC 18F452

10

4.- PROGRAMACIN DE LOS MICROCONTROLADORES PIC


Todos los microcontroladores PIC pueden programarse en LENGUAJE MQUINA ENSAMLADOR (LENGUAJE DE BAJO NIVEL), y en LENGUAJES DE ALTO NIVEL, tales como el PASCAL, C++, BASIC, etc. Sin embargo, algunos no soportan grandes programas hechos en lenguajes de alto nivel debido a que el compilador emplea estructuras predefinidas que ocupan mucha memoria y tiempo de ejecucin. As, en la siguiente figura podemos ver las consecuencias de emplear lenguajes de bajo o alto nivel para estos microcontroladores: Tiempo de elaboracin del cdigo y algoritmo por el programador. Velocidad de trabajo del micro-1

Lenguaje de BAJO NIVEL

Lenguaje de ALTO NIVEL


Capacidad de memoria ocupada en el micro

En general, si se tiene una aplicacin grande pero se dispone de un PIC tambin grande, es preferible trabajar con un lenguaje de alto nivel, tal como el C++, ya que su estructura facilita bastante la programacin, sobre todo para mdulos como el display LCD o el CAD, que programarlos en ensamblador es demasiado complicado; en cambio en lenguaje C++, es muy sencillo usarlos.
11

La programacin en lenguaje C++ o PICC es muy sencilla, ya que define estructuras preestablecidas en la sintaxis muy similar al C++ de uso comn. Veamos ahora algunas estructuras sencillas de sintaxis en PICC:

4.1. ESTRUCTURAS PARA MANEJO DE PUERTOS:


DE SALIDA POR BIT: sintaxis:

Salida en nivel bajo: output_low(pin_nombre del pin); Salida en nivel alto: output_high(pin_nombre del pin); Ejemplos: output_low(pin_b0); //manda un cero por el pin RB0. output_high(pin_a3); //manda un uno por el pin RA3.
DE ENTRADA POR BIT: sintaxis:

variable=input(pin_nombre del pin);//La variable debe ser de tipo booleana de 1 bit //Esta funcin normalmente se emplea como condicin de una accin dependiente del valor de la entrada de ese pin particular, y viene acompaada por la estructura if, cuya sintaxis es: if (input(pin_nombre del pin)) { acciones a realizar si el pin indicado entra como un 1 lgico } O bien la sintaxis: if (!input(pin_nombre del pin)) { acciones a realizar si el pin indicado entra como un 0 lgico } Ejemplo: if (!input(pin_b5)) // pregunta por un 0 en el pin RB5 y si es verdad ... {output_high(pin_b7);} // saca un 1 por el pin RB7; Si no... Entonces saca un 12 else {output_low(pin_b7); } // 0 por el pin RB7. Nota: Al usar ELSE, el IF no lleva punto y coma.

DE SALIDA POR BYTE:

sintaxis:

output_nombre del puerto (dato a salir); Ejemplos: output_b (0xF0); //manda un F0 hexadecimal por el puerto RB. output_c (255); //manda un 255 decimal por el puerto RC. DE ENTRADA POR BYTE O REGISTRO: sintaxis: variable= input_nombre del puerto( ) ; Ejemplos: dato=input_ b (); //guarda en la variable el valor ledo en el puerto RB. entradas=input_ c (); //guarda en la variable el valor ledo en el puerto RC. 4.2. ESTRUCTURAS PARA MANEJO DE TIEMPOS: TIEMPOS:
sintaxis:

delay_ms(tiempo en milisegundos); delay_us(tiempo en microsegundos);


Ejemplos:

output_low(pin_b0); //manda un cero por el pin RB0. delay_ms(3000); // mantiene 3 segundos este pin en cero. output_high(pin_b0); //manda un uno por el pin RB0. delay_us(100); // mantiene 100 microsegundos este pin en uno. output_low(pin_b0); //manda un cero por el pin RB0.
13

4.3. ESTRUCTURAS PARA MANEJO DE INTERRUPCIONES: Las interrupciones son un elemento muy til en el diseo de programas, ya que permiten distraer la atencin del procesador slo cuando ocurre un evento determinado y no se requiere estar constantemente preguntando por dicho evento. Por ejemplo, cuando alguien presiona el botn de un elevador, el procesador se da cuenta de eso y acta, pero no est preguntando constantemente por cada botn todo el tiempo.

Las interrupciones son ejecutadas en subrutinas especiales que, obviamente, se realizan slo si se gener la interrupcin que las manda llamar. Dentro del conjunto de interrupciones que puede responder el PIC se encuentran: INTERRUPCIONES EXTERNAS. Generadas por flanco o por nivel, segn sea predefinida en el programa. Las interrupciones externas son las ms comunes. Se clasifican en: 1.- INTERRUPCIONES DE RECEPCIN SERIAL, cuando es recibido un dato por el puerto serial, entra a una subrutina que en PICC se llama #int_rda noclear // interrupcin para el uso del serial. Para emplearla basta con declarar en el programa principal la habilitacin global de las interrupciones como: enable_interrupts(global); y habilitar la interrupcin particula, que para la del serial es: enable_interrupts(int_rda); Luego se define la rutina de servicio de interrupcin (isr) en una llamada (void) y se ejecutar el cdigo que se encuentre dentro de esa llamada, como el siguiente ejemplo: void serial_isr()// subrutina de interrupcin del serial { //aqui ir lo que har cuando detecte una interrupcin en el serial al recibir, 14 // por ejemplo getc(). }

2.- INTERRUPCIN POR CAMBIO DE VALOR EN EL PUERTO B. Esta es muy usada cuando se lee un teclado matricial, ya que con cualquier tecla que se oprima se llama la atencin del procesador para leer la tecla particular y de paso realizar otras acciones como lo pueden ser el encender una lmpara para ver dicho teclado en la oscuridad (como lo hacen la mayora de los celulares). 3.- INTERRUPCIN POR CAMBIO DE VALOR EN EL PIN DE PUERTO RA4. Este pin del puerto A, es empleado no slo como pin de entrada/salida digital comn, sino que tambin es utilizado como entrada de conteo por flancos. Cada vez que sucede un flanco (de subida o bajada segn se programe) puede activar esta interrupcin. Puede ser empleada no solo para llevar la cuenta de un evento y registrarla en un contador interno, sino tambin sirve para darse cuenta que algo est presente en el exterior, como por ejemplo, un automvil que desea entrar a un estacionamiento o una persona que entra a una tienda. INTERRUPCIONES INTERNAS: Las ms comunes son: INTERRUPCIN DE TERMINACIN DE ESCRITURA DE LA EEPROM, INTERRUPCIN DE FIN DE CONVERSIN ANLOGA DIGITAL, INTERRUPCIN DE FIN DE CONTEO DE TIEMPO EN TIMERS, entre otras. Investigacin: Lea las hojas de datos del PIC18F877 y encuentre que otras fuentes de interrupcin contiene.
15

4.4. ESTRUCTURAS PARA MANEJO DE DISPLAY LCD Y TECLADO MATRICIAL: DISPLAY LCD: Primeramente, se debe declarar el uso del display LCD en la parte de las declaratorias en el encabezado del programa, colocando la sintaxis siguiente: #include <lcd_us.c>, o bien: #include <lcd.c> // DECLARA EL USO DE UN DISPLAY TIPO LCD DE CARACTERES UNSIGNED O SIN SIGNO. ES EL MS COMN DE LOS DISPLAYS DE 16X2. ASEGRESE DE TENER ESTE ARCHIVO (lcd_us.c) o (lcd.c) DENTRO DEL SUBDIRECTORIO DE "DRIVERS".RECUERDE INICIALIZAR EL DISPLAY AL COMENZAR EL PROGRAMA PRINCIPAL, EMPLEANDO: lcd_init();//inicializa lcd MANEJO POR POSICIONAMIENTO EN COORDENADAS: sintaxis: lcd_gotoxy(coordenada en x, coordenada en y); Esto mueve el cursor del display a la posicin sealada. Los rangos para x son de 1 a 16 y para y de 1 a 2. Ejemplo: lcd_gotoxy(3,2);// posiciona al cursor en la coordenada x=3, y=2. Y=1 Y=2
X= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 16

PONER UN CARCTER EN UNA COORDENADA:

sintaxis: lcd_putc(caracter"); Ejemplo: lcd_gotoxy(3,2);// posiciona al cursor en la coordenada x=3, y=2. lcd_putc(*"); // imprime en el display el carcter asterisco.

CONSIDERACIONES DE SIGNO Y RESULUCIN. Formato general de salida: Sintaxis: printf(lcd_putc,letrero o caracteres %wt",valor1,valor2,valoretc); El formato de salida toma la forma general %wt , donde w es opcional y puede ser de 1 a 9 para especificar la cantidad de caracteres que sern sacados, o de 01 a 09 indicando la cantidad de ceros cargados, o de 1.1 a 9.9 para datos de punto flotante. Aqu, t es el tipo y puede ser uno de los siguientes: C=Character. S=String or character. U=Unsigned int. x=Hex int (lower case output). X=Hex int (upper case output). D=Signed int.
17

e=Float in exp format. LX=Hex long int (upper case). ld=signed decimal long.

f=Float, Lx=Hex long int (lower case), lu=unsigned decimal long.

EJEMPLO: printf(lcd_putc,"DATO: %03u",i);// imprime la palabra DATO: y enseguida imprime el valor de la variable i (que puede ser por ejemplo el valor ledo de un puerto o de un convertidor A/D en un formato de 3 caracteres o dgitos enteros sin signo.

TECLADO MATRICIAL: En PICC el uso de un teclado matricial es muy similar a como se vi en la teora de uso de un teclado comn de 3 x 4. La diferencia aqu radica en que es factible almacenar los valores de los nmeros tecleados y su orden o peso en forma fcil y eficiente,-al menos ms fcil que ensamblador directo-. Considere el ejemplo de leer un teclado numrico de 3 x 4 puesto en el puerto B, donde B0,B1 y B2 son empleados para las columnas, y de B4 a B7 para los renglones respectivos. Considere tambin que se pretende almacenar los valores tecleados y asumir un peso de 100 para la primer tecla presionada, un peso de 10 para la segunda y un peso de 1 para la tercera. Considere que para almacenar dichos valores debe declararse una variable en forma de array. As, para este ejemplo la variable puede ser declarada como: 18 int dato[4],digito;

Y dentro del cdigo del programa principal, se puede escribir lo siguiente: //para preguntar por 1,4,7, * : output_low(pin_b1);delay_ms(10); output_high(pin_b2);delay_ms(10); output_high(pin_b3);delay_ms(10);

if (!input(pin_b4)) //si presiona tecla 1, {digito=digito +1;dato[digito]=1;}


if (!input(pin_b5)) //si presiona tecla 4, {digito=digito +1;dato[digito]=4;} if (!input(pin_b6)) //si presiona tecla 7, {digito=digito +1;dato[digito]=7;} if (!input(pin_b7)) //si presiona tecla *, {digito=digito +1;dato[digito]=*;
Enseguida, para preguntar si alguien presion las teclas 2,5,8, 0, el cdigo es muy similar al anterior, pero las condiciones de B1, B2 y B3 cambian: output_high(pin_b1);delay_ms(10); output_low(pin_b2);delay_ms(10); output_high(pin_b3);delay_ms(10); etc., Ahora, con el valor del nmero tecleado almacenado en el array dato[], puede usted multiplicarlo por 1, por 10 o 100 segn sea 19 necesario para representar unidades, decena o centenas.

5. FORMATO GENERAL DE UN PROGRAMA EN PICC


ESTE APARTADO TIENE LA FINALIDAD DE ESTABLECER LOS LINEAMIENTOS Y SINTAXIS PARA LA ELABORACIN DE UN PROGRAMA EN LENGUAJE C PARA MICROCONTROLADORES PIC DE MICROCHIP. AS, LOS PASOS GENERALES A SEGUIR SON: 1.-TECLEE EL PROGRAMA DESEADO EN EL EDITOR DE PICC. 2.- SALVE SU PROGRAMA. 3.- EN EL NOMBRE DEL ARCHIVO, DELE CLICK DERECHO Y SELECCIONE MAKE FILE PROJECT. Ver figura siguiente. 4.- PRESIONE EL CONO DE COMPILAR Y VERIFIQUE QUE NO TENGA ERRORES DE COMPILACIN. El compilador de PICC tiene en el men un icono de help. Ver

figura siguiente.
Dar click derecho y Presionar Make file project

Botn de compilacin

20

FORMATO GENERAL. EJEMPLO DE UN PROGRAMA COMPLETO:


1.- COMENTARIOS:LOS COMENTARIOS SE ESCRIBEN DESPUS DE DOBLE DIAGONAL (//) Y PUEDEN TAMBIN IR A LA DERECHA DE CUALQUIER INSTRUCCIN. NO SON COMPILABLES. CONVIENE COLOCAR UN ENUNCIADO AL INICIO INDICANDO QU HACE EL PROGRAMA Y QU TERMINALES DE ENTRADA Y SALIDA EMPLEA Y PARA QU. EJEMPLO: //PROGRAMA EN EL PIC 18F452 QUE LEE EL ESTADO DE 2 INTERRUPTORES Y MUEVE UN //MOTOR DE CD CONSTANTEMENTE DE UN SENTIDO A OTRO SIMULANDO UN SISTEMA DE //VIGILANCIA CON UNA CMARA ROTATORIA;ENTRADAS:RB0=SENSOR IZQ,RB1=SENSOR DER, //RB2=BOTN DE ACTIVACIN,RB3=BOTN DE PARO TOTAL;//SALIDAS:RB4=ACTIVACIN SMR, //RB5=ACTIVACIN SCMR,EMPLEANDO UN MOTOR DRIVER BA6209 Y UN MOTOR DE 12V DE CD 2.- LA INSTRUCCIN SIGUIENTE VA SIEMPRE AL INICIO Y DEFINE EL TIPO DE MICROCONTROLADOR A EMPLEAR. Ejemplo: #include <18f452.h> 3.- A PARTIR DE AQU SE COLOCAN LAS DECLARACIONES DE LOS DISPOSITIVOS, USOS, INCLUSIONES Y TIPOS DE FUSIBLES DE PROGAMACIN QUE SE EMPLEARN DURANTE EL PROGRAMA. NO TERMINAN CON PUNTO Y COMA. PUEDEN COLOCARSE AN CUANDO NO SE EMPLEEN, PERO SI SE EMPLEAN EN EL PROGRAMA DEBEN DE ESTAR FORZADAMENTE. SE DESCRIBE DE PREFERENCIA A SU DERECHA UN COMENTARIO DE SUS PARMETROS, COMO EN EL SIGUIENTE EJEMPLO:

21

#device adc=8 //USO DE CONVERTIDOR ANLOGO DIGITAL DE 8 BITS. PUEDEN SER 10 BITS. #use delay(clock=12000000) //SE DEFINE EL USO DEL CRISTAL EMPLEADO EN HERTZ, //PUEDE SER DE 12000000=12MHZ, DE 4000000=4MHZ o 455000 = 455KHz.. #fuses HS,NOWDT,NOPROTECT,NOLVP //HS=FUSIBLES DE ALTA VELOCIDAD,NOWDT=NO USO DEL FUSIBLE DEL WATCH DOG TIMER, NOPROTECT=FUSIBLE DE NO PROTECCIN YA QUE SI SE DEJA PROTEGIDO JAMS SE VOLVER A REGRABAR EL PIC(CUIDADO CON ESTO), //FUSIBLE ACTIVO DE NOT LOW VOLTAGE PROGRAMMING O DE NO ACTIVA LA PROGRAMACIN DE USO A BAJO VOLTAJE. #include <lcd.c> // DECLARA EL USO DE UN DISPLAY TIPO LCD DE CARACTERES //UNSIGNED O SIN SIGNO. ES EL MS COMN DE LOS DISPLAYS DE 16X2. ASEGRESE DE //TENER ESTE ARCHIVO (lcd.c) DENTRO DEL SUBDIRECTORIO DE "DRIVERS". #use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7) // SE DECLARA EL USO DE LA UNIDAD //DE COMUNICACIN SERIAL TIPO RS232, DONDE SE DEFINE SU VELOCIDAD Y LOS PINES //QUE SE EMPLEARN PARA TRANSMISIN (xmit=PIN_C6) Y RECEPCIN (rcv=PIN_C7 ). #include <stdlib.h> //DEFINE EL USO DE LA LIBRERA ESTANTAR, QUE ES LA QUE //PERMITE TRABAJAR EN LENGUAJE "C" Y NO EN ENSAMBLADOR DIRECTO. #include <input.c>//DEFINE EL EMPLEO DE ENTRADAS DEFINIDAS EN EL PROGRAMA. #include <math.h> DEFINE EL EMPLEO DE FUNCIONES MATEMTICAS.

22

--CABE MENCIONAR QUE CUALQUIER INSTRUCCIN PUEDE CONSULTARSE EN CUANTO A SU USO Y SINTAXIS EN LA PESTAA "HELP" (PARTE SUPERIOR DE ESTE EDITOR) Y LUEGO EN EL SUBMEN LLAMADO "BUILT IN FUNCTIONS", SELECCIONANDO LUEGO LA INSTRUCCIN, O BIEN POSICIONANDOSE EN CUALQUIER INSTRUCCIN Y DAR CLICK DERECHO PARA OBSERVAR EL HELP. 4.- AQU SE DECLARARN LAS CONSTANTES Y VARIABLES A USAR. SE DECLARA PRIMERO EL TIPO; ES DECIR, SI SON DE TIPO CARACTER (CHAR), DE TIPO ENTERO (INT), DEL CUAL POR CIERTO HAY VARIOS SUBTIPOS COMO EL INT16 O ENTERO LARGO, ETC. PARA CADA TIPO SE PUEDEN DEFINIR SUBGRUPOS O VECTORES, LOS CUALES SE DEFINEN CON UN PAR DE PARNTESIS CUADRADOS [] INDICANDO QUE LA VARIABLE ES UN VECTOR O UNA MATRIZ BIDIMENSIONAL, TAL QUE P.EJ: DATO[4] DEFINE A LA VARIABLE DATO COMO UN VECTOR DE 5 ELEMENTOS INDEPENDIENTES LLAMADOS DATO[0], DATO[1], DATO[2],DATO[3],Y DATO[4] USABLES EN EL PROGRAMA COMO 5 ESPACIOS DE MEMORIA REGISTRABLE Y MODIFICABLE PARA TRABAJAR. char datoin,entrada,hola; int i,j,k,digito,dato[4],tecleados,oportunidades,clave[4]; int vector1[4]; 5.- AQU SE COLOCARN LAS RUTINAS DE INTERRUPCIONES QUE SE VAYAN A EMPLEAR, COMO LO PUEDEN SER LA INTERRUPCIN DE TRANSMISIN Y RECEPCIN SERIAL, LAS INTERRUPCIONES EXTERNAS, LAS INTERRUPCIONES DEL CONVERTIDOR ANLOGODIGITAL, Y TODAS LAS QUE SE USEN PARA UN PROGRAMA ESPECFICO.

23

TAMBIN SE COLOCA AQU EL GRUPO DE SUBRUTINAS DE USO PROPIO (GENERADAS POR EL PROGRAMADOR SEGN SEAN SUS NECESIDADES), QUE SUELEN COLOCARSE CUANDO EN EL PROGRAMA SE VA A TENER LA NECESIDAD DE REPETIR EN MLTIPLES OCASIONES UN GRUPO DE INSTRUCCIONES. LA PALABRA RESERVADA VOID ES UNA "LLAMADA" A QUE SE GENERE YA SEA UNA SUBRUTINA DE INTERRUPCIN O UNA SUBRUTINA DEL PROGRAMADOR. ENTRE EL PARNTESIS QUE LE SIGUE A LA PALABRA VOID Y EL NOMBRE DE LA SUBRUTINA, SE COLOCAN SI SE REQUIERE UN PARMETRO QUE ES COLOCADO PARA REALIZAR LA INTERFASE ENTRE UNA PARTE DEL PROGRAMA Y LA SUBRUTINA. #int_rda noclear // interrupcin para el uso del serial void serial_isr()// subrutina de interrupcin del serial { //aqui ir lo que har cuando detecte una int en el serial al recibir, // por ejemplo getc(). } EJEMPLO DE SUBRUTINA: void borrar()// ESTE ES PRECISAMENTE UN EJEMPLO DE SUBRUTINA GENERADA POR EL //PROGRAMADOR. LO QUE SE ENCUENTRA ENTRE LLAVES ES LO QUE EJECUTA LA SUBRUTINA //CADA VEZ QUE ES LLAMADA EN CUALQUIER PARTE DEL PROGRAMA. SI NO HAY NECESIDAD //DE USO DE PARMETROS DE TRANSFERENCIA, SE DEJA VACO EL ESPACIO ENTRE LOS //PARNTESIS DESPUS DEL NOMBRE DE LA SUBRUTINA.. EJEMPLO: void rojo() { output_high(pin_c0);output_low(pin_c1);output_low(pin_c2); } void ambar() { output_low(pin_c0);output_high(pin_c1);output_low(pin_c2); } void verde() { output_low(pin_c0);output_low(pin_c1);output_high(pin_c2); }

24

7.- AQU COMIENZA EL PROGRAMA PRINCIPAL, CON LA INSTRUCCIN VOID MAIN() TENGA MUCHO CUIDADO EN NO OLVIDAR QUE POR CADA RUTINA, SUBRUTINA, SENTENCIA IF , SENTENCIA WHILE, SENTENCIA WAIT, SENTENCIA FOR, ETC, DEBE HABER UNA LLAVE ABIERTA Y UNA CERRADA. TENGA LA BUENA COSTUMBRE DE ESCRIBIR EL COMENTARIO DE QUIN ES CADA LLAVE QUE SE CIERRA. void main()// begin principal EJEMPLO DE UN PROGRAMA PRINCIPAL: void main()// begin del programa principal { configuraciones(); while(true) { if (input(pin_c5)) { rojo(); delay_ms(2000); ambar(); delay_ms(1000); verde(); delay_ms(3000); } else { apagatodo(); } }//del while }// final

25

6.- DISPLAYS LCD.


Los Displays de Cristal Lquido (LCD) son muy empleados en la actualidad gracias a su facilidad de uso (al menos manejndolo en lenguajes de alto nivel), bajo consumo de energa, buen manejo de exhibicin de caracteres alfanumricos y fcil conectividad a microcontroladores. En la siguiente figura se muestran algunos tipos de LCD ms comunes: LCD PARALELOS LCD SERIAL

26

Tabla de caracteres de exhibicin del LCD tipo 16X2

PDF DISPLAY LCD 16X2 TM162ABA6

27

Para un LCD en general, la descripcin de sus siglas es como se muestra en la siguiente figura, colocando como ejemplo el mostrado en la pgina anterior. As mismo, se exhibe la descripcin de sus terminales.

28

En la figura siguiente se exhibe el diagrama de conexin de las terminales de un LCD de 16 x 2 hacia un microcontrolador PIC.

En la seccin de programacin en PICC se analizan las instrucciones para manejar el LCD. 29

7.-MOTOR DRIVERS: BA62XX Y L293 a.- MOTOR DRIVER BA62XX:


El Motor Driver o manejador de motores tipo BA, tiene 3 tipos de circuitos: el BA6209, BA6219 y BA62298. Los tres tipos son idnticos en su configuracin y funcionamiento; varan en cuanto el voltaje y corrientes manejadas. Consulte de tarea sus especificaciones. El manejador de motores tipo BA, funciona como un PUENTE H, donde a travs de la activacin de transistores se logra la conduccin de energa hacia el motor. Observe la siguiente figura, la cual es un puente H con transistores. Si activamos los transistores A y B, desactivando los C y D, el motor girar en un sentido. Al desactivar A y B y activando C y D, el motor girar en sentido contrario. Si desactivamos los 4 transistores el motor se apagar. La condicin de todos encendidos nunca debe ocurrir, ya que existir un corto circuito con la fuente de alimentacin.

PDF DEL BA6229

30

Para activar el Motor Driver o manejador de motores tipo BA, se tiene que considerar que al cambiar de giro, deben apagarse los transistores que estaban activos y dejar un tiempo muerto antes de activar el otro par de transistores, ya que los transistores no se apagan de forma inmediata. Con unos 10 milisegundos de tiempo muerto entre activaciones es suficiente. En la figura siguiente se observa una configuracin tpica del BA6229 para controlar el sentido de giro de un motor de CD de 12 o 24 volts a 1 Ampere. En las terminales A y B se controla digitalmente el sentido de giro, de acuerdo a la tabla que se muestra. Este circuito est protegido ante la condicin A=1 y B=1, que no es posible en el puente H tradicional, como ya se explic. La terminal 4 de ste circuito puede ser usada para regular la velocidad del motor, ya que es la terminal de control de voltaje de salida. Esta puede colocarse a travs de un potencimetro como divisor de voltaje, a travs de un zener (voltaje de salida fijo a VZ), o a travs de un circuito de Modulacin por Ancho de Pulso (PWM).

BA6229 A 0 0 1 1 B 0 1 0 1 MOTOR MOTOR MOTOR MOTOR MOTOR

1 2 3 4 5 6 7 8 9 10
A B
+ 0.1uF + 0.1uF

Resistencia de disipacin

47 5W

+12v

Terminal de control de voltaje Terminales de control de giro

+12v

+12v

Motor o carga
31

b .- MOTOR DRIVER L293 : INVESTIGAR LAS CARACTERSTICAS DEL CIRCUITO Y UN EJEMPLO DE USO ENABLE1 (EN1) SE EMPLEA PARA ACTIVAR LOS BUFFER INTERNOS 1 y 2. SI EN1=0, EL MOTOR =OFF. SI EN1=1, EL MOTOR =ON. SI EN1= PULSOS PWM, ENTONCES EL MOTOR SE CONTROLA EN SU VELOCIDAD DIGITALMENTE.

Las combinaciones para las entradas de 5volts de IN1 e IN2, as como de IN3 e IN4 son idnticas a las del motordriver tipo BA

IM<0.5A

IM<0.5A

Vs determina el voltaje de salida hacia el motor, y por tanto su velocidad. 0 < Vs < +Vss 32

Vous aimerez peut-être aussi