Red de conocimientos turísticos - Conocimientos sobre calendario chino - Programación de conexión entre microcontrolador y sensor

Programación de conexión entre microcontrolador y sensor

# incluir ltreg52.h gt?

¿#Definición? ¿Uchar? ¿No firmado? ¿Ciel?

¿#Definición? uint? ¿No firmado? int?

¿un poquito? dq=p1^4;? //¿Interfaz entre ds18b20 y el microcontrolador?

¿No está firmado? ¿Ciel? ¿Código? str[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x40}? ;? //* * *Tabla de códigos de tubos digitales Yin

¿No está firmado? ¿Ciel? ¿Código? str1[]={0x0bf, 0x86, 0x0db, 0x0cf, 0x0e6, 0x0ed, 0x0fd, 0x87, 0x0ff, 0x0ef};? //Tabla de códigos numéricos con punto decimal

¿Sin firmar? ¿Ciel? ¿Código? wei[]={0x0fe, 0x0fd, 0x0fb, 0x0f 7};?

¿Uchar? ¿datos? disdatos[5];?

¿uint? tvalue//Valor de temperatura?

¿Uchar? tflag//¿Signo positivo y negativo de temperatura?

/* * * * * * * * * Programa DS1820 * * * * * * * * * */?

¿Anulado? delay_18B20(¿sin firmar?int?i)? //¿Retraso de 1 microsegundo?

{?

mientras(yo-);?

}

¿Anulado? ds 1820 primero()/* ds 1820 restablecer */?

{?

¿No está firmado? ¿Ciel? x = 0;?

¿DQ? =?1; //¿Restablecer DQ?

retraso _ 18b 20(4); //¿Retraso?

¿DQ? =?0;//¿DQ desplegable?

retraso _ 18b 20(100);? // ¿El retraso exacto es mayor que 480us?

¿DQ? =?1; //¿Levantar?

retraso _ 18b 20(40);

} ?

Uchar? Ds1820rd() /*Leer datos*/?

{?

¿No está firmado? ¿Ciel? Yo = 0;?

¿No está firmado? ¿Ciel? eso? =?0;?

¿Para qué? (I = 8; I gt0; I-)

{

DQ? =?0;? // ¿Dar una señal de pulso?

dat gt=1;

DQ? =?1;? // ¿Dar una señal de pulso?

¿Y si (DQ)? dato | = 0x80?

retraso _ 18b 20(10);?

}?

return(dat);

}?

¿Anulo? ds1820wr(uchar?Wdata) /*escribir datos*/?

{

¿No estás firmado? ¿Ciel? Yo = 0;?

¿Para qué? (I = 8;?i gt0;?i-)

{

DQ? =?0;?

¿DQ? =?wdata amp0x 01;?

retraso _ 18b 20(10);?

¿DQ? =?1;?

wdata gt gt=1

}

}?

Read_temp() /*Leer el valor de temperatura y convertirlo* /?

{

¿Uchar? A, B;?

d

s 1820 primero();?

ds 1820 wr(0xcc);? //Omitir lectura del número de secuencia

ds 1820 wr(0x 44);? //¿Iniciar conversión de temperatura?

ds 1820 primero();?

ds 1820 wr(0xcc);? //¿Saltar el número de secuencia de lectura?

ds 1820 wr(0x ser);? //Temperatura de lectura

a = ds 1820 rd();?

b = ds 1820rd();?

tvalor=b;?

tvalor lt lt=8;?

tvalue = tvalue | a;

if(t valor lt; 0x0fff)

tflag = 0;

Otro

{

tvalor = ~ tvalor 2;? bandera t = 1;? // ¿Temperatura negativa?

}

tvalor = tvalor *(0.625);? //El valor de temperatura se amplifica 10 veces y tiene una precisión de 1 decimal.

return(tvalue);

}

/************************ ***********/

¿Anulado? Ds1820disp() //Visualización del valor de temperatura

{

Uchar? Yo;

disdata[0]= tvalue/1000;? //Cientos de dígitos

disdata[1]= valor t 1000/100;? // ¿Diez dígitos?

disdata[2]= t valor 100/10; //Un dígito

disdata[3]= t valor 10; //Número decimal

if (tflag==0)

{

if(disdata[0]==0x00)

? {

? disdata[0]= 0; //No se muestra cuando el dígito de las centenas es 0.

? si(disdata[1]==0x00)? datos[1]=0;? //El dígito de las decenas es 0 y no se muestra.

? }

}

¿Y si? // ¿Temperatura negativa?

{

disdata[0]= 0x0b;? //Las temperaturas negativas muestran signos negativos en unidades de centenas: -

if(disdata[1]==0x00)? disdata[1]= 0; //El dígito de las decenas es 0 y no se muestra.

}

for(I = 0;ilt150;i)

{

P2 = Wei[0];

p>

P0 = str[disdata[3]];

retraso _ 18b 20(20);

P2 = Wei[1]; p>

P0 = str 1[disdata[2]];

retraso _ 18b 20(20);

=Wei[2];

P0 = str [disdata[1]];

retraso _ 18b 20(20);

=Wei[3];

P0 = str[ disdata[0] ];

retraso _ 18b 20(20);

}

}

* * * * * * * * * * Programa principal * * * * * * * *

¿Evitado? main()

{

ds 1820 primero();? //Inicializar visualización

while(1)

{

read _ temp(); //Leer temperatura

ds 1820 disp (); //Mostrar

}

}?

"../css/tongji.js">