Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 10156|Resposta: 0

pic16f877a aciona o sensor de temperatura e umidade DHT11

[Copiar link]
Publicado em 25/11/2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Use oscilador de cristal 12M
#include"12864.h"
#define uint int sem assinatura
#define uchar char sem assinatura
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, confere;
Uint delay_time;
nulo timer0_init()
{
   TMR0=0;  Primeiro valor
   T0CS=0;  Selecione a fonte do clock, que é 1/4 do oscilador de cristal;
   T0SE=1;   Bits de seleção de borda da fonte do clock
   PSA=0;    Bits de alocação do pré-divisor
   PS0=0; PS1=0; PS2=0;  Bits de seleção pré-divisão
   TMR0IF=0;    A bandeira do temporizador está limpa 0
   GIE=1;       Abra a interrupção global
   TMR0IE=0;    Timer 0 ativado
   TMR0=236;    O primeiro valor do poema
}
Void Interrupt Timer0()
{
     if(TMR0IF)
     {
       TMR0IF=0; TMR0=235;
       delay_time--;
     }   
}
Void timer0_delay(uint delay_value)
{
    delay_time=delay_value;
    TMR0IE=1;
    enquanto (delay_time);
    TMR0IE=0;
}
Uchar Read_byte()
{
uchar i, temp, hum;
   para (i=0; i<8; i++)   
    {
       enquanto(! RC1);   
       timer0_delay(2); Atraso 20us  
       temp=0;
       if(RC1){temp=1; enquanto (RC1); }
       else{temp=0; }   
       hum<<=1;
       hum|=temp;                           
  }
   retorno (hum);
}
nulo Read_data()
{
Uchar ckeck_value;
RC1=0;
timer0_delay(2500); O ônibus é puxado para baixo por pelo menos 18 MS
RC1=1;
timer0_delay(2); O barramento é puxado para cima pelo resistor de puxação e o atraso do host é 20us
TRISC1=1;     O host é configurado para entrar e julgar o sinal de resposta do slave
RC1=1;
  se(! RC1)
  {
   enquanto((! RC1)) // Determine se o escravo emite um sinal de resposta baixa de 80us ou não
   {
    NOP();
   }
   while(RC1) // Determine se o escravo emite um nível alto de 80us e, em caso afirmativo, ele entra no estado receptor de dados
   {
    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;
  se(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]




Anterior:Pensamento e Programação Nua [Serializado]
Próximo:Benefícios sociais, regras de nomeação da língua C, coisas muito práticas
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com