Você está na página 1de 28

Manual de prcticas de MATeo

Microcontrolador PIC18F4550
19/01/2013 MATeo Corp Diseador de la tarjeta MATeo: M.C. Flavio Lpez Medina

Manual de Practicas de MATeo

1.1 Que es MATeo? MATeo es una tarjeta electrnica en principio para aprender a programar Microcontroladores PIC y desarrollar prototipos Mecatrnicos. Actualmente la tarjeta tiene dos aplicaciones, la primera usarla como tarjeta entrenadora y la segunda utilizarla como tarjeta de adquisicin de datos con el software LabVIEW, ya que cuenta con una librera desarrollada por el diseador, de la cual se har mencin ms adelante. La tarjeta est basada en un Microcontrolador PIC 18F4550, la cual es el cerebro de esta. En la figura 1 se muestra la tarjeta.

Fig. 1: Tarjeta MATeo. El proyecto MATeo Nace a principios del ao 2012, como una idea que tuve de disear y desarrollar una tarjeta que pudiera ser capaz de ser programada en lenguaje C sin la necesidad de programadores externos y que adems pudiese ser adoptada como una plataforma flexible y fcil de usar. De las principales caractersticas destacan de dicha tarjeta son: 1) No necesita programadores externos para programar el Micro 2) La comunicacin entre el la tarjeta y la PC es va USB, sin la necesidad de circuitos integrados como un FTDI. 3) Se programa en lenguaje de alto nivel "C". 4) Se puede utilizar como tarjeta de adquisicin de datos 5) La alimentacin de la tarjeta se suministra del mismo puerto USB o de manera externa. 6) Cuenta con headers de conexin serigrafados de los puertos I/O. Es de destacar que como MATeo se programa en Lenguaje C, el cdigo generado para la tarjeta MATeo puede ser fcilmente implementado en otro microcontrolador PIC sin tener que hacer grandes cambios.

M.C. FLM

Manual de Practicas de MATeo

MATeo puede tomar informacin del entorno a travs de sus pines de entrada/salida de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. Tambin se pueden crear interfaces para comunicar a MATeo con una PC a travs de un software como MATLAB, LabVIEW, C#, Processing por mencionar algunos. En la figura 2 se muestra la estructura de comunicacin de MATeo.

Comunicacin a PC

MATeo

Sensores y Actuadores

Fig. 2: Estructura de comunicacin de MATeo.

M.C. FLM

Manual de Practicas de MATeo

1.2 Programacin y IDE de MATeo El microcontrolador que tiene MATeo se programa mediante el lenguaje C (Compilador C CCS) y su IDE (compilador) es el PCW como se ilustra en la figura3.

Fig. 4: Compilador PCW. Una vez que se halla creado un programa en C (ver la seccin de prcticas), se compila en PCW y este genera un archivo con extensin HEX en cual se debe de cargar en MATeo, para ello se tiene un programa llamado "MATeo USB" el cual permitir cargar los archivos HEX en la tarjeta. En la figura 5 se muestra la interfaz para programar la tarjeta.

Fig. 5: MATeo USB.

M.C. FLM

Manual de Practicas de MATeo

1.3 Caractersticas de MATeo Como se mencion antes, MATeo se basa en un PIC 18F4550 como el de la figura 6. En la tabla 1 se presentan las caractersticas elctricas de MATeo.

Fig. 6: PIC 18F4550. Microcontrolador Voltaje de funcionamiento Voltaje de entrada (recomendado) Voltaje de entrada (limite) Pines E/S digitales Pines de entrada analgica Intensidad por pin Intensidad en pin 3.3V Memoria Flash SRAM EEPROM Velocidad de reloj PIC 18F4550 5V 7-12V 6-20V 27 (2 proporcionan salida PWM) 6 (8 y 10 bits de resolucin) 40 mA 50 mA 32 KB (PIC 18F4550) 2 KB (PIC 18F4550) 256 Bytes (PIC 18F4550) 8 o 20 MHz

