Lenguaje C de monitoreo de ruido basado en 51 microcontroladores, envíeme un programa, ¡gracias!
* Nombre de archivo: Adquisición de temperatura DS18B20.c
* Descripción: Este archivo implementa el uso El dispositivo sensor de temperatura DS18B20 recoge la temperatura y la muestra en el tubo digital.
* Creado por: Dongliu, 10 de abril de 2009
* Versión: 2.0
*************** *** ************************************************* **** ******/
## include
#define uchar unsigned char
# define uint unsigned int
#define jump_ROM 0xCC
#define start 0x44
#define read_EEROM 0xBE
sbit DQ = P2^3 ; //DS18B20 Puerto de datos
Caracteres sin firmar TMPH, TMPL
tabla de códigos uchar [10] = {0x3f,0x06.0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f };
/*************************************** *** ****************************
* Nombre retraso()
* Entrada: Ninguna
* Salida: Ninguna
********************* *** ********************************************** * ***** /
void delay_1()
{
int i,j;
for(i=0; i<=10; i++)
for(j=0; j<=2; j++)
}
/******* *** ** ********************************************** ****** ******
* Nombre: retardo()
* Función: Función de retardo
* Entrada: Ninguna p>
* Salida: Ninguna
******* ************************** ******** *******************************/
retraso nulo( uint N)
{
int i;
for(i=0; i ; } /************************************ ******** ******************************* * Nombre: Retraso_1ms( ) * Función: Subrutina de retardo, el tiempo de retardo es 1 ms * x * Entrada: x (número de milisegundos que se retrasarán) * Salida: Ninguna ***** **************************************** ************ ****************/ void Delay_1ms(uint i)//1ms de retraso { uchar x,j; for(j=0;j for(x=0;x <=148;x++); } /*** ************************* ************ ******************************* * Nombre: Reset() * Función:Reset DS18B20 * Entrada: Ninguna * Salida: **** ******************* ********************************** ******************* **/ uchar Restablecer(void) { uchar engaño_listo; DQ = 0; retraso(29); DQ = 1; retraso(3); deceive_ready = DQ; demora( 25); retorno(deceive_ready); } /****************** ******************************* ******************** * Nombre: read_bit() * Función: de DS 18B20 Leer un bit * Entrada: Ninguna * Salida: Leer el valor de bit de DS18B20 ************ ************************************************** * **********/< uchar read_bit(void) { uchar i; DQ = 0; DQ = 1; for(i=0; i<3; i++); retorno(DQ); } /*************************************** ***** ******************************* * Nombre: write_bit() p> * Función: Escribir bit en DS18B20 * Entrada .bitval (el valor de bit que se escribirá en DS18B20) * Salida: Ninguna **** ********************************************** ******* ****************/ void write_ bit(uchar bitval) { DQ=0; si(bitval==1) DQ=1; retraso(5); DQ=1; p> } /****************************** ******** ********** ************************* * Nombre: read_byte() p> * Función: Desde DS18B20 Leer un byte * Entrada: Ninguna * Salida: Leer valor desde DS18B20 ***** ******* ******************************************* ******** *********/ uchar read_byte(void) { uchar i,m, recibir_datos; m = 1; recibir_datos = 0; for(i=0; i<8;i++) { if(read_bit()) { recibir_datos = recibir_datos + (m << i); } p> retraso(6 ); } retorno(recibir_datos); } /**** ******** **************** **************************** ******** ****** * Nombre: write_byte() * Función: Escribir un byte en DS18B20 * Entrada: val (para escribir Ingrese el valor del comando de DS18B20) * Salida: Ninguna ********************* ********* ******************************************* ****/ void write_byte(uchar val)
p>{
uchar i,temp;
for(i=0; i<8; i++)
{
temp = val >> i;
temp = temp & 0x01;
write_bit(temp);
retardo(5); > }
}
/********************************* ********************************
* Nombre: Principal()
* Función: Función principal
* Entrada: Ninguna
* Salida: Ninguna
: Ninguna
* ** ************************************************* * ***********************/
void main()
{
float tt;
uint temp;
P2 = 0x00;
while(1)
{
Reset() ;
write_byte(start_ROM);
write_byte(start).
Reset()
write_byte(jump_ROM)
p>
write_byte(read_EEROM);
TMPL = leer_byte()
TMPH = leer_byte(); > temp = TMPL / 16 + TMPH * 16;
P0 = tabla[temp/10%10];
P2 = 6;
Retraso_1ms(5 );
P0 = tabla[temp%10];
P2 = 7;
Retraso _1ms(5);
}
}