Você está na página 1de 11

UNIVERSIDAD AUTONOMA DE TLAXCALA

FACULTAD 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 Snchez
Rigoberto 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 <reg52.h>
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 <18F4550.h>
#DEVICE ADC=8
#FUSES
INTRC_IO,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VRE
GEN
#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,2
3,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,4
7,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,7
1,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,9
5,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,1
31,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,14
8,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,2
00,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,21
7,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,25
4,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,2
54,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,25
4,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,3
8,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,8
6,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,12
4,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,2
28,230,232,234,236,238,240,242,244,246,248,250,252,254,254,252,250,24
8,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,1
44,142,140,138,136,134,132,130,128,126,124,122,120,118,116,114,112,11
0,108,106,104,102,100,98,96,94,92,90,88,86,84,82,80,78,76,74,72,70,68,6
6,64,62,60,58,56,54,52,50,48,46,44,42,40,38,36,34,32,30,28,26,24,22,20,1
8,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,13
6,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,7
7,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<255; X++)
{
PuertoB = CUADRADA[X];
DELAY_US(TIEMPO);
}
}
VOID ONDATRIANGULAR(VOID)
{
FOR(X=0; X < 254; X++)
{
PuertoB = TRIANGULAR[x];
DELAY_US(TIEMPO);
}
}
VOID ONDASIERRA(VOID)
{
FOR(X=AMPLITUD; X > 0; X--)
{
PuertoB = SIERRA[x];
DELAY_US(TIEMPO);
}
}

VOID ONDASENOIDAL(VOID)
{
FOR(X=0; X<100; X++)
{
PuertoB = SENOIDAL[X];
DELAY_US(TIEMPO);
}
}

VOID MAIN (VOID)


{
SETUP_ADC(ADC_CLOCK_INTERNAL);
WHILE(TRUE)
{
SET_ADC_CHANNEL(5);
TIEMPO=READ_ADC();
SET_ADC_CHANNEL(6);
AMPLITUD=READ_ADC()/4;
SELECCION_FUNCION();
SWITCH(SELECCION)
{
CASE 0:
ONDATRIANGULAR();

BREAK;
CASE 1:
ONDACUADRADA();
BREAK;
CASE 2:
ONDASIERRA();
BREAK;
CASE 3:
ONDASENOIDAL();
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.
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.
Para la reconstruccin de la seal procesada internamente, se configuran 8
bits de salida, para hacer un convertidor DA, por medio de un arreglo R-2R.

Você também pode gostar