Thông báo

Collapse
No announcement yet.

pic16F876A và DS18B20

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

  • #16
    cám ơn bác
    Đời không như mình nghĩ. phải tranh thủ thôi ***********

    Comment


    • #17
      t1:alpha
      t2:board
      t3:cloak
      t4:decal
      t5:earth
      t6:fluid
      t7:glass
      t8:heart
      t9:inlet
      t10:juice
      Mãi đi tìm vàng.

      Comment


      • #18
        chẳng hiểu sao em gán địa chỉ vào cho 1 con, rồi viết ct khác đọc địa chỉ đó để lấy nhiệt độ thì không đúng.
        #include <16F886.h>
        #device *=16
        #device adc=8
        #FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
        #use delay(clock=8000000)
        #include <LCDdriver.c>
        #define ONE_WIRE_PIN PIN_A5

        void onewire_reset() // OK if just using a single permanently connected device
        {
        output_low(ONE_WIRE_PIN);
        delay_us( 500 ); // pull 1-wire low for reset pulse
        output_float(ONE_WIRE_PIN); // float 1-wire high
        delay_us( 500 ); // wait-out remaining initialisation window.
        }
        void onewire_write(int data)
        {
        int count;
        for (count=0; count<8; ++count)
        {
        output_low(ONE_WIRE_PIN);
        delay_us( 2 ); // pull 1-wire low to initiate write time-slot.
        output_bit(ONE_WIRE_PIN, shift_right(&data,1,0)); // set output bit on 1-wire
        delay_us( 60 ); // wait until end of write slot.
        output_float(ONE_WIRE_PIN); // set 1-wire high again,
        delay_us( 2 ); // for more than 1us minimum.
        }
        }
        int onewire_read()
        {
        int count, data;
        for (count=0; count<8; ++count)
        {
        output_low(ONE_WIRE_PIN);
        delay_us( 2 ); // pull 1-wire low to initiate read time-slot.
        output_float(ONE_WIRE_PIN); // now let 1-wire float high,
        delay_us( 8 ); // let device state stabilise,
        shift_right(&data,1,input(ONE_WIRE_PIN)); // and load result.
        delay_us( 120 ); // wait until end of read slot.
        }
        return( data );
        }
        float ds1820_read()
        {
        int8 busy=0, temp1, temp2;
        signed int16 temp3;
        float result;
        onewire_reset();
        onewire_write(0x55);

        onewire_write(0x28);
        onewire_write(0x6c);
        onewire_write(0xde);
        onewire_write(0x0f);
        onewire_write(0x01);
        onewire_write(0x00);
        onewire_write(0x00);
        onewire_write(0x6d);

        onewire_write(0x44);// convert T

        while (busy == 0) busy = onewire_read();
        output_high(ONE_WIRE_PIN);
        delay_ms(100);
        output_low(ONE_WIRE_PIN);

        onewire_reset();
        onewire_write(0x55);

        onewire_write(0x28);
        onewire_write(0x6c);
        onewire_write(0xde);
        onewire_write(0x0f);
        onewire_write(0x01);
        onewire_write(0x00);
        onewire_write(0x00);
        onewire_write(0x6d);

        onewire_write(0xBE);
        temp1 = onewire_read();
        temp2 = onewire_read();
        temp3 = make16(temp2, temp1);
        result = (float)temp3/16.0;
        delay_ms(200);
        return(result);
        }
        void main()
        {
        float temp;
        set_tris_b(0x00);
        lcd_init();
        lcd_putc("\f");
        while (TRUE)
        {
        temp = ds1820_read();
        lcd_gotoxy(1,1);
        printf(lcd_putc,"temp: %3.1f ", temp);
        lcd_putc(223);
        lcd_putc("C ");
        }
        }
        Click image for larger version