Tabla 1: Caractersticas Elctricas de MATeo.

M.C. FLM

Manual de Practicas de MATeo

1.4 Disposicin de pines I/O y alimentacin de MATeo En la figura 7 se presenta la disposicin de los pines I/O, alimentacin, conexin USB, LEDs indicadores y botones de conexin y reset con los que cuenta MATeo. Tambin se puede alimentar la tarjeta de manera externa con un voltaje entre 7 a 12 V siempre y cuando esta no est conectada al puerto USB, dicha alimentacin puede ser tomada de una batera o fuente de poder y ser utilizada por la salida VEXT.

Fig. 7: Pines I/O MATeo. 1.5 Implementacin PC-MATeo- Elementos I/O Primero se realiza el programa en cdigo C, se compila en el software PCW el cual genera un archivo con extensin HEX con el cual se puede usar para hacer una simulacin en Proteus y que el caso que nos ocupa, lo utilizaremos para cargarlo a la tarjeta con el IDE MATeo USB, dando click en el botn abrir archivo y buscar el archivo HEX y posteriormente click en el botn Programar y finalmente click en el botn reset para que empiece a ejecutarse el programa en la tarjeta. Ver figura 8.

Fig. 8: Implementacin MATeo.

M.C. FLM

Manual de Practicas de MATeo

Prctica #1: LED intermitente Objetivo: Enciende un led por 1 segundo y apaga un led por 1 segundo por el pin RB0. Materiales PC MATeo Cable para impresora LED Protoboard Resistencia de 220 Diagrama Esquemtico

Cable para protoboard

Conexin Protoboard + MATeo

MATeo R-1
P I C 18 f 4 5 5 0

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

M.C. FLM

Manual de Practicas de MATeo

/////////////////////////////////////////////////////////////////// // // // Prctica #1 Led Intermitente // // // // by M.C. Flavio Lpez Medina // ////////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" //PIC A USAR #use delay(clock=48000000) #use fast_io(B) //Optimizamos Entradas/Salidas del puerto B #build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no se pone se //desconfigura el PIC) //------------------------------------------------------------------------------void main(void) { set_tris_B(0b00000000); output_low(PIN_B0); while(TRUE) { output_high(PIN_B0); delay_ms(1000); output_low(PIN_B0); delay_ms(1000); } } //Funcin Principal

//Establecemos el pin RB0 al RB7 como salidas //Inicializamos el pin RB0 a "0" lgico

//Pone a 1 lgico (5 volts) el pin RB0 (Enciende el LED) //Retardo de 1000 milisegundos (1s = 1000ms) //Pone a 0 lgico (0 volts) el pin RB0 (Apaga el LED) //Retardo de 1000 milisegundos (1s = 1000ms) //Fin del ciclo While //Fin de la funcin main

Actividad: 1. Modifique el cdigo para que el LED este encendido por 100 milisegundos y apagado por 1000 milisegundos. 2. Modifique el cdigo para que el LED se encienda cuando el programa comience y se mantenga encendido. 3. Modifica el cdigo para que el LED este encendido por 500 milisegundos y apagado por 500 milisegundos utilizando una sola instruccin output_high y una instruccin delay_ms. Ayuda utiliza un operador Booleano y una variable extra.

M.C. FLM

Manual de Practicas de MATeo

Prctica #2: LED intermitente funcin toggle Objetivo: Enciende un led por 1 segundo y apaga el mismo led por 1 segundo por el pin RB0, los diagramas al igual que los materiales son iguales que en la prctica #1, pero el cdigo del programa es diferente, ya que ahora se utiliza la funcin "toggle" la cual complementa el valor de pin. /////////////////////////////////////////////////////////////////// // // // Prctica #2 Led Intermitente // // // // by M.C. Flavio Lpez Medina // ////////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" //PIC A USAR #use delay(clock=48000000) #use fast_io(B) //Optimizamos Entradas/Salidas del puerto B #build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no se pone se //desconfigura el PIC) //------------------------------------------------------------------------------void main(void) { set_tris_B(0b00000000); output_low(PIN_B0); while(TRUE) { output_toggle(PIN_B0); 1 delay_ms(1000); } } //Funcin Principal

