Escolar Documentos
Profissional Documentos
Cultura Documentos
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;
}
}
break;
case 3:
triangular();
break;
}
}
}
#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);
}
}
BREAK;
CASE 1:
ONDACUADRADA();
BREAK;
CASE 2:
ONDASIERRA();
BREAK;
CASE 3:
ONDASENOIDAL();
BREAK;
}
}
}
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.