// Consulte este procedimiento.
//0832 Varias demostraciones de salida de formas de onda//Cuando P1.1P1.0=00 es una onda sinusoidal//Cuando P1.1P1.0=01 es una onda de diente de sierra//P1.1P1.0= 10 Es una onda cuadrada // Cuando P1.1P1.0=11, es una onda triangular /// Cables que deben conectarse: // (1) El decodificador Y0 está conectado al CS del DAC0832 // (2) P3.6 es la conexión del conector XWR WR del DAC0832 //(3) El cable de 8 núcleos conecta los pines de 8 filas del puerto P0 y D7-D0 del DAC0832 //(4) El +5v en el área del convertidor serie-paralelo está conectada al conector Vref de voltaje de referencia del DAC0832 #include < reg51.hgt> #include / /absacc.h es el archivo de encabezado de la función de acceso a dirección absoluta en C51 #define daport XBYTE[0x8000]//defina daport es el puerto de E/S externo, la dirección es 8000H, luego 74ls138 Y0 sbit válido P1_1=P1^1; sbit P1_0=P1^0; ; // onda triangular arriba/abajo código de carácter sin firmar sinn[64]={ 198,204,210,216,222,228,233,237,242,245,249,251,253,255,2 55,255,255,255,254, 252,250,247,243,239, 235,230, 224,219,213,207,201,194,188, 181,175,169,163,158,152,147,143,139,136,133,131,129,128,128,128,128, 129,130, ,138,142,146,151,156,162,168,174,18 0,186,193,199 };// El valor del seno está entre 128-255, por lo que la salida la amplitud del seno está entre 0-5v void main(void) { updown=0; i=128 mientras( 1) { if (P1_1==1) { if (P1_0==0) // Genera un cuadrado onda con un ciclo de trabajo del 25% { if (j<=40) i=255;//i=255 salida +5v else if (j<=160) i=0;//i=0 salida-5v else j =0; } else //salidas - onda triangular 5v-+5v { if (updown==0) //subir { if (i==255) updown=1; else i=i+5;//i++ } else //fall { if (i==0) updown=0;//if(i==128) updown=0 ;i=128 el voltaje de salida es 0 else i=i-5;//i--; }} else{ if (P1_0==0) //onda sinusoidal{ i=sinn[j]; if (j>= 63) j=0 } else //onda de diente de sierra{ if (i==255) i=; 128; más i++; } }} daport=i;