Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 10156|Yanıt: 0

pic16f877a, sıcaklık ve nem sensörü DHT11'i çalıştırıyor

[Bağlantıyı kopyala]
Yayınlandı 25.11.2014 22:12:09 | | |
[mw_shl_code=c,doğru]#include<pic.h> // 12M kristal osilatör kullanın
#include"12864.h"
#define imzasız int
#define imzasız Uchar
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
uchar temp_valueH,hum_valueH,hum_valueL,temp_valueL,çek;
uint delay_time;
Void timer0_init()
{
   TMR0=0;  İlk değer
   T0CS=0;  Kristal osilatörün 1/4 kısmı olan saat kaynağını seçin;
   T0SE=1;   Saat kaynağı kenar seçim bitleri
   PSA=0;    Ön bölücü tahsis bitleri
   PS0=0; PS1=0; PS2=0;  Bölüm öncesi seçim bölümleri
   TMR0IF=0;    Zamanlayıcı bayrağı açık 0
   GIE=1;       Küresel kesintiyi aç
   TMR0IE=0;    Zamanlayıcı 0 etkinleştirildi
   TMR0=236;    Şiirin ilk değeri
}
void kesme zamanlayıcısı0()
{
     if(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    oynu(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|=sıcaklık;                           
  }
   return (hum);
}
Void Read_data()
{
uchar ckeck_value;
RC1=0;
timer0_delay(2500); Otobüs en az 18 MS tarafından aşağı çekilmiştir
RC1=1;
timer0_delay(2); Otobüs, pull-up direnci tarafından yukarı çekilir ve ana bilgisayar gecikmesi 20us olur
TRISC1=1;     Sunucu, köle yanıt sinyalini değerlendirmek için giriş olarak ayarlanmıştır
RC1=1;
  if(! RC1)
  {
   Oysa((! RC1)) // Slave'in 80us düşük yanıt sinyali yayıp yaymadığını belirleyin
   {
    NOP();
   }
   while(RC1) // Slave'in yüksek seviyede 80us yayımlayıp yaymadığını belirler ve eğer öyleyse, veri alıcı duruma girer
   {
    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]




Önceki:Düşünce ve Çıplak Programlama [Seriye Edilmiş]
Önümüzdeki:Sosyal yardım yardımları, C dili isimlendirme kuralları, çok pratik şeyler
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com