Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 10156|Atbildi: 0

pic16f877a vada temperatūras un mitruma sensoru DHT11

[Kopēt saiti]
Publicēts 25.11.2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Izmantojiet 12M kristāla oscilatoru
#include"12864.h"
#define uint unsigned int
#define uchar neparakstīts char
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
uchar temp_valueH,hum_valueH,hum_valueL,temp_valueL,čeks;
uint delay_time;
Void timer0_init()
{
   TMR0=0;  Pirmā vērtība
   T0CS=0;  Izvēlieties pulksteņa avotu, kas ir 1/4 no kristāla oscilatora;
   T0SE=1;   Pulksteņa avota malu atlases biti
   PSA = 0;    Predalītāju sadalījuma biti
   PS0=0; PS1=0; PS2=0;  Pirmsdivīzijas atlases biti
   TMR0IF=0;    Taimera karodziņš ir skaidrs 0
   GIE = 1;       Globālā pārtraukuma atvēršana
   TMR0IE=0;    Iespējots taimeris 0
   TMR0=236;    Dzejoļa pirmā vērtība
}
Tukšuma pārtraukuma taimeris0()
{
     if(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    kamēr (delay_time);
    TMR0IE=0;
}
Uchar Read_byte()
{
uchar i, temp, hum;
   for(i=0; I<8; i++)   
    {
       kamēr (! RC1);   
       timer0_delay 2. punkts; Aizkavēšanās 20us  
       temp=0;
       if(RC1){temp=1; kamēr (RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=temp;                           
  }
   atgriešanās (hum);
}
Spēkā neesošs Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); Autobusu nolaiž vismaz 18 MS
RC1=1;
timer0_delay 2. punkts; Autobusu velk uz augšu ar pull-up rezistoru, un saimnieka aizkavēšanās ir 20us
TRISC1=1;     Resursdators ir iestatīts ievadei, lai spriestu par vergu reakcijas signālu
RC1=1;
  Ja (! RC1)
  {
   kamēr ((! RC1)) // Nosakiet, vai vergs izstaro 80us zemas reakcijas signālu vai nē
   {
    NOP ();
   }
   kamēr (RC1) // Nosakiet, vai vergs izstaro augstu līmeni 80us, un, ja tā, tas nonāk datu saņemšanas stāvoklī
   {
    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 ();
  kamēr (1)
  {
   Read_data ();
  }
}[/mw_shl_code]




Iepriekšējo:Doma un kailā programmēšana [seriāls]
Nākamo:Labklājības pabalsti, C valodas nosaukšanas noteikumi, ļoti praktiskas lietas
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com