Thông báo

Collapse
No announcement yet.

DHT11 : Cảm biến nhiệt độ-độ ẩm hiển thị lcd >> các bác xem em phần xuất tín hiệu báo động với !!

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

  • DHT11 : Cảm biến nhiệt độ-độ ẩm hiển thị lcd >> các bác xem em phần xuất tín hiệu báo động với !!

    ko hiểu sao em sai chỗ nào mà khi nd quá 40 độ lại ko có đèn báo
    #include "main.h"
    #include "lcd_new.h"


    #use FAST_IO(B)
    #use FAST_IO(C)
    #use FAST_IO(D)
    #use FAST_IO(E)

    #byte PORTA=0x05
    #byte PORTB=0x06
    #byte PORTC=0x07
    #byte PORTD=0x08
    #byte PORTE=0x09
    #bit led = portD.0

    #bit DHT_DATA = PORTA.1
    #define SET_PIN SET_TRIS_A
    #define DHT_ER 0
    #define DHT_OK 1
    #define DHT_ND 0
    #define DHT_DA 1

    float nhietdo = 0, doam=0;
    unsigned char DHT_GetTemHumi (unsigned char select)
    {
    unsigned char buffer[5]={0,0,0,0,0};
    unsigned char ii,i,checksum;

    SET_PIN(0x00);// set la cong ra
    DHT_DATA=1;
    delay_us(60);
    DHT_DATA = 0;
    delay_ms(25); // it nhat 18ms
    DHT_DATA = 1;
    SET_PIN(0xff);
    delay_us(40);
    if(DHT_DATA==1)return DHT_ER ;
    else while(DHT_DATA==0); //Doi DaTa len 1
    delay_us(60); //60
    if(DHT_DATA==0)return DHT_ER;
    else while((DHT_DATA==1)); //Doi Data ve 0
    //Bat dau doc du lieu
    for(i=0;i<5;i++)
    {
    for(ii=0;ii<8;ii++)
    {
    while(DHT_DATA==0);//Doi Data len 1 !DHT_DATA
    delay_us(50); //50
    if(DHT_DATA==1)
    {
    buffer[i]|=(1<<(7-ii));
    while(DHT_DATA==1);//Doi Data xuong 0
    }
    }
    }
    //Tinh toan check sum
    checksum=buffer[0]+buffer[1]+buffer[2]+buffer[3];
    //Kiem tra check sum
    if((checksum)!=buffer[4])return DHT_ER;
    //Lay du lieu
    if (select==DHT_ND)
    {
    //Return the value has been choosen
    return(buffer[2]);
    }
    else if(select==DHT_DA)
    {
    return(buffer[0]);
    }
    return DHT_OK;


    }
    //------------------------------------------------------//
    void main()
    {
    set_tris_d(0xff);
    set_tris_a(0xff);
    lcd_init();
    delay_ms(200);
    lcd_gotoxy(7,1);
    lcd_putc('H');
    delay_ms(100);
    lcd_putc('I');
    delay_ms(200);
    lcd_putc('!');
    delay_ms(1000);
    printf(lcd_putc,"\f " );
    printf(lcd_putc,"dangphuctiep");
    delay_ms(1000);
    lcd_gotoxy(1,2);
    printf(lcd_putc,"demo" );
    delay_ms(2000);
    printf(lcd_putc,"\f " );
    while(TRUE)
    {
    set_tris_d(0xff);
    nhietdo= DHT_GetTemHumi (DHT_ND);
    delay_ms(400);
    lcd_gotoxy(1,1);
    printf(lcd_putc,"Nhiet do: " );
    lcd_gotoxy(10,1);
    printf(lcd_putc,"%3.1f ^C",nhietdo);
    delay_ms(800);
    if (nhietdo>=40)
    {
    led=0;
    }
    doam= DHT_GetTemHumi (DHT_DA);
    lcd_gotoxy(1,2);
    printf(lcd_putc,"Do am: " );
    lcd_gotoxy(10,2);
    printf(lcd_putc,"%3.1f ",doam);
    lcd_gotoxy(14,2);
    lcd_putc('%');
    delay_ms(1000);
    }
    }
    Last edited by dangphuctiep; 23-07-2016, 01:53.

  • #2
    Nó không xuất tín hiệu báo động vì code không phải do em viết, mà copy từ nơi khác, nên em chả hiểu gì, chả biết sửa ở đâu. Viết từ đầu từng ít một, kiểm tra từng ít một ... may ra chạy được em ạ.
    Phần mềm tự do hoặc không dùng máy tính nữa !.

    Comment


    • #3
      Liên hệ với người viết code xem có thiếu chỗ nào không Bác

      Comment


      • #4
        Không hiểu lắm câu hỏi của bạn. Nếu bạn cho hiển thị LCD thì nhiệt độ và độ ẩm đã hiển thị đúng thông số chưa, trên 40 có hiển thị không.
        Nếu việc hiển thị đã đúng thì phần cảnh báo sẽ dễ dàng thôi

        Comment


        • #5
          Nguyên văn bởi chuotbu92 Xem bài viết
          Không hiểu lắm câu hỏi của bạn. Nếu bạn cho hiển thị LCD thì nhiệt độ và độ ẩm đã hiển thị đúng thông số chưa, trên 40 có hiển thị không.
          Nếu việc hiển thị đã đúng thì phần cảnh báo sẽ dễ dàng thôi
          mọi thứ đều hiển thị..nhưng riêng xuất tín hiệu ra lại ko dc (

          Comment


          • #6
            Nguyên văn bởi dangphuctiep Xem bài viết
            mọi thứ đều hiển thị..nhưng riêng xuất tín hiệu ra lại ko dc (
            Bạn thử bỏ led=0; delay_ms(800); led =1; ở trong thân while(1) xem câu lệnh đó của bạn có thực thi ko

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • bqviet
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi bqviet
              Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
              06-12-2025, 17:17
            • nguyendinhvan
              Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
              bởi nguyendinhvan
              Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
              05-12-2025, 19:59
            • afrendly
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi afrendly
              Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
              04-12-2025, 01:27
            • nick22
              Trả lời cho Máy điện châm ?
              bởi nick22
              Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
              01-12-2025, 13:23
            Đang tải...
            X