Name:	untitled.bmp
Views:	1
Size:	971.5 KB
ID:	1351948
        Đời không như mình nghĩ. phải tranh thủ thôi ***********

        Comment


        • #19
          bạn lấy số serial # của cái cảm biến của tôi mà đem đi đọc cảm biến của bạn thì làm sao đọc được?

          bạn nên tham khảo datasheet con ds18b10, nó có chỉ cách đọc không cần biết trước số mã (serial #)

          tôi dùng picbasic pro, bạn dùng C, chúng ta không nói cùng ngôn ngữ

          trên diễn đàn cũng có nhiều người dùng con cảm biến này , viết bằng C, bạn tìm thử xem.
          tôi có thể đọc và hiểu C, nhưng giúp bạn thì hơi khó đấy.
          Mãi đi tìm vàng.

          Comment


          • #20
            muốn biết số của con nào thì gắn vào lần lượt từ con một, dán nhãn số cho nó, xong hết rồi thì gắn 1 lượt tất cả vào.
            trên hiển thị có hiện ra T1: ##### , t2:#####. những số này cũng có thể hiện lên trên terminal trên windows.
            hiểu cách bác nói như sau, mỗi con mình sẽ tự dán nhãn do mình quy ước, bắt đầu bằng mã 28h, do đó em tạm lấy serial đó thử.
            hay ý bác là phải đọc nó ra.
            vì trong datasheet cái phần địa chỉ này không có đoạn nào nói rõ cả, e cũng mới tìm hiểu mong mọi người giúp đỡ
            Đời không như mình nghĩ. phải tranh thủ thôi ***********

            Comment


            • #21
              Nguyên văn bởi chairman_t Xem bài viết
              hiểu cách bác nói như sau, mỗi con mình sẽ tự dán nhãn do mình quy ước, bắt đầu bằng mã 28h, do đó em tạm lấy serial đó thử.
              hay ý bác là phải đọc nó ra.
              vì trong datasheet cái phần địa chỉ này không có đoạn nào nói rõ cả, e cũng mới tìm hiểu mong mọi người giúp đỡ
              cái số serial # này là phải gắn con cảm biến vào cái kit tôi đưa lên rồi chạy chương trình mới đọc được.
              Mãi đi tìm vàng.

              Comment


              • #22
                Nguyên văn bởi KVLV Xem bài viết
                cái số serial # này là phải gắn con cảm biến vào cái kit tôi đưa lên rồi chạy chương trình mới đọc được.
                thế là cái serial do mình quy định hay sao bác?
                Đời không như mình nghĩ. phải tranh thủ thôi ***********

                Comment


                • #23
                  Nguyên văn bởi chairman_t Xem bài viết
                  thế là cái serial do mình quy định hay sao bác?
                  số serial này trong post #14, bạn đã nói rồi. là nhà sản xuất khắt số bằng lazer gọi là 64-BIT LASERED ROM CODE.

                  bạn nên đọc datasheet. (tiếng Anh) tôi có kèm theo
                  bạn nên tìm trên diễn đàn này và picvietnam xem có ai có chương trình mẫu viết bằng C cho con cảm biến này.
                  Attached Files
                  Mãi đi tìm vàng.

                  Comment


                  • #24
                    chairman_t,
                    ở post #18, bạn viết bằng CCS phải không?
                    tôi cũng học xem cho biết.
                    Mãi đi tìm vàng.

                    Comment


                    • #25
                      đúng đó bác, em viết bằng CCS, chương trình đọc viết trực tiếp vào 1 con thì ok, còn lấy địa chỉ của nó, rồi trỏ đến địa chỉ đó đọc còn bị vướng????
                      Đời không như mình nghĩ. phải tranh thủ thôi ***********

                      Comment


                      • #26
                        Nguyên văn bởi chairman_t Xem bài viết
                        đúng đó bác, em viết bằng CCS, chương trình đọc viết trực tiếp vào 1 con thì ok, còn lấy địa chỉ của nó, rồi trỏ đến địa chỉ đó đọc còn bị vướng????
                        Anh văn của bạn thế nào? xem mấy trang này coi có giúp gì được không nha? bạn phải đánh vào ds18b20 trên trang của CCS CCS :: Search
                        Tôi cũng vừa lướt qua, nhiều quá 1 ngày xem không hết.
                        Mãi đi tìm vàng.

                        Comment


                        • #27
                          chairman_t,
                          ở post #18, chương trình của bạn có đoạn này #include <LCDdriver.c>
                          bạn có thể cho tôi xin LCDdriver.c được không ?
                          sẵn dịp, bạn up luôn file proteus mô phỏng của bạn đang có? (tôi cũng có thể vẽ được nhưng 0 đủ giờ)
                          Cám ơn trước nha.
                          Mãi đi tìm vàng.

                          Comment


                          • #28
                            New Folder.rar
                            Nguyên văn bởi KVLV Xem bài viết
                            chairman_t,
                            ở post #18, chương trình của bạn có đoạn này #include <LCDdriver.c>
                            bạn có thể cho tôi xin LCDdriver.c được không ?
                            sẵn dịp, bạn up luôn file proteus mô phỏng của bạn đang có? (tôi cũng có thể vẽ được nhưng 0 đủ giờ)
                            Cám ơn trước nha.
                            em hiểu lộn phần lệnh của ds12, chừ giải quyết được, cám ơn bác giúp đỡ
                            Đời không như mình nghĩ. phải tranh thủ thôi ***********

                            Comment


                            • #29
                              New Folder.rar
                              ở đây bác
                              Đời không như mình nghĩ. phải tranh thủ thôi ***********

                              Comment


                              • #30
                                Đây là pcb layout 1 to 1 copy, nếu bạn muốn làm pcb bằng phương pháp "ủi". PCB hai mặt.
                                có top & bottom layer, components overlay cho top & bottom.
                                Attached Files
                                Mãi đi tìm vàng.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X