Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 10156|Odpoveď: 0

Pic16F877a riadi snímač teploty a vlhkosti DHT11

[Kopírovať odkaz]
Zverejnené 25. 11. 2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Použite 12M kryštálový oscilátor
#include"12864.h"
#define unsigned int
#define uchar nepodpísaný char
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, skontrolované;
uint delay_time;
void timer0_init()
{
   TMR0=0;  Prvá hodnota
   T0CS=0;  Vyberte zdroj hodín, ktorý je 1/4 kryštálového oscilátora;
   T0SE=1;   Bity výberu hrany v hodinovom zdroji
   PSA=0;    Bity alokácie predividéra
   PS0=0; PS1=0; PS2=0;  Výberové bity pred delením
   TMR0IF=0;    Časovač je jasný na 0
   GIE=1;       Otvorte globálne prerušenie
   TMR0IE=0;    Časovač 0 zapnutý
   TMR0=236;    Prvá hodnota básne
}
void interrupt timer0()
{
     if(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
prázdnota 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); Oneskorenie 20us  
       temp=0;
       if(RC1){temp=1; while(RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=temp;                           
  }
   return(hum);
}
void Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Autobus je ťahaný dole aspoň o 18 MS
RC1=1;
timer0_delay(2); Zbernica je vytiahnutá nahor pull-up rezistorom a oneskorenie hostiteľa je 20 USD
TRISC1=1;     Hostiteľ je nastavený na vstup na posúdenie signálu slave
RC1=1;
  if(! RC1)
  {
   zatiaľ čo ((! RC1)) // Zistite, či slave vysiela signál s nízkou odozvou 80us alebo nie
   {
    NOP();
   }
   while(RC1) // Zistite, či slave vysiela vysokú úroveň 80us, a ak áno, vstupuje do stavu prijímania dát
   {
    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();
  zatiaľ čo (1)
  {
   Read_data();
  }
}[/mw_shl_code]




Predchádzajúci:Myšlienka a nahé programovanie [seriálové]
Budúci:Sociálne dávky, pravidlá pomenovania v jazyku C, veľmi praktické veci
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com