Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 10156|Ответ: 0

pic16F877A управляет датчиком температуры и влажности DHT11

[Скопировать ссылку]
Опубликовано 25.11.2014 22:12:09 | | |
[mw_shl_code=c,true]#include<pic.h> // Используйте 12M кристаллический осциллятор
#include"12864.h"
#define uint unsigned int
#define uchar unsigned char
__CONFIG(FOSC_HS WDTE_OFF LVP_OFF);
Учар temp_valueH,hum_valueH,hum_valueL,temp_valueL, проверено;
delay_time;
Пустоты timer0_init()
{
   TMR0=0;  Первое значение
   T0CS=0;  Выберите источник тактового сигнала, который составляет 1/4 кристаллического осциллятора;
   T0SE=1;   Биты выбора рёбер источника тактового сигнала
   PSA=0;    Биты предварительного распределения делителей
   PS0=0; PS1=0; PS2=0;  Отборочные моменты перед дивизионом
   TMR0IF=0;    Флаг таймера чист 0
   GIE=1;       Открыть глобальное прерывание
   TMR0IE=0;    Таймер 0 включен
   TMR0=236;    Первая ценность стихотворения
}
Таймер прерывания пустоты 0()
{
     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()
{
Учар I, временно, хум;
   for(i=0; I<8; i++)   
    {
       В то время(! RC1);   
       timer0_delay(2); Delay 20us  
       temp=0;
       if(RC1){temp=1; в то время как (RC1); }
       еще{temp=0; }   
       гул<<=1;
       hum|=временно;                           
  }
   return (гул);
}
пустоты Read_data()
{
uchar ckeck_value;
RC1=0;
timer0_delay(2500); Автобус опускается как минимум на 18 миллионов миль
RC1=1;
timer0_delay(2); Шина подтягивается подтягивающим резистором, а задержка хоста равна 20us
TRISC1=1;     Хост настроен на вход для оценки сигнала отклика ведомого
RC1=1;
  если(! RC1)
  {
   В то время((! RC1)) // Определите, излучает ли подведённый сигнал низкого отклика 80us или нет
   {
    NOP();
   }
   while(RC1) // Определите, излучает ли подведённый сигнал высокого уровня 80us, и если да, он переходит в состояние приема данных
   {
    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();
  в то время(1)
  {
   Read_data();
  }
}[/mw_shl_code]




Предыдущий:Мысли и голое программирование [Сериализация]
Следующий:Социальные льготы, правила именования на языке C — очень практичные вещи
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com