See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 10156|Vastuse: 0

pic16f877a juhib temperatuuri ja niiskuse andurit DHT11

[Kopeeri link]
Postitatud 25.11.2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Kasuta 12M kristallostsillaatorit
#include"12864.h"
#define uint unsigned int
#define Uchar allkirjastamata Char
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
uchar temp_valueH,hum_valueH,hum_valueL,temp_valueL,kontroll;
uint delay_time;
Void timer0_init()
{
   TMR0=0;  Esimene väärtus
   T0CS=0;  Vali kella allikas, mis on 1/4 kristallostsillaatorist;
   T0SE=1;   Kella allika servavaliku bitid
   PSA=0;    Eeljagaja jaotuse bitid
   PS0=0; PS1=0; PS2=0;  Eeldivisjoni valiku osad
   TMR0IF=0;    Taimeri lipp on tühi 0
   GIE=1;       Ava globaalne katkestus
   TMR0IE=0;    Taimer 0 lubatud
   TMR0=236;    Luuletuse esimene väärtus
}
void interrupt timer0()
{
     if(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
Void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    while(delay_time);
    TMR0IE=0;
}
uchar Read_byte()
{
uchar i, temp, hum;
   for(i=0; i<8; i++)   
    {
       while(! RC1);   
       timer0_delay(2); Delay 20us  
       temp=0;
       if(RC1){temp=1; while(RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=temp;                           
  }
   return (hum);
}
tühi Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Buss tõmmatakse alla vähemalt 18 miilimeetri võrra
RC1=1;
timer0_delay(2); Bussi tõmbab üles tõmbetakisti ja hosti viivitus on 20us
TRISC1=1;     Host on seatud sisendiks, et hinnata orjavastussignaali
RC1=1;
  if(! RC1)
  {
   kui((! RC1)) // Määra, kas orja kiirgab 80us madala vastusega signaali või mitte
   {
    NOP();
   }
   while(RC1) // Määra, kas orja kiirgab kõrget 80us taset, ja kui jah, siseneb see andmete vastuvõtuseisundisse
   {
    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();
  while(1)
  {
   Read_data();
  }
}[/mw_shl_code]




Eelmine:Mõtlemine ja alasti programmeerimine [Serialiseeritud]
Järgmine:Sotsiaaltoetused, C-keele nimetamise reeglid, väga praktilised asjad
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com