Вы находитесь на странице: 1из 14

Reportes de control 2 alumnos: Miguel de la Fuente Agustin Sanchez Abimael sosa

Semestre Enero-Junio 2012


En este reporte podemos observar a detalle cmo es que fuimos realizando cada una de las practicas obteniendo los resultados que queramos, al final del reporte podremos encontrar el proyecto final el cual consisti en un pequeo sensor de gas utilizando el programa hyperterminal

2012
Facultad de Ciencias Quimicas e Ingenieria UAEM 15/06/2012

PRACTICA 1 ESTA PRACTICA CONSISTE EN ENVIAR INFORMACION DESDE EL PIC Y DICHA INFORMACION DEBE SER RECIBIDA POR LA COMPUTADORA Y SER MOSTRADA EN EL PROGRAMA HYPERTERMINAL.

Realizar un programa el cual envi informacin del PIC 16F877A a la computadora auxilindonos de un potencimetro, este potencimetro ser utilizado para regular la resistencia de los valores mostrados en el monitor de la PC ya que estos al momento de regular irn variando, obteniendo as varios valores. Una anotacin importante es que cuando en nuestro teclado de la computadora presionemos cualquier tecla, el valor mostrado en el LCD no deber cambiar para nada. INTRODUCCION: Los PIC son micro controladores fabricados por Microchip Technology Inc. Estos derivados del PIC1650, originalmente desarrollado por la divisin de microelectrnica de General Instrument.

El PIC original se dise para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, sta tena malas prestaciones de entrada y salida, y el PIC de 8 bits se desarroll en 1975 para mejorar el rendimiento del sistema quitando peso de E/S a la CPU. El PIC utilizaba microcdigo simple almacenado en ROM para realizar estas tareas; y aunque el trmino no se usaba por aquel entonces, se trata de un diseo RISC que ejecuta una instruccin cada 4 ciclos del oscilador. En 1985 la divisin de microelectrnica de General Instrument se separa como compaa independiente que es incorporada como filial (el 14 de diciembre de 1987 cambia el nombre a Microchip Technology y en 1989 es adquirida por un grupo de inversores) y el nuevo propietario cancel casi todos los desarrollos, que para esas fechas la mayora estaban obsoletos. El PIC, sin embargo, se mejor con

EPROM para conseguir un controlador de canal programable. Hoy en da multitud de PICs vienen con varios perifricos incluidos (mdulos de comunicacin serie, UARTs, ncleos de control de motores, etc.) y con memoria de programa desde 512 a 32.000 palabras (una palabra corresponde a una instruccin en lenguaje ensamblador, y puede ser de 12, 14, 16 32 bits, dependiendo de la familia especfica de PICmicro). A continuacin explicamos como es que se realizo la practica 1 y aadimos el material a utilizar. MATERIAL: 1. PIC16F877A 2. LCD 3. MAX232N 4. CAPACITORES DE 1mf 5. CRISTAL DE 12 Mhz 6. DB9 HEMBRA 7. RESISTENCIAS DE: 220, 1K, 330, 10K OHMS. DESARROLLO DE LA PRACTICA 1.- Guindonos del diagrama comenzamos a realizarlas conexiones tal y como nos lo marca.

2.- Elaborar un programa que nos permita enviar datos del PIC a la PC, el programa que se utilizo para esta prctica se mostrara a continuacin: #include <16F877a.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=12000000) #use rs232(baud=9600,bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C7) #byte porta = 0xf80 #byte portb = 0xf81 #byte portc = 0xf82 #byte portd = 0xf83 #byte porte = 0xf84 #define use_portD_lcd TRUE #include <LCDD.c>

