Thông báo

Collapse
No announcement yet.

Xin mọi người chỉ giúp về mạch đo độ ẩm dùng HS1101

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

  • Xin mọi người chỉ giúp về mạch đo độ ẩm dùng HS1101

    Em đang làm đồ án đo độ ẩm dùng HS1101 hiển thị độ ẩm lên LCD
    Khi em chạy mô phỏng thì kết quả luôn hiện là 0%
    anh nào có thể kiểm tra giúp em được không ạ?
    Thanks !!!!
    mạch mô phỏng :
    Click image for larger version

Name:	do am.jpg
Views:	1
Size:	117.9 KB
ID:	1420159
    (em không đính kèm được file nên mạo muội copy code vào đây ạ)

    //#include <AT89X52.h>
    #include <regx52.h>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>

    // noi cac chan cho LCD
    sbit RS=P3^0;
    sbit RW=P3^1;
    sbit E=P3^7;
    sbit Bf=P2^7;

    sbit Fout = P3^2; // noi chan ra tu 555 voi ngat 0 cua 89x52

    char x; // dung trong hien thi LCD


    //khoi chuong trinh do do am
    // su dung NE555

    unsigned char dem=0;
    int do_am;
    unsigned int so_xung=0;

    void ngat_ngoai0 () interrupt 0
    {
    so_xung++;
    TF0 = 0;
    TR0 = 1;
    }


    void ngat_timer0 () interrupt 1 //sau 50 ms ham ngat bat dau lam viec
    {


    dem++;
    TH0 =-250;
    TL0=-250; // nap gia tri ban dau cho timer
    TR0 = 1;
    if(dem>4000) // 4000 lan nhan voi 250 = 1s .Vay thoi gian lay mau la 1 s
    {

    if (so_xung>7351) do_am=0;
    else if(so_xung>7224) do_am=0+ (so_xung-7224)*10/(7351-7224);
    else if(so_xung>7100) do_am=10+(so_xung-7100)*10/(7224-7100);
    else if(so_xung>6976) do_am=20+(so_xung-6976)*10/(7100-6976);
    else if(so_xung>6853) do_am=30+(so_xung-6853)*10/(6976-6853);
    else if(so_xung>6728) do_am=40+(so_xung-6728)*10/(6853-6728);
    else if(so_xung>6600) do_am=50+(so_xung-6600)*10/(6728-6600);
    else if(so_xung>6468) do_am=60+(so_xung-6468)*10/(6600-6468);
    else if(so_xung>6330) do_am=70+(so_xung-6330)*10/(6468-6330);
    else if(so_xung>6186) do_am=80+(so_xung-6186)*10/(6330-6186);
    else if(so_xung>6033) do_am=90+(so_xung-6033)*10/(6186-6033);

    dem=0;
    so_xung=0;
    }

    }

    ///////////////////////////////////////////
    // chuong trinh hien thi len LCD
    void delay(unsigned int time)
    {
    unsigned int i;
    for(i=0; i<time; i++);
    }

    // Ham kiem tra ban
    void buflag(void)
    {
    P2=0xff;
    RS=0; //cho phep ghi lenh
    RW=1; // Doc tu LCD
    P2=x;
    delay(100);
    while(Bf)
    {
    E=1;
    delay(200);
    E=0;
    }
    }

    // HAm gui lenh
    void lenh(unsigned char lcd_lenh)
    {
    buflag();
    RS=0;
    RW=0; //ghi tu 8051 len lcd
    E=1;
    delay(200);
    P2=lcd_lenh;
    E=0;
    delay(200);
    }

    //Ham gui 1 ky tu
    void kytu(unsigned char ky_tu)
    {
    buflag();
    P2=ky_tu;
    RS=1; // chon thanh ghi du lieu
    RW=0; // ghi vao lcd
    E=1;
    delay(10);
    E=0;
    delay(10);
    }
    // ham gui 1 chuoi ky tu
    void chuoi(unsigned char *s )
    {
    while(*s)
    {
    kytu(*s);
    s++;
    }
    }

    // Ham khoi tao
    void khoitao(void)
    {
    lenh(0x38);
    lenh(0x0c);
    lenh(0x01);
    lenh(0x80);
    }

    // Ham chinh
    void main(void)
    {
    int hum;
    char str[20];
    TMOD = 0x11;
    IE = 0x83;
    TH0 = -250;
    TL0 = -250;

    TR0 = 1;
    TF0 = 0;
    IT0 = 1;
    EA = 1;
    EX0 = 1;
    ET0 =1;
    //IP = 0x05;



    khoitao();
    lenh(0x80);
    while(1)
    {
    hum = do_am;
    lenh(0xc0);
    sprintf(str, "Do Am: %d %%", hum);
    chuoi(str);
    delay(300);
    }
    }
    See you on the dark side of the moon

  • #2
    Hì coi lại chổ 555 nhé , sai rồi.

    Comment


    • #3
      Nguyên văn bởi thientanvt Xem bài viết
      Hì coi lại chổ 555 nhé , sai rồi.
      a có thể chỉ rõ hơn cho e được không ?
      See you on the dark side of the moon

      Comment


      • #4
        Đây nè còn muốn biết R1, R2, R4 giá trị nhiêu thì down datasheet HS1101 về là có nhé.

        Click image for larger version