//Establecemos el pin RB0 al RB7 como salidas //Inicializamos el pin RB0 a 0 lgico

//Cambia el estado del pin RB0 ejemplo 1 a 0 de 0 a //Retardo de 1000 milisegundos //Fin del ciclo while //Fin de la funcin Main

Actividad: 1. Modifique el cdigo para que el LED este encendido por 200 milisegundos y apagado por 1000 milisegundos.

M.C. FLM

Manual de Practicas de MATeo

Prctica #3: Encender LED con pulsador Objetivo: Mientras el push button se mantenga presionado un LED enciende, en caso contrario el LED se apaga. Materiales PC MATeo Cable para impresora LED Protoboard Resistencia de 220 Diagrama Esquemtico

Push button Resistencia de 10 K Cable para protoboard

Conexin Protoboard + MATeo

MATeo R-1

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

P I C 18 f 4 5 5 0

10

M.C. FLM

Manual de Practicas de MATeo

/////////////////////////////////////////////////////////////////// // // // Prctica #3 Led + Pulsador // // // // by M.C. Flavio Lpez Med // ////////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" //PIC A USAR #use delay(clock=48000000) #use fast_io(B) //Optimizamos Entradas/Salidas del puerto B #build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no lo ponen //desconfiguran el PIC) //------------------------------------------------------------------------------void main(void) { set_tris_B(0b00000001); output_low(PIN_B1); while(TRUE) { if(input(PIN_B0)){ //SI el pin RB0 esta en alto (1) ... output_high(PIN_B1);} //Enciende el led conectado a el pin RB1 else{ //DE LO CONTRRIO ... output_low(PIN_B1);} //apagar led conectado a el pin RB1 } } //Fin del ciclo while //Fin de la funcin Main //Funcin Principal

//pin RB1-RB7 salidas (0) excepto RB0 entrada (1) //Inicializamos el pin RB1 a 0 lgico

Actividad: 1. Modifique el cdigo para que cuando dos push button se presionen el LED se prenda, utilice un operador lgico && (and). 2. Modifique el cdigo para que cuando se presione el push button el LED cambie de estado, si esta en ON pase a OFF y viceversa cuando este en OFF pase a ON. 3. Con dos botones (BT1 y BT2) y dos leds (LED1 y LED2), encender el LED1 solo cuando cundo presiones el BT1 y encender el LED2 solo cuando presiones el BT2.

11

M.C. FLM

Manual de Practicas de MATeo

Prctica #4: Corrimiento de LEDs Objetivo: Realizar un corrimiento de 8 leds por el puerto B, encendiendo un led a la vez sin que el anterior se a pague de derecha a izquierda en lapsos de tiempo entre cada led de 200 ms y adems cuando se llegue a encender el ultimo led, en ese momento que comience de nuevo el corrimiento. Materiales PC MATeo Cable para impresora 8 leds Diagrama Esquemtico

Protoboard Resistencia de 220 Cable para protoboard

Protoboard + MATeo

MATeo R-1

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0
P I C 18 f 4 5 5 0

12

M.C. FLM

Manual de Practicas de MATeo

/////////////////////////////////////////////////////////////////// // // // Practica #4 Corrimiento de LEDs // // // // by M.C. Flavio Lpez Medina // ///////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" //PIC A USAR #use delay(clock=48000000) #use fast_io(B) //Optimizamos Entradas/Salidas del puerto B #byte portb=0xF81 //Direccin del registro PORTB (ver datasheet) #build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no lo ponen //desconfiguran el PIC) //-------------------------------------------------------------------------------

