Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 10156|Svar: 0

pic16f877a driver temperatur- og fugtighedssensoren DHT11

[Kopier link]
Opslået på 25/11/2014 22.12.09 | | |
[mw_shl_code=c,true]#include<pic.h> // Brug 12M krystaloscillator
#include"12864.h"
#define usigneret int
#define uchar usigneret karakter
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, check;
uint delay_time;
tomrum timer0_init()
{
   TMR0=0;  Første værdi
   T0CS=0;  Vælg klokkekilden, som er 1/4 af krystaloscillatoren;
   T0SE=1;   Urkilde kantudvælgelsesbits
   PSA=0;    Predidiver-allokeringsbits
   PS0=0; PS1=0; PS2=0;  Pre-division udvælgelsesbits
   TMR0IF=0;    Timerflaget er clear 0
   GIE=1;       Åbn den globale afbrydelse
   TMR0IE=0;    Timer 0 aktiveret
   TMR0=236;    Digtets første værdi
}
void interrupt timer0()
{
     hvis(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
Void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    mens (delay_time);
    TMR0IE=0;
}
Uchar Read_byte()
{
Uchar I, Temp, Hum;
   for(i=0; i<8; i++)   
    {
       Mens (! RC1);   
       timer0_delay(2); Forsinkelse 20us  
       temp=0;
       if(RC1){temp=1; mens (RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=temp;                           
  }
   return(hum);
}
tomrum Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Bussen er trukket ned med mindst 18 MS
RC1=1;
timer0_delay(2); Bussen trækkes op af pull-up-modstanden, og værtsforsinkelsen er 20 us.
TRISC1=1;     Værten er sat til input for at bedømme slave-responssignalet
RC1=1;
  hvis(! RC1)
  {
   Mens ((! RC1)) // Bestem om slaven udsender et 80 US lavresponssignal eller ej
   {
    NOP();
   }
   while(RC1) // Bestem om slaven udsender et højt niveau på 80us, og hvis ja, går den ind i datamodtagelsestilstanden
   {
    NOP();
   }
   temp_valueH=Read_byte();
   temp_valueL=Read_byte();
   hum_valueH=Read_byte();
   hum_valueL=Read_byte();
   check=Read_byte();
   ckeck_value=hum_valueL+hum_valueH+temp_valueL+temp_valueH;
  hvis(check==ckeck_value)
   {
      Proce_num(0x84,temp_valueH);
      Proce_num(0x94,hum_valueH);
   }
  }
  TRISC1=0;
  RC1=1;
}
void main()
{
  TRISB=0X00;
  lcdinit();
  timer0_init();
  mens (1)
  {
   Read_data();
  }
}[/mw_shl_code]




Tidligere:Tanke og nøgen programmering [Serialiseret]
Næste:Velfærdsydelser, C-sprogs navngivningsregler, meget praktiske ting
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com