Name:	555 + HS1101.png
Views:	1
Size:	29.9 KB
ID:	1390668

        Comment


        • #5
          Nguyên văn bởi thientanvt Xem bài viết
          Đây nè còn muốn biết R1, R2, R4 giá trị nhiêu thì down datasheet HS1101 về là có nhé.

          [ATTACH=CONFIG]80413[/ATTACH]
          cái này em đúng rồi mà anh
          còn các giá trị thì em cho vào theo như datasheet hướng dẫn rồi
          a có thể xem giúp em về đoạn code trong timer để xác định tần số được không
          vì em không rành về cái này lắm nên sợ sai chổ đó
          See you on the dark side of the moon

          Comment


          • #6
            Bác nào vào giúp em với
            See you on the dark side of the moon

            Comment


            • #7
              Uhm, Bác nói mới biết nhìn nhầm. Khi đếm F không nên dùng INT ngoài vì nếu làm như thế chương trình cứ ngồi mà nhảy vô ngắt hoài không có thời gian làm việc khác.
              Nên dùng Counter 0,1 . Và đếm time bằng timer 0,1 . Rồi là ra giá trị của F thôi không có gì phải lo ngại, trong 1s đó đủ để làm mọi thứ.
              Sai chổ 1s . 50ms * 4000 => 200s ah tràn biến F mất rồi nhé.

              Comment


              • #8
                Nguyên văn bởi thientanvt Xem bài viết
                Uhm, Bác nói mới biết nhìn nhầm. Khi đếm F không nên dùng INT ngoài vì nếu làm như thế chương trình cứ ngồi mà nhảy vô ngắt hoài không có thời gian làm việc khác.
                Nên dùng Counter 0,1 . Và đếm time bằng timer 0,1 . Rồi là ra giá trị của F thôi không có gì phải lo ngại, trong 1s đó đủ để làm mọi thứ.
                Sai chổ 1s . 50ms * 4000 => 200s ah tràn biến F mất rồi nhé.
                a có thể chỉ rõ chổ sai không?
                [e tự học nên cái timer với ngắt còn hiểu lơ mơ lắm]
                See you on the dark side of the moon

                Comment


                • #9
                  Mấy cái này là cơ bản sài VĐK là sài timer, counter, INT .... chứ nếu không sài thì dùng VĐK làm gì.

                  Như vậy nhé , tôi không hiểu cách tính RH của bác, nên tôi sẽ hướng dẫn chổ đo F thôi.

                  Code:
                  // khởi tạo ngắt timer 0 đếm thời gian 1s
                  TMOD |= 0x1; // chọn mode 0 , 16b timer0
                  // nạp giá trị khởi tạo cho timer 0
                  // với thạch anh là 12Mhz nhé
                  TH0 = 0x3C; // delay 50ms
                  TL0 = 0xB0;
                  TF0 = 0; // xóa cờ ngắt 
                  ET0 = 1; // cho phép ngắt sự kiện timer 0 
                  TR0 = 1; // chạy timer 0
                  // khởi tạo timer 1 làm counter 
                  TMOD |= 0x40; // chon chế độ counter 1
                  TH1 = 0x0; // xóa giá trị counter 1
                  TL1 = 0x0;
                  TF1 = 0;
                  ET1 = 0;  // cấm ngắt counter 1
                  TR1 = 1; // chạy counter 1
                  
                  EA = 1;  // cho phép ngắt toàn cục
                  
                  void ngắt timer 0 () interrupt .... {
                  TF0 = 0;
                  TH0 = 0x3C; // delay 50ms
                  TL0 = 0xB0;
                  dem ++;
                  if(dem == 20){
                      // lấy giá trị counter 1
                      // tới đây là tự làm được rồi nhé
                      // xong xóa counter 1
                      TH1 = TL1 = 0x0;
                      dem = 0;
                  }
                  }
                  Last edited by thientanvt; 22-12-2013, 17:34.

                  Comment


                  • #10
                    ok
                    thanks bác nhiều
                    See you on the dark side of the moon

                    Comment


                    • #11
                      bạn còn cái mô phỏng với code nạp vđk ko cho mình xin với.m cũng đang làm cái đề tài này.có gì bạn gửi vô email: dtdh1711@gmail.com .m cám ơn nhiều!

                      Comment


                      • #12
                        hú hú bác Thaipv gửi e bài đó được không cả file proteus ý
                        mail e: trhunghd@gmail.com

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X