Thông báo

Collapse
No announcement yet.

giao tiếp giữ pic 16f887 với cảm biến DHT11 ????

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • giao tiếp giữ pic 16f887 với cảm biến DHT11 ????

    mình đang muốn làm 1 mạch đo , nhiệt độ và độ ẩm dùng con DHt11 hiện LCD, phần LCD thì cơ bản đã xong vì dễ, còn phần đọc dữ liệu từ con này thì làm như thế nào vậy mình mới học sơ qua nên ko rành lắm, dùng ngôn ngữ CCS, có thể chỉ cho mình cái mô hình để đọc dữ liệu từ 1 dạng chuỗi bit bất kì luôn nha ? , tks mọi người , code mẫu càng tốt
    CK6C -HUI

  • #2
    Nguyên văn bởi minhtri0405 Xem bài viết
    mình đang muốn làm 1 mạch đo , nhiệt độ và độ ẩm dùng con DHt11 hiện LCD, phần LCD thì cơ bản đã xong vì dễ, còn phần đọc dữ liệu từ con này thì làm như thế nào vậy mình mới học sơ qua nên ko rành lắm, dùng ngôn ngữ CCS, có thể chỉ cho mình cái mô hình để đọc dữ liệu từ 1 dạng chuỗi bit bất kì luôn nha ? , tks mọi người , code mẫu càng tốt
    Bạn vào đây xem là có tất cả những gì đang cần:
    Cảm Biến Nhiệt Độ và Độ Ẩm DHT11_Cảm Biến Độ Ẩm_Cảm Biến_BanLinhKien.Vn - MinhHaGroup.Com
    Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
    http://diencongnghiep360.com/
    http://tudienhathe.vn/

    Comment


    • #3
      em tim được rồi , nhưng có 1 phép toán chưa hiểu lăm mà phép |= là phép gán nhưng chưa hiểu cụ thể sao , bác nào cho e cái VD được k o
      CK6C -HUI

      Comment


      • #4
        Nguyên văn bởi minhtri0405 Xem bài viết
        em tim được rồi , nhưng có 1 phép toán chưa hiểu lăm mà phép |= là phép gán nhưng chưa hiểu cụ thể sao , bác nào cho e cái VD được k o
        nó là phép toán viết tắt của x= x| <biến, số>
        cái này là của C cơ bản, với các phép toán logic cơ bản người ta có thể viết gọn lại như vậy, ví dụ phép nhân
        x*=2 <=> x=x*2
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          Nguyên văn bởi vietthanh123 Xem bài viết
          Tks bạn mình cũng tìm được như gị

          Nguyên văn bởi mast090 Xem bài viết
          nó là phép toán viết tắt của x= x| <biến, số>
          cái này là của C cơ bản, với các phép toán logic cơ bản người ta có thể viết gọn lại như vậy, ví dụ phép nhân
          x*=2 <=> x=x*2
          ok tks bạn
          CK6C -HUI

          Comment


          • #6
            các bác cho e hỏi thêm là , trong CCS thì làm sao set được tris cho PIN B0 , hay cho PIN khác bất kì vậy, lệnh set_tris nó dùng cho tất cả các chân luôn . em viet như vậy nhưng ko bít có đúng ko

            #byte TRISB = 0x86
            #bit TRISB0 = TRISB.0
            #bit TRISB1 = TRISB.1
            #bit TRISB2 = TRISB.2
            #bit TRISB3 = TRISB.3
            #bit TRISB4 = TRISB.4
            #bit TRISB5 = TRISB.5
            #bit TRISB6 = TRISB.6
            #bit TRISB7 = TRISB.7
            CK6C -HUI

            Comment


            • #7
              int8 GetTempHumi(int8 temp,int8 humi,int8 temp2, int8 humi2)
              {

              int8 tam[5]={0,0,0,0,0};
              int j,i,checksum;
              test=1;
              set_tris_B(0x00); // set Pin B0 la output
              output_high(PIN_B0); // B0 = 1;
              delay_us(60);
              output_low(PIN_B0); // set Pin B0 la output
              delay_ms(25); // it nhat 18ms de DHT kiem tra.
              output_high(PIN_B0); // dua len 1 cho DHT tra loi lai
              set_tris_B(0x01); // set Pin B0 la input
              delay_us(60); // doi DHT dap ung trong vong 20us-40us, o day dat 60us
              if(PIN_B0) goto end; // sau 60us ma van bang 1 thi khong giao tiep duoc
              else while(!(DHT_DATA));
              delay_us(60); //Doi DaTa len 1
              if(!PIN_B0) goto end; // kiem tra data o muc 0
              else while((PIN_B0)); //Doi Data ve 0, bat dau nhan du lieu
              //Bat dau doc du lieu
              for(i=0;i<5;i++)
              {
              for(j=0;j<8;j++)
              {
              while((!PIN_B0));//Doi Data len 1
              delay_us(50);
              if(PIN_B0)
              {
              tam[i]|=(1<<(7-j));
              while(PIN_B0);//Doi Data xuong 0
              }
              }
              }
              checksum=tam[0]+tam[1]+tam[2]+tam[3];
              if((checksum)!=tam[4]) goto end ;
              humi = tam[0];
              humi2 = tam[1];
              temp = tam[2];
              temp2 = tam[3];
              break;
              end :
              test=0;

              }


              Cho mình hỏi cái hàm đọc dữ liệu từ DHT11 của mình bị gì mà nó ko được dữ liệu , hay cũng có thể ko trả về dữ liệu hix, cái bài tham khảo kia thì họ viết tách ra nhiều file con quá đọc hàm chả hiểu gì cả. Có cần phải khai báo hàm ko ? , mình khai báo hàm int8 GetTempHumi(int8 temp,int8 humi,int8 temp2, int8 humi2) hiinhf như bị sai đúng ko mọi người . tks
              CK6C -HUI

              Comment

              Về tác giả

              Collapse

              minhtri0405 Tìm hiểu thêm về minhtri0405

              Bài viết mới nhất

              Collapse

              Đang tải...
              X