Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 10156|Svare: 0

pic16f877a styrer temperatur- og fuktighetssensoren DHT11

[Kopier lenke]
Publisert på 25.11.2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Bruk 12M krystalloscillator
#include"12864.h"
#define usignert int
#define uchar usignert karakter
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, sjekk;
uint delay_time;
tomrom timer0_init()
{
   TMR0=0;  Første verdi
   T0CS=0;  Velg klokkekilden, som er 1/4 av krystalloscillatoren;
   T0SE=1;   Klokkekilde-kantutvelgelsesbiter
   PSA=0;    Predidiver-allokeringsbiter
   PS0=0; PS1=0; PS2=0;  Pre-divisjonsutvelgelsesbiter
   TMR0IF=0;    Timerflagget er clear 0
   GIE=1;       Åpne den globale avbrytelsen
   TMR0IE=0;    Timer 0 aktivert
   TMR0=236;    Diktets første verdi
}
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);
}
tomrom Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Bussen er trukket ned med minst 18 MS
RC1=1;
timer0_delay(2); Bussen trekkes opp av pull-up-motstanden, og vertsforsinkelsen er 20 us.
TRISC1=1;     Verten settes til inngang for å vurdere slaveresponssignalet
RC1=1;
  hvis(! RC1)
  {
   mens ((! RC1)) // Bestem om slaven sender ut et 80 US lavresponssignal eller ikke
   {
    NOP();
   }
   while(RC1) // Bestem om slaven sender ut et høyt nivå på 80u, og hvis ja, går den inn i datamottakstilstanden
   {
    NOP();
   }
   temp_valueH=Read_byte();
   temp_valueL=Read_byte();
   hum_valueH=Read_byte();
   hum_valueL=Read_byte();
   sjekk=Read_byte();
   ckeck_value=hum_valueL+hum_valueH+temp_valueL+temp_valueH;
  hvis(sjekk==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]




Foregående:Tanke og naken programmering [Serialisert]
Neste:Velferdsytelser, regler for C-språklig navngivning, veldig praktiske ting
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com