Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 10156|Antwort: 0

pic16f877a steuert den Temperatur- und Feuchtigkeitssensor DHT11

[Link kopieren]
Veröffentlicht am 25.11.2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Verwenden Sie einen 12M-Kristalloszillator
#include"12864.h"
#define unsignierte Int
#define Uchar unsignierter Char
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, check;
Uint delay_time;
Void timer0_init()
{
   TMR0=0;  Erster Wert
   T0CS=0;  Wählen Sie die Taktquelle, die zu einem Viertel des Kristalloszillators ist;
   T0SE=1;   Taktquellen-Kantenauswahlbits
   PSA=0;    Vorteiler-Allokationsbits
   PS0=0; PS1=0; PS2=0;  Selektionsbits vor der Division
   TMR0IF=0;    Die Timer-Flagge ist gelöscht 0
   GIE=1;       Öffne die globale Unterbrechung
   TMR0IE=0;    Timer 0 aktiviert
   TMR0=236;    Der erste Wert des Gedichts
}
Void Interrupt Timer0()
{
     if(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
Void timer0_delay(UINT delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    während (delay_time);
    TMR0IE=0;
}
Uchar Read_byte()
{
Uchar I, Temp, Hum;
   for(i=0; i<8; i++)   
    {
       während(! RC1);   
       timer0_delay(2); Verzögerung 20us  
       Temperatur=0;
       if(RC1){temp=1; während (RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=Temperatur;                           
  }
   return (summen);
}
Void Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Der Bus wird um mindestens 18 MS nach unten gezogen
RC1=1;
timer0_delay(2); Der Bus wird vom Pull-up-Widerstand nach oben gezogen und die Host-Verzögerung beträgt 20 US.
TRISC1=1;     Der Host ist auf Eingang eingestellt, um das Slave-Antwortsignal zu beurteilen
RC1=1;
  wenn(! RC1)
  {
   während((! RC1)) // Bestimmen Sie, ob der Slave ein 80us-Low-Response-Signal aussendet oder nicht
   {
    NOP();
   }
   while(RC1) // Bestimmen Sie, ob der Slave einen hohen Wert von 80 us aussendet, und falls ja, tritt er in den Datenempfangszustand ein
   {
    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;
  wenn(check==ckeck_value)
   {
      Proce_num(0x84,temp_valueH);
      Proce_num(0x94,hum_valueH);
   }
  }
  TRISC1=0;
  RC1=1;
}
void main()
{
  TRISB=0X00;
  lcdinit();
  timer0_init();
  während(1)
  {
   Read_data();
  }
}[/mw_shl_code]




Vorhergehend:Gedanken und nackte Programmierung [Serialisiert]
Nächster:Sozialleistungen, C-Sprach-Benennungsregeln, sehr praktische Dinge
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com