proyecto generador de funciones

13
UNIVERSIDAD AUTONOMA DE TLAXCALA FACULTAD DE CIENCIAS BASICAS INGENIERIA Y TECNOLOGIA Licenciatura en Ingeniería en Sistemas Electrónicos Materia: Sistemas analógicos. Catedrático: M. en C. Bernardo Cante Michcol. Alumnos: Genaro Sánchez Sánchez Rigoberto Temoltzi Avila Proyecto Generador de Funciones

Upload: genaro-sanchez-sanchez

Post on 09-Nov-2015

52 views

Category:

Documents


6 download

DESCRIPTION

hecho con AT89C52

TRANSCRIPT

UNIVERSIDAD AUTONOMA DE TLAXCALAFACULTAD DE CIENCIAS BASICAS INGENIERIA Y TECNOLOGIA

Licenciatura en Ingeniera en Sistemas Electrnicos

Materia:

Sistemas analgicos.

Catedrtico:

M. en C. Bernardo Cante Michcol.

Alumnos:Genaro Snchez SnchezRigoberto Temoltzi Avila

Proyecto Generador de Funciones

Introduccin En la siguiente seccin se mostrarn ejemplos de diseo para generador de funciones, implementando un microcontrolador AT89C52, con una fuente de 12MHz como reloj. Para todos las impresiones de pantalla que se mostrarn se deben simular con el mismo arreglo en ISIS, para este fin se implementa un circuito con los dispositivos AT89C52, RES, OSCILLOSCOPE. Para la reconstruccin de la seal procesada internamente, se configuran 8 bits de salida, para hacer un convertidor DA, por medio de DAC0800. #include sbit led = P2^0;sbit boton = P2^1;sbit subir = P2^2;sbit bajar = P2^3;short i,seleccion,j,time=2;void delay_ms( unsigned int ms) { unsigned char k; while(ms--) { for(k = 0; k < 120; k++); }}

void seleccion_funcion(void){ if(boton==0) { delay_ms(200); seleccion = seleccion + 1; if(seleccion >= 4){ seleccion = 0;}while(boton==0); } if(subir==0) { delay_ms(200); time = time + 5; } if(bajar==0) { delay_ms(200); time = time - 5; }}

void cuadrada(void){ P1=0xFF; led=1; delay_ms(time); P1=0x00; led=0; delay_ms(time);}

void senoidal(void){ for(i = 0;i < 100;i++) { P1 = i+4; }}

void triangular(void){ for(j = 0; j < 255; j++) { P1 = j + 2; }}

void sierra(void){ for(i=255;i>0;i--) { P1 = i; }}

void main (void){ P0 = 0x00; P1 = 0x00; P3 = 0x00;while(1) { seleccion_funcion(); switch (seleccion) { case 0: cuadrada(); break; case 1: senoidal(); break; case 2: sierra(); break; case 3: triangular(); break;

} }}

En la siguiente seccin se mostrarn ejemplos de diseo para generador de funciones, implementando un microcontrolador 18F4550, con una fuente de 40MHz como reloj. Para fines prcticos reales la frecuencia de 40MHz, se logra utilizando un cristal de 10MHz, y activando la fuente de reloj HS- PLL en el PIC. Est opcin implementa internamente en el PIC, un PLL que multiplica la frecuencia externa por un factor de cuatro, y el resultado es usado como fuente de reloj para el procesador del microcontrolador. Para todos las impresiones de pantalla que se mostrarn se deben simular con el mismo arreglo en ISIS, para este fin se implementa un circuito con los dispositivos 18F4550, RES, OSCILLOSCOPE,DAC0800. La adquisicin de seales se hace en el microcontrolador por medio del mdulo AD, los niveles de tensin que las entradas anlogas admiten, no pueden salirse de los rangos de la polarizacin del microcontrolador. En otras palabras los niveles de las entradas anlogas no pueden ser superiores a 5 voltios, ni voltajes negativos.

#INCLUDE #DEVICE ADC=8#FUSES INTRC_IO,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN#USE DELAY(CLOCK = 8MHz) #DEFINE AN5,AN6#DEFINE BOTON PIN_D3

INT16 TIEMPO,AMPLITUD;INT16 X,SELECCION;

BYTE CONST SIERRA[255]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254};

BYTE CONST CUADRADA[255]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254};

BYTE CONST TRIANGULAR[255]={0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,254,252,250,248,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,128,126,124,122,120,118,116,114,112,110,108,106,104,102,100,98,96,94,92,90,88,86,84,82,80,78,76,74,72,70,68,66,64,62,60,58,56,54,52,50,48,46,44,42,40,38,36,34,32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2};

BYTE CONST SENOIDAL[100]={77,82,86,91,96,101,105,109,114,118,122,126,129,133,136,139,142,144,146,148,150,151,152,153,153,154,153,153,152,151,150,148,146,144,142,139,136,133,129,126,122,118,114,109,105,101,96,91,86,82,77,72,67,62,58,53,49,44,40,36,32,28,24,21,18,15,12,9,7,5,4,2,1,1,0,0,1,1,2,4,5,7,9,12,15,18,21,24,28,32,36,40,44,49,53,58,62,67,72,77};

VOID SELECCION_FUNCION(VOID){ IF(!INPUT(BOTON)) { DELAY_MS(200); SELECCION = SELECCION + 1; IF(SELECCION >= 4) { SELECCION = 0; } WHILE(!INPUT(BOTON)); } OUTPUT_TOGGLE(PIN_A2);}

VOID ONDACUADRADA(VOID){ FOR(X=0; X 0; X--) { PuertoB = SIERRA[x]; DELAY_US(TIEMPO); }}

VOID ONDASENOIDAL(VOID){ FOR(X=0; X