Calificaciones altas, solicite el código del programa C para la conversión AD utilizando el microcontrolador 51 AD7731.
/* * *El tubo digital catódico muestra números de "0-9" "0-9" "c" "tabla vacía" unsigned char l_tmpdate [8] = {0, 0, 10, 0, 0, 0} ;/ /Defina variables de matriz y asigne valores 1, 2, 3, 4, 5, 6, 7, 8. Estos son los ocho números que muestra este programa int tmp(void); uchar dat); uchar tmpread(void); bit tmpreadbit(void); void dsreset(void); void delayb(recuento de unidades); change ();//Conversión de temperatura l_tmp = tmp();//Leer valor de temperatura if (l_tmp
} void ds reset(void)//ds 18b 20 inicialización { uint I; DS = 0; I = 103; mientras (I & gt; 0)I-; DS = 1; I = 4; mientras (I & gt; 0)I-; datDS = 0; i++; // un poco retrasado, DS = 1; i++; dat = DSI = 8; mientras (I & gt; 0) I-; Leer un byte {uchar i, j, datdat = 0; for (I = 1; i<=8;i++){ j = tmpreadbit(); dat =(j<<7) |(dat & gt;& gt1);} return(dat);}Suplemento de respuesta
void tmpwritebyte(uchar dat){ uint I;uchar j;bit testbfor(j = 1;j & lt= 8;j++){ testb = dat & 01; dat = dat & gt& gt1; si (pruebab) { DS = 0; i++; I = 8; 8; mientras (yo > 0) I-; i++; i++; void tmp change(void){ ds resetb( 1);tmpwritebyte(0x cc); 44);}Suplemento de respuesta
Int tmp() //Recopilar temperatura {floating TT; uchar a, b; dsreset(); retrasob(1);tmpwritebyte(0x cc); ; //Enviar comando de lectura de datos a = tmpread(); //Leer continuamente dos bytes de datos b = tmpread(); temp = b; lt& lt= 8;temp = temp | en una variable entera. TT = temp * 0.0625; //Obtiene el valor de temperatura decimal real, porque DS18B20 // puede tener una precisión de 0,0625 grados, por lo que el bit más bajo de los datos de lectura representa // 0,0625 grados. temp = TT * 10.5; //Ampliar diez veces. El propósito de esto es convertir el primer dígito después del punto decimal // en un número visualizable mientras se realizan operaciones de redondeo.
Temperatura de retorno; //Valor de temperatura de retorno}Suplemento de respuesta
void read rom()//Lee el número de serie del sensor de temperatura a través del puerto serie {//Esta función uchar sn1, sn2 es inútil en esto programa para; dsreset(); retardob(1); tmpwritebyte(0x 33); sn 1 = tmpread(); sn2 = 10; a & gt0 ;a-)for(b = 60;b & gt0;b-);} ¡Guau! Estoy tan cansado. . . Esto se puede utilizar. . . Compruébalo tú mismo con esa boca. Si quieres leerlo en lenguaje ensamblador:/% B6 % E0 % B9 % A6 % C4 % DC % B3 % B4 % BB % F5 % BB % FA/blog/item/1 F4 f 0 ed 876141462799.