Thông báo

Collapse
No announcement yet.

gửi dữ liệu ds18b20 len thanh led 7 đoạn...

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

  • gửi dữ liệu ds18b20 len thanh led 7 đoạn...

    chào cả nhà....hôm nay lại lên làm phiền các bác.
    mấy bữa nay đang mày mò con ds18b20,cho nó chạy rùi,nhưng chưa biết cách để hiện thị nó...
    ví du như khi nhiệt độ là 7 độ C thì nó đưa ra mã là 01110000b,em xóa 4 bit sau vì e ko cần hiển thị phần thập phân,rùi SWAP nó,sau đó hiển thị bằng led 7 đoạn.
    nó tăng từ 0 độ C tới 9 độ C thì đúng,mà tăng thêm nữa thì sai bét.
    em cũng ko rành lắm...mong các bác chỉ giáo cách để xử lí nhá.
    em cũng chưa rành lắm về vxl,nói chung cũng biết thôi.
    cái này đang tìm hiểu,mogn mọi người đóng góp ý kiến...
    cụ thể thì cáng tốt nhá.
    đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

  • #2
    bạn or kết quả sau khi Swap với dữ liệu HIGH TEMPERATURE sau đó tiến hành giải mã hex to bcd,bcd 7 đoạn bình thường

    Comment


    • #3
      cảm ơn bạn đã trả lời...
      nhưng câu trả lời của bạn mình ko hiểu rõ lắm...
      giá trị HIGH TEMPERATURE đó mình làm sao có được...
      nấu biết...mong bạn chỉ mình cụ thể hơn được ko...
      tại mình cũng ko rành lắm về con ic này...chỉ mới tìm hiểu được 1 tuần thội.
      mog bạn chỉ thêm.
      thanks
      đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

      Comment


      • #4
        nhiệt độ đọc về là hai byte LSB và MSB
        LSB gồm cái 8 bit: 2^3 2^2 2^1 2^0 2^-1 2^-2 2^-3 2^-4
        MSB gồm cái 8 bit: (5 bit Sign) 2^6 2^5 2^4
        Giá trị nhiệt số nguyên bạn cần sẽ là giá trị của 1 byte tạo bởi các bit 2^6 2^5 2^4 2^3 2^2 2^1 2^0 nghĩa là nữa byte thấp của MSB hợp với nữa byte cao của LSB

        Comment


        • #5
          đọc byte lsb thi đọc được...
          nếu là 5 độ C thì nó sẽ đưa giá trị của ds1820 vào thanh ghi A.
          nhưng nếu là 20 độ...làm sao mình đọc được byte cao của ds1820.
          đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

          Comment


          • #6
            Nguyên văn bởi dinhthuan911 Xem bài viết
            đọc byte lsb thi đọc được...
            nếu là 5 độ C thì nó sẽ đưa giá trị của ds1820 vào thanh ghi A.
            nhưng nếu là 20 độ...làm sao mình đọc được byte cao của ds1820.
            trong 1820, byte 0 là LSB byte1 là MSB, bạn đọc đc byte 0 mà sao ko đọc luôn thêm byte 1

            Comment


            • #7
              hiểu rồi...
              nhưng chỉ khi nó lsb tăng đến giá trị 11111111b (16) thì nó mới tăng msb len 1.
              còn khi hiển thị led 7 đoạn...mình tăng nhiệt độ đơn vị tới 9 là mình phải tăng nhiệt độ chục lên 1 rồi...
              như vậy thì làm sao xử lí khoảng nhiệt độ 9 đến 15 ở phần chục.
              mình ko rành lắm...có câu hỏi nào hơi ngớ ngẩn ... mong mấy bác bỏ qua.
              cảm ơn bacchung1608 rất nhiều.
              đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

              Comment


              • #8
                dữ liệu bạn đọc ra bao gồm 2 byte, byte đầu tiên bạn đọc về bao gồm cả giá trị thập phân và hàng đơn vị ( 4 bit thấp cho hàng thập phân, 4 bit cao cho hàng đơn vị), byte 2 cho hàng chục. Theo yêu cầu của bạn chỉ cần hiển thị số nguyên, ban đầu ta xóa 4 bit thấp hàng thập phân, sau đó Swap > OR giá trị vừa Swap được với dữ liệu hàng chục ( đã swap), đến đây để tiến hành giải mã Hex sang BCD,bằng cách chia dữ liệu vừa nhận được cho 10, giá trị cao lưu vào A là số hàng chục, giá trị thấp lưu vào B là số hang đơn vị ( số BCD) sau đó tiên hành giải mã sang 7 đoạn để hiển thị. Đây là đoạn chương trình mình viết thử với giá trị đọc về được lưu trong 60h và 61h. giá trị sau khi giải mã hex to bcd với 20h là giá trị hàng đơn vị,byte cao là giá trị hàng chục

                chuyen_doi:
                Mov a,60h
                anl a,#0f0h ;xóa 4 bit thấp hàng thập phân
                Swap a
                mov 62h,a

                mov a,61h
                swap a
                or a,62h
                mov 63h,a
                ret


                HEX_BCD:

                mov a,63h
                mov b,#10
                div ab
                mov 21h,a
                mov 20h,b
                ret

                Comment


                • #9
                  Khi bạn đang đọc dữ liệu nếu muốn dừng lại thì gởi 1 tín hiệu reset,thân.

                  Comment


                  • #10
                    ok...cảm ơn bác.
                    nhưng trường hợp giá trị analog là 12 (digital là 11000000b) thì giá trị digital sẽ đưa vào byte thấp của ds1820 là 11000000b.
                    anl song va swap thì có giá trị là 00001100,sau đó or với byte cao của ds1820 (lúc này byte cao vẫn là xxxx0000b,swap là 0000xxxxb).kết quả được là 00001100....giải nén bcd thì hàng chục là 0,hàng đơn vị là 12...thế thì số 12 này làm sao mà hiển thị được.vì chỉ hiển thị được từ 0 đến 9 thôi chứ.
                    e chưa rõ cách hiển thị nhiệt độ (analog) từ 10 đến 15 lắm...
                    mong bác chỉ thêm.
                    đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

                    Comment


                    • #11
                      analog digital

                      10 1010 xxxx
                      11 1011 xxxx
                      12 1100 xxxx
                      13 1101 xxxx
                      14 1110 xxxx
                      15 1111 xxxx
                      khi này byte cao của ds1820 mới được 00000001b....
                      vậy làm sao hiển thị giá trị tứ 10 - 15
                      đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

                      Comment


                      • #12
                        Nguyên văn bởi dinhthuan911 Xem bài viết
                        analog digital

                        10 1010 xxxx
                        11 1011 xxxx
                        12 1100 xxxx
                        13 1101 xxxx
                        14 1110 xxxx
                        15 1111 xxxx
                        khi này byte cao của ds1820 mới được 00000001b....
                        vậy làm sao hiển thị giá trị tứ 10 - 15
                        bạn tẩu hỏa nhận ma roài.
                        #00001100b=#12d=#0Ch
                        bạn xử lý #0Ch ra 2 con led 7 đoạn đc chứ
                        mov a,#0Ch
                        mov b,#10
                        div ab ; a=1 b=2

                        Comment


                        • #13
                          thanks all...
                          em làm được rùi...nhưng chỉ hiển thị tới 99
                          giờ muốn hiển thị cả phần trăm của nhiệt độ thì ntn các bác.
                          chỉ e với nhé...
                          đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

                          Comment


                          • #14
                            thanks all...
                            em làm được rùi...nhưng chỉ hiển thị tới 99
                            giờ muốn hiển thị cả phần trăm của nhiệt độ thì ntn các bác.
                            chỉ e với nhé...
                            đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

                            Comment


                            • #15
                              hướng của e là (giả sử nhiệt độ là 125)
                              lấy nhiệt độ sau khi or 2 byte cao và thấp lại đưa vào A,lấy A chia cho B,B được gán giá trị 100.lấy A đưa vào ô nhớ "T_tram'
                              khi đó B có giá trị là 25,tiếp tục lấy B chia cho 10,A đưa vào T_chuc,B đưa vào T_donvi

                              T_bandau equ 60
                              T_donvi equ 61
                              T_chuc equ 62
                              T_tram equ 63
                              t_tam equ 64
                              bcdto7seg:

                              mov A,T_bandau
                              mov B,#100
                              div AB
                              mov T_tram,A
                              mov T_tam,B

                              mov A,T_tam
                              mov B,#10
                              div AB
                              mov T_chuc,A
                              mov T_donvi,B
                              ret
                              .................
                              kết quả là sai bét...hehe.các bác có hướng nào chỉ e với.
                              cảm ơn nhiều
                              đàn bà sinh ra để đàn ông ăn hiếp...ko ăn được thì hiếp....

                              Comment

                              Về tác giả

                              Collapse

                              dinhthuan911 hehe Tìm hiểu thêm về dinhthuan911

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

                              Collapse

                              Đang tải...
                              X