Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 10156|Risposta: 0

la pic16f877a controlla il sensore di temperatura e umidità DHT11

[Copiato link]
Pubblicato su 25/11/2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Usa un oscillatore a cristallo da 12M
#include"12864.h"
#define uint unsigned int
#define uchar personaggio senza firma
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, controllo;
uint delay_time;
void timer0_init()
{
   TMR0=0;  Primo valore
   T0CS=0;  Seleziona la sorgente di clock, che corrisponde a 1/4 dell'oscillatore di cristallo;
   T0SE=1;   Bit di selezione dei bordi della sorgente di clock
   PSA=0;    Bit di allocazione del predivisore
   PS0=0; PS1=0; PS2=0;  Bit di selezione pre-divisione
   TMR0IF=0;    Il segnale del timer è libero 0
   GIE=1;       Apri l'interruzione globale
   TMR0IE=0;    Timer 0 abilitato
   TMR0=236;    Il primo valore della poesia
}
Time di interruzione void Timer0()
{
     se(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
Void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    mentre(delay_time);
    TMR0IE=0;
}
Uchar Read_byte()
{
uchar i, temp, hum;
   per (i=0; i<8; i++)   
    {
       mentre(! RC1);   
       timer0_delay(2); Delay 20us  
       temp=0;
       if(RC1){temp=1; while(RC1); }
       else{temp=0; }   
       ronzio<<=1;
       hum|=temp;                           
  }
   ritorno (hum);
}
void Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); L'autobus viene trainato giù da almeno 18 MS
RC1=1;
timer0_delay(2); Il bus viene tirato verso l'alto dalla resistenza di pull-up e il ritardo dell'host è di 20us
TRISC1=1;     L'host è impostato per l'input per giudicare il segnale di risposta dello slave
RC1=1;
  se(! RC1)
  {
   mentre((! RC1)) // Determina se lo schiavo emette un segnale a bassa risposta di 80us o meno
   {
    NOP();
   }
   while(RC1) // Determinare se lo schiavo emette un livello elevato di 80us e, in tal caso, entra nello stato di ricezione dei dati
   {
    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;
  if(check==ckeck_value)
   {
      Proce_num(0x84,temp_valueH);
      Proce_num(0x94,hum_valueH);
   }
  }
  TRISC1=0;
  RC1=1;
}
void main()
{
  TRISB=0X00;
  lcdinit();
  timer0_init();
  mentre(1)
  {
   Read_data();
  }
}[/mw_shl_code]




Precedente:Pensiero e programmazione nuda [Serializzato]
Prossimo:Sussidi sociali, regole di denominazione in lingua C, cose molto pratiche
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com