Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 10156|Svar: 0

pic16f877a styr temperatur- och fuktighetssensorn DHT11

[Kopiera länk]
Publicerad på 2014-11-25 22:12:09 | | |
[mw_shl_code=c,sant]#include<pic.h> // Använd 12M kristalloscillator
#include"12864.h"
#define uint unsigned int
#define uchar osignerad char
__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örsta värdet
   T0CS=0;  Välj klockkällan, som är en fjärdedel av kristalloscillatorn;
   T0SE=1;   Klockkäll-kantvalsbitar
   PSA=0;    Predidiver-allokeringsbitar
   PS0=0; PS1=0; PS2=0;  Urvalsbitar före delning
   TMR0IF=0;    Timerflaggan är clear 0
   GIE=1;       Öppna den globala avbrottet
   TMR0IE=0;    Timer 0 aktiverad
   TMR0=236;    Diktens första värde
}
void interrupt timer0()
{
     om(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
Void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    medan (delay_time);
    TMR0IE=0;
}
Uchar Read_byte()
{
Uchar I, Temp, Hum;
   för(i=0; i<8; i++)   
    {
       Samtidigt(! RC1);   
       timer0_delay(2); Fördröjning 20us  
       temp=0;
       if(RC1){temp=1; medan (RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=temp;                           
  }
   return(hum);
}
tomrum Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Bussen är nedåtdragen med minst 18 MS
RC1=1;
timer0_delay(2); Bussen dras upp av pull-up-motståndet och värdens fördröjning är 20 us.
TRISC1=1;     Värden är inställd på ingång för att bedöma slavresponssignalen
RC1=1;
  om(! RC1)
  {
   Samtidigt((! RC1)) // Bestäm om slaven sänder ut en 80 amerikanska lågresponssignal eller inte
   {
    NOP();
   }
   while(RC1) // Bestäm om slaven avger en hög nivå på 80us, och om så är fallet, går den in i datamottagande tillstånd
   {
    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;
  om(check==ckeck_value)
   {
      Proce_num(0x84,temp_valueH);
      Proce_num(0x94,hum_valueH);
   }
  }
  TRISC1=0;
  RC1=1;
}
Void main()
{
  TRISB=0X00;
  lcdinit();
  timer0_init();
  medan(1)
  {
   Read_data();
  }
}[/mw_shl_code]




Föregående:Tanke och naken programmering [Serialiserad]
Nästa:Välfärdsförmåner, C-språkets namnregler, mycket praktiska saker
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com