void main(void) { set_tris_B(0b00000000); portb=0b00000000; while(TRUE) { portb=0b00000001; delay_ms(200); portb=0b00000010; delay_ms(200); portb=0b00000100; delay_ms(200); portb=0b00001000; delay_ms(200); portb=0b00010000; delay_ms(200); portb=0b00100000; delay_ms(200); portb=0b01000000;

//Funcin Principal

//pin RB0-RB7 salidas (0) //inicializamos el puerto B a cero

//Enciendo solo el Led1 conectado al pin RB0 //Retardo de 200 milisegundos //Enciendo solo el Led2 conectado al pin RB1 //Retardo de 200 milisegundos //Enciendo solo el Led3 conectado al pin RB2 //Retardo de 200 milisegundos //Enciendo solo el Led4 conectado al pin RB3 //Retardo de 200 milisegundos //Enciendo solo el Led5 conectado al pin RB4 //Retardo de 200 milisegundos //Enciendo solo el Led6 conectado al pin RB5 //Retardo de 200 milisegundos //Enciendo solo el Led7 conectado al pin RB6
M.C. FLM

13

Manual de Practicas de MATeo

delay_ms(200); portb=0b10000000; delay_ms(200); } }

//Retardo de 200 milisegundos //Enciendo solo el Led8 conectado al pin RB7 //Retardo de 200 milisegundos //Fin del ciclo while //Fin de la funcin Main

En el aula les comento a mis alumnos que llevan programacin, que un programa el cual realiza una tarea especfica, puede tener 200 lneas de cdigo y otro puede tener 50 lneas de cdigo, no significa que la persona que realizo el programa de 200 lneas este mal, ni mucho menos que no sepa programar, ms bien esto se debe a la experiencia y habilidad de cada programador, pero los dos programas al final cumplen con el objetivo. De esta manera lo que trato de decir es que los cdigos que presento en este manual pudieran fcilmente ser optimizados, ya que no son la nica solucin para resolver el problema. A continuacin les presento un nuevo cdigo para cumplir con el objetivo de la practica nmero 4, el cual contiene menos lneas de cdigo. La configuracin del PIC es igual que la practica # 4. //------------------------------------------------------------------------------int i; void main(void) { set_tris_B(0b00000000); while(TRUE) { portb=0b00000001; delay_ms(250); for(i=1;i<8;i++) { portb=portb*2; delay_ms(500); } } } //Estado inicial del puerto B //Variable i de tipo entero para el ciclo for //Funcin Principal

//pin RB0-RB7 salidas (0)

//El puerto B se multiplica por 2 //Retardo de 200 milisegundos //Fin del ciclo while //Fin de la funcin Main

Actividad: 1. Los leds deben de realizar la misma secuencia de encendido pero ahora de izquierda a derecha.

14

M.C. FLM

Manual de Practicas de MATeo

Prctica #5: Display de 7 Segmentos Objetivo: Controlar el Display de 7 segmentos de ctodo comn y mostrar una secuencia del 0 al 9 de manera ascendente con lapsos de tiempos entre cada nmero de 1 segundo. Materiales PC Protoboard MATeo Resistencia de 220 Cable para impresora Cable para protoboard Display de 7 Segmentos, ctodo comn Recuerde que un display de 7 segmentos es un arreglo de leds en paralelo y que al aplicarle un voltaje adecuado entre las terminales nodo y ctodo prendera un segmento. Diagrama Esquemtico

Conexin Protoboard + MATeo

MATeo R-1

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

P I C 18 f 4 5 5 0

15

M.C. FLM

Manual de Practicas de MATeo