int8 datoAn0,control; float A0; void main() { setup_adc_ports(all_analog); //setup_adc_ports(AN0&AN1,AN2,AN3,AN4,AN5);//que puertos se van a utilizar para la conversion, en esta caso el pin RA0,RA1,RA2,RA3 setup_adc(adc_clock_internal);//el tiempo de muestreo de la seal analogica, se coloco el clock internal lcd_init();//inicializar la pantalla. esta instruccion es muy importante while(1) { set_adc_channel(0); //definir el canal de entrada 0 delay_us(20); //retardo de 20 microsegundo datoAn0=read_adc(); //el valor de la conversion se guarda en la constante valor A0 = datoAn0*((5.0)/255); control=getch(1); lcd_gotoxy(1,1); printf(lcd_putc,"pieza:%3u",control); if (control== 97) { output_high (PIN_B0); output_low (PIN_B1); delay_ms(500); //este tiempo es la clave }

if (control== 98) { output_low (PIN_B0); output_high (PIN_B1); delay_ms(500); //este tiempo es la clave } lcd_gotoxy(1,2); //esta instruccion es para colocar el cursor en la primera fila primera columna. printf(lcd_putc,"Valor An0: %3u ",datoAn0); //printf("%3u",n); //output_b(valor); delay_ms(10); //este tiempo es la clave CONCLUSION: En la realizacin de dicha prctica logramos entender el lenguaje para realizar la programacin de el pic de modo que pudimos percatarnos de que el lenguaje que tenemos que utilizar para que el monitor muestre un texto (mensaje) sin que aparezca en el LCD y utilizando el potencimetro para cambiar los datos y cada vez que movamos el potencimetro nos aparezcan datos diferente.

PRACTICA 2 RECIBIR INFORMACION AL PIC, ENVIADA DESDE LA COMPUTADORA OBJETIVO DE LA PRACTICA: Controlar la informacin de manera que a travs de la computadora podremos enviar informacin al PIC y esta podra ser vista en la pantalla del LCD, esto lo podremos hacer programando el pic con el programa que el maestro ya nos prporciono. Es til indicar que al utilizar dicho mensaje al variar la resistencia del PIC la computadora no deber mostrar ningn cambio y cuando presionemos cualquier tecla el LCD deber desplegar una informacin distinta cuando se presione una tecla de la computadora. INTRODUCCION: El PIC cuenta con un registro que funciona como una RAM de propsito general. Los registros de propsito especfico para los recursos de hardware disponibles dentro del propio chip tambin estn direccionados en la RAM. La direccionabilidad de la memoria vara dependiendo la lnea de dispositivos, y todos los dispositivos PIC tienen algn tipo de mecanismo de manipulacin de bancos de memoria que pueden ser usados para acceder memoria externa o adicional. Las series ms recientes de dispositivos disponen de funciones que pueden cubrir todo el espacio direccionable, independientemente del banco de memoria seleccionado. En los dispositivos anteriores, esto deba lograrse mediante el uso del acumulador.

Para implementar direccionamiento indirecto, se usa


un registro de "seleccin de registro de archivo" (FSR) y uno de "registro indirecto" (INDF): Un nmero de registro es escrito en el FSR, haciendo que las lecturas o escrituras al INDF sern realmente hacia o desde el registro apuntado por el FSR. Los dispositivos ms recientes extienden este concepto con post y preincrementos/decrementos para mayor eficiencia al acceder secuencialmente a la

informacin almacenada. Esto permite que se pueda tratar al FSR como un puntero de pila. El tamao de palabra de los microcontroladores PIC es fuente de muchas confusiones. Todos los PICs (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se deberan llamar microcontroladores de 8 bits. Pero a diferencia de la mayora de las CPU, el PIC usa arquitectura Harvard, por lo que el tamao de las instrucciones puede ser distinto de la palabra de datos. De hecho, las diferentes familias de PICs usan tamaos de instruccin distintos, lo que hace difcil comparar el tamao del cdigo del PIC con el de otros microcontroladores. Por ejemplo, un microcontrolador tiene 6144 bytes de memoria de programa: para un PIC de 12 bits esto significa 4096 palabras y para uno de 16 bits, 3072 palabras. MATERIALES: 1. PIC16F877A 2. LCD 3. MAX232N 4. CAPACITORES DE 1mf 5. CRISTAL DE 12 Mhz 6. DB9 HEMBRA 7. RESISTENCIAS DE: 220, 1K, 330, 10K OHMS. DESARROLLO: Con el siguiente diagrama empezaremos a conectar el pic y las demas piezas en el protoboard para realizar nuestra practica

1.- hacer las conexiones correspondientes al siguiente diagrama:

2.- Elaborar un programa que nos permita enviar datos del PIC a la PC, el programa que se utilizo para esta prctica se mostrara a continuacin: #include <16F877a.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=12000000) #use rs232(baud=9600,bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C 7) #byte porta = 0xf80 #byte portb = 0xf81 #byte portc = 0xf82 #byte portd = 0xf83 #byte porte = 0xf84

#define use_portD_lcd TRUE #include <LCDD.c> int8 datoAn0,control; float A0; void main() { setup_adc_ports(all_analog); //setup_adc_ports(AN0&AN1,AN2,AN3,AN4,AN5);//que puertos se van a utilizar para la conversion, en esta caso el pin RA0,RA1,RA2,RA3 setup_adc(adc_clock_internal);//el tiempo de muestreo de la seal analogica, se coloco el clock internal lcd_init();//inicializar la pantalla. esta instruccion es muy importante while(1) { set_adc_channel(0); //definir el canal de entrada 0 delay_us(20); //retardo de 20 microsegundo datoAn0=read_adc(); //el valor de la conversion se guarda en la constante valor A0 = datoAn0*((5.0)/255); control=getch(1); lcd_gotoxy(1,1); printf(lcd_putc,"pieza:%3u",control); if (control== 97) { output_high (PIN_B0); output_low (PIN_B1); delay_ms(500); //este tiempo es la clave } if (control== 98) { output_low (PIN_B0); output_high (PIN_B1); delay_ms(500); //este tiempo es la clave } lcd_gotoxy(1,2); //esta instruccion es para colocar el cursor en la primera fila primera columna. printf("%3u",n); //output_b(valor); delay_ms(10); //este tiempo es la clave } } CONCLUSION: Con ayuda de esta practica nos dimos cuenta que al agregar un rengln de lenguaje en c y quitarle otro prrafo pudimos utilizar el mismo programa que utilizamos para la practica uno pero al incluir ese prrafo podemos ver que la funcin cambiaba ya que ahora al variar el potencimetro el monitor no mostraba ningn mensaje y cuando hacamos lo contrario, es decir, oprimir una tecla del teclado el LCD

inmediatamente desplegaba un mensaje que cambiando conform oprimamos diferentes teclas.

iba

PRACTICA 3

MANDAR Y RECIBIR INFORMACION ENTRE EL PIC Y LA PC OBJETIVO: El objetivo de esta practica es tanto mandar como recibir informacin entre la PC y el PIC ya que se desea que tanto el monitor como el LCD muestren distintos mensajes tanto al variar la resistencia como al oprimir una tecla diferente. Tanto el LCD como el monitor deber mostrar un valor diferente al variar los valores.

INTRODUCCION: Para transferir el cdigo de un ordenador al PIC normalmente se usa un dispositivo llamado programador. La mayora de PICs que Microchip distribuye hoy en da incorporan ICSP (In Circuit Serial Programming, programacin serie incorporada) o LVP ( Low Voltage Programming, programacin a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 (En algunos modelos

pueden usarse otros pines como el GP0 y GP1 o el RA0 y RA1) como reloj y datos y el MCLR para activar el modo programacin aplicando un voltaje de 13 voltios. Existen muchos programadores de PICs, desde los ms simples que dejan al software los detalles de comunicaciones, a los ms complejos, que pueden verificar el dispositivo a diversas tensiones de alimentacin e implementan en hardware casi todas las funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs preprogramados como interfaz para enviar las rdenes al PIC que se desea programar. Uno de los programadores ms simples es el TE20, que utiliza la lnea TX del puerto RS232 como alimentacin y las lneas DTR y CTS para mandar o recibir datos cuando el microcontrolador est en modo programacin. El software de programacin puede ser el ICprog, muy comn entre la gente que utiliza este tipo de microcontroladores. Entornos de programacin basados en interpretes BASIC ponen al alcance de cualquiera proyectos que parecieran ser ambiciosos.

1.- hacer las conexiones correspondientes al siguiente diagrama:

2.- Elaborar un programa que nos permita enviar datos del PIC a la PC, el programa que se utilizo para esta prctica se mostrara a continuacin: #include <16F877a.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=12000000) #use rs232(baud=9600,bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C 7) #byte porta = 0xf80 #byte portb = 0xf81 #byte portc = 0xf82 #byte portd = 0xf83 #byte porte = 0xf84 #define use_portD_lcd TRUE

#include <LCDD.c> int8 datoAn0,control; float A0; void main() { setup_adc_ports(all_analog); //setup_adc_ports(AN0&AN1,AN2,AN3,AN4,AN5);//que puertos se van a utilizar para la conversion, en esta caso el pin RA0,RA1,RA2,RA3 setup_adc(adc_clock_internal);//el tiempo de muestreo de la seal analogica, se coloco el clock internal lcd_init();//inicializar la pantalla. esta instruccion es muy importante while(1) { set_adc_channel(0); //definir el canal de entrada 0 delay_us(20); //retardo de 20 microsegundo datoAn0=read_adc(); //el valor de la conversion se guarda en la constante valor A0 = datoAn0*((5.0)/255); control=getch(1); lcd_gotoxy(1,1); printf(lcd_putc,"pieza:%3u",control); if (control== 97) { output_high (PIN_B0); output_low (PIN_B1); delay_ms(500); //este tiempo es la clave } if (control== 98) { output_low (PIN_B0); output_high (PIN_B1); delay_ms(500); //este tiempo es la clave } lcd_gotoxy(1,2); //esta instruccion es para colocar el cursor en la primera fila primera columna. printf(lcd_putc,"Valor An0: %3u ",datoAn0); printf("%3u",n); //output_b(valor); delay_ms(10); //este tiempo es la clave } } CONCLUSION: Con esta practica finalizamos, y nos ayudara a crear un nuevo proyecto que con ayuda de los conocimientos adquiridos durante el transcurso del semestre, podremos crear un programa que reciba y enva informacin tanto del PIC a la PC como de la PC al PIC. Este programa se creo con ayuda de los dos anteriores ya que solo son complementos

para elaborar un programa ms sofisticado y que realice una funcin aun ms compleja.

Вам также может понравиться