////////////////////////////////////////////////////////////////// // // // Practica #5 Display de 7 segmentos // // // // by M.C. Flavio Lpez Medina // ////////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" //PIC A USAR #use delay(clock=48000000) #use fast_io(B) //Optimizamos Entradas/Salidas del puerto B #byte portb=0xF81 //Direccin del registro PORTB (ver datasheet) #build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no lo ponen desconfiguran el PICxxx) //------------------------------------------------------------------------------//Arreglo de nmeros para mostrar por el display de 7 segmentos int numeros[]= { 63, //Codigo del digito 0 en decimal el 63 = 00111111 en binario 6, //Codigo del digito 1 en decimal el 6 = 00000110 en binario 91, //Codigo del digito 2 en decimal el 91 = 01011011 en binario 79, //Codigo del digito 3 en decimal el 79 = 01001111 en binario 102, //Codigo del digito 4 en decimal el 102= 01100110 en binario 109, //Codigo del digito 5 en decimal el 109= 01101101 en binario 125, //Codigo del digito 6 en decimal el 125= 01111101 en binario 7, //Codigo del digito 7 en decimal el 7= 00000111 en binario 127, //Codigo del digito 8 en decimal el 127= 01111111 en binario 111, //Codigo del digito 9 en decimal el 111= 01101111 en binario }; int i; //i es la variable para sellecionar el # del arreglo void main(void) //Funcin Principal { set_tris_B(0b00000000); while(TRUE) { for(i=0;i<=9;i++){ portb=numeros[i]; delay_ms(1000); } } } //pin RB1-RB7 salidas (0) excepto RB0 entrada (1)

//Enciende el led conectado a el pin RB1 //Retardo de 1 seg = 1000 mseg

//Fin del ciclo while //Fin de la funcin Main

16

M.C. FLM

Manual de Practicas de MATeo

La siguiente figura muestra la configuracin del display de 7 segmentos.

Tambin puede hacer uso del software llamado "7 Seg" para tener una idea ms clara sobre la configuracin del display. Actividad: 1. Realice cambios en el retardo para que en el display cada nmero tarde 500 milisegundos en ser mostrado. 2. Modifique los nmeros decimales por sus equivalentes en hexadecimal, por ejemplo el nmero 63 en hexadecimal es 3F y en lugar de poner 63 se coloca 0x3F que le indica al micro que lo interprete en hexadecimal y observe que sucede. 3. Con la ayuda del software "7 Seg" haga que en el display adems de mostrar los nmeros del cero al nueve, tambin muestre las letras A, b, C, d,E y F. 4. Agregue un Push Button al puerto que usted quiera excepto al B que es el que se usa para el display, el cual permita controlar los cambios de los caracteres mostrados en el display, es decir al presionar el push el display debe de cambiar al siguiente carcter.

17

M.C. FLM

Manual de Practicas de MATeo

Prctica #6: LCD 16X2 Objetivo: Controlar un LCD de 16x2 que muestre una serie de caracteres en las dos filas de la pantalla. Materiales PC MATeo Cable para impresora LCD de 16x2 Diagrama Esquemtico

Protoboard Un potencimetro de 10K Cable para protoboard

Conexin Protoboard + MATeo

MATeo R-1

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

P I C 18 f 4 5 5 0

18

M.C. FLM

Manual de Practicas de MATeo

//////////////////////////////////////////////////////////////////// // // // Ejemplo 6 LCD // // // // by M.C. Flavio Lpez Medina // /////////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" //PIC A USAR #use delay(clock=48000000) #include "lcd.c" //Librera del LCD de 16 x 2 #build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no lo ponen //desconfiguran el PICxxx) //------------------------------------------------------------------------------void main(void) { lcd_init(); while(TRUE) { lcd_gotoxy(1,1); printf(lcd_putc,"Hola Mecatronica\n"); printf(lcd_putc,"M A T e o . . ."); //El lcd inicia fila 1, columna 1 //Imprime en el LCD //Imprime en el LCD //Funcin Principal

//Borra y configura el LCD

} }

//Fin del ciclo while //Fin de la funcin Main

Nota: Para la simulacin en Proteus es necesario que la velocidad del cristal sea de 4 MHZ en lugar de 48 MHZ, ya que es la frecuencia a la cual funciona el LCD en este simulador. Por tanto es necesario cambiar la lnea que indica la velocidad de 48 000000 HZ por 4 000000 Hz solo cuando se realice la simulacin, en caso contrario si se va a implementar de manera fsica en la tarjeta MATeo se deja como 48 MHZ.

Actividad: 1. Comente la lnea del comando lcd_gotoxy(1,1) y observe que sucede 2. Elimine los caracteres "\n" del primer printf y observe que sucede. 3. El LCD solo puede mostrar 16 caracteres por cada fila (dos filas en este caso) escriba la frase "Bienvenidos al curso de MATeo" en lugar de " Hola Mecatronica" y observe que sucede.

19

M.C. FLM

Manual de Practicas de MATeo

Prctica #7: LCD 16X2 + Push Button Objetivo: Mostar en un LCD de 16x2 el nmero de veces que se presiona un Push Button conectado al pin RB0. Materiales PC MATeo Cable para impresora LCD de 16x2 Diagrama Esquemtico

Protoboard Un potencimetro de 10K Cable para protoboard Push Button

1 Resistencia de 1K

Conexin Protoboard + MATeo


A B C D E F G H I J 1 5 10 15 20

10

15

20

MATeo R-1

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

P I C 18 f 4 5 5 0

20

M.C. FLM

Manual de Practicas de MATeo

////////////////////////////////////////////////////////////////// // // // Ejemplo 7 LCD + Push Button // // // // by M.C. Flavio Lpez Medina // ////////////////////////////////////////////////////////////////// /*CONFIGURACION PIC*/ #include "18f4550.h" #use delay(clock=48000000) #include "lcd.c" #use fast_io(B) //PIC A USAR //Librera del LCD de 16 x 2 //Optimizar entradas y salidas del Puerto B

#build(reset=0x02000,interrupt=0x02008) //Reserva espacio para poder programar #org 0x0000,0x1FFF {} //una y otra vez nuestro PIC (Si no lo ponen desconfiguran el PICxxx) //-------------------------------------------------------------------------------

void main(void) //Funcin Principal { int i=0; //Se define el tipo de dato tipo entero de 1 byte set_tris_B(0b00000001); //RB0 entrada y RB1 a RB7 salidas lcd_init(); //Borra y configura el LCD

while(TRUE) { lcd_gotoxy(1,1); //El lcd inicia fila 1, columna 1 printf(lcd_putc,"Contador:%d",i); //El valor se incrementa en 1 //cuando se presiona el push button if(input(pin_B0)==1){ i++; delay_ms(200); } //si el PIN RB0 es igual a uno //incremento en uno la variable i (i++ i=i+1) //espera por 200 milisegundos

} }

//Fin del ciclo while //Fin de la funcin Main

21

M.C. FLM

Manual de Practicas de MATeo

Actividad: 1. Modifique el la lnea de cdigo "delay_ms(200)", primero por "delay_ms(1000)" y compile, cargue el programa en la tarjeta, presione el Push Button y observe que sucede en el LCD. Posteriormente ahora cambie la misma lnea de cdigo por "delay_ms(50)" y repita lo anterior. 2. Presione el Push Button(PB) 129 veces o mantngalo presionado y verifique que en la pantalla LCD se puede representar el nmero 129. Si no aparece el nmero 129 explique por qu el LCD no puede representar el nmero 129. 3. Cambie el tipo de dato de la variable "i" por un dato de tipo "int16" y observe si ahora si se puede representar el nmero 129 en el LCD. 4. Agregue un segundo PB para que ahora con este se decremento el valor del contador en uno cada vez que se presione, es decir cuando se presione el primer PB el contador se incrementa en uno, caso contrario cuando se presione el segundo PB el contador de decremento en uno.

22

M.C. FLM

Manual de Practicas de MATeo

Prctica #8: Hola Mundo Objetivo: Enviar la frase Hola mundo a travs del puerto USB como Virtual Comm, utilizando la clase CDC Materiales PC MATeo Cable para impresora Conexin Protoboard + MATeo

MATeo R-1
PIC 18f4550

Muestra caracteres en pantalla


Cdigo en C #include <18F4550.h> #use delay(clock=48000000) #build(reset=0x1000,interrupt=0x01008) #org 0,0x0FFF {}

#include <usb_cdc.h> //libreria clase CDC (Communications Device Class) //permiten comunicar al pic por USB 2.0.

void main() { //Funcin Principal main usb_cdc_init(); //Configuramos al puerto virtual. usb_init(); //Inicializamos el stack USB. while(!usb_cdc_connected()) {} //Espera a detectar una transmisin de la PC. delay_ms(100); //Espera 100ms

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

23

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

M.C. FLM

Manual de Practicas de MATeo

printf(usb_cdc_putc,"Hola Mecatronica\n");//Envia la cadena Hola Mundo do { usb_task(); if (usb_enumerated()) //Espera a que el dispositivo sea enumerado por el host. { //****************************Aqu va el cdigo del usuario********************************** //*********************************************************************************************** } } while (TRUE); } Cabe sealar que al cargar el programa .exe en MATeo y posteriormente dar click en el botn desconectar (reset), la PC detectara a la tarjeta y le asignara un puerto COM que se mostrar en el administrador de dispositivos como se ilustra a continuacin

Si requiriese la PC actualizar el controlador del puerto COM, el driver de actualizacin se encuentra en la carpeta que Drivers Windows CDC que acompaa a este manual. Finalmente al saber en qu puerto le fue asignado a la tarjeta se procede abrir al software Hercules y abrir el puerto correspondiente como se indica a continuacin.

24

M.C. FLM

Manual de Practicas de MATeo

Actividad: 1. Modifique el la lnea de cdigo Hola Mundo\nMATeo y observe que sucede.

Mecatronica\n

por

Hola

25

M.C. FLM

Manual de Practicas de MATeo

Prctica #9: Enviar y recibir un dato Objetivo: Enviar un dato desde la PC a travs del puerto USB como Virtual Comm, que el PIC lo reciba y envi el mismo dato de regreso a la PC, para finalmente visualizarlo en la pantalla con el software Hercules. Materiales PC MATeo Cable para impresora Conexin Protoboard + MATeo

MATeo R-1
PIC 18f4550

Muestra caracteres en pantalla


Cdigo en C /*----------------------------------------------Ejemplo Hola Mundo------------by Flavio Lpez Medina----------------------------------------------*/ #include <18f4550.h> //Pic a utilizar #use delay(clock=48000000) //Frecuencia de trabajo #build(reset=0x1000,interrupt=0x1008) #org 0,0x0FFF {} #include "usb_cdc.h" //libreria que permite utilizar la clase CDC void main() //funcin principal main { char recibe;

VEXT 5V GND GND RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC6 RC7

26

5v GND RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 5v GND RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

M.C. FLM

Manual de Practicas de MATeo

usb_cdc_init(); //Configuramos al puerto virtual. usb_init(); //Inicializamos el stack USB. while(!usb_cdc_connected()) {} //Espera a detectar una transmisin de la PC. delay_ms(100); //Espera 100ms printf(usb_cdc_putc,"Presiona una tecla: "); //envia una cadena while(true) { usb_task(); //deteccion de conexin if(usb_enumerated()) //detecta si el dispositivo ha sido enumerado { //**************************Aqu va el cdigo del usuario********************************** recibe=usb_cdc_getc(); //almacena el dato recibido desde la PC printf(usb_cdc_putc,"\nPresionaste la letra \"%c\"",recibe);

//*********************************************************************************************** } } //fin de la funcion while } //fin de la funcion main Cabe sealar que al cargar el programa .exe en MATeo y posteriormente dar click en el botn desconectar (reset), la PC detectara a la tarjeta y le asignara un puerto COM que se mostrar en el administrador de dispositivos como se ilustra a continuacin

27

M.C. FLM

Manual de Practicas de MATeo

Finalmente al saber en qu puerto le fue asignado a la tarjeta se procede abrir al software Hercules y abrir el puerto correspondiente como se indica a continuacin.

Actividad: 1. Modifique el cdigo para que al recibir el carcter x encienda un led por el pin RB0 y al recibir de nuevo el mismo carcter ahora se apague led y que la informacin del estado del led sea mostrado en la pantalla de la PC.

28

M.C. FLM

Você também pode gostar