Thông báo

Collapse
No announcement yet.

Sử dụng DS18B20 đo nhiệt độ

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

  • Sử dụng DS18B20 đo nhiệt độ

    em đang làm đề tài dùng cảm biến ds18b20 đo niệt độ hiẻn thị ra lcd,em làm xong rồi nhưng không biết sao chỉ đọc được nhiệt độ là 85,trong datasheet thì đây là nhiệt độ mặc định trong lần đọc đầu tiên,có ai giúp em với

  • #2
    Vậy có nghĩa là chưa đọc được bạn dùng chíp gì bạn hỏi mà không up code lên mọi người xem cho thì biết được sai chỗ nào.
    Đây là chương trình mình làm bằng chíp 89 và hiển thị thông tin nhiệt độ lên máy tính + LCD
    DS18S20.rar
    Phone No: 0989.437.312
    Email:
    Live in: Ha noi

    Comment


    • #3
      em dùng chíp 89C52,hj phần đọc nhiệt độ em đã sửa được rồi anh ạ hj,em viết bằng ASM,do lúc đầu em để Tconvert có 200ms nên không được(trong mô phỏng thì được nhưng mạch thật thì tịt,trong datasheet của nó em cũng thấy 750ms cơ,hjx em thấy nhiều khi mô phỏng ảo thật),vì em dùng độ phân giải tận 12bit mà,Tconvert của nó tận 750ms,nó chưa convert xong em đã reset nên vận chỉ đọc được giá trị ban đầu,em đổi lại lên 800ms(thừa tí cho chắc hj) thì chạy ngon hj,giờ em đang làm phần giao tiếp máy tính,cũng dùng VB,,em cũng dùng max 232,em thấy trong datasheet có cỏng NOT giữa hai đầu,một số bài mô phỏng,như của anh có mắc qua một cổng NOT nữa,nhưng em hỏi một số đàn anh ở trường họ nói không cần,vậy trong phần mềm mình phải cho đảo lại dữ kiệu phải không anh hj,em đang chuẩn bị làm mạch thật mà hj(thử mạch thật cho thích hj) anh góp ý em với

      Comment


      • #4
        Đúng rồi chỉ trong phần mềm mô phỏng mới cần thôi. con max 232 thì bạn dùng tất cả tụ là 1uF.
        Chúc bạn thành công!
        Phone No: 0989.437.312
        Email:
        Live in: Ha noi

        Comment


        • #5
          hj em làm thử một bài truyền nhận thế này anh à,nhưng truyền nhận không đúng hj,anh xem em với(hj em chưa bít cách đính kèm file nên em gửi code thôi hj anh chỉ em cách gửi kèm file với ạ)
          Code 89C52:
          SEND EQU 50H ;BYTE TRUYEN
          RECV EQU 51H ;BYTE NHAN
          RS BIT P1.2 ;BIT GUI LENH HOAC DU LIEU
          R_W BIT P1.1 ;BIT DOC HOAC GHI
          E BIT P1.0 ;BIT CHO PHEP LCD
          F_BUSY BIT P0.7 ;CO KIEM TRA LCD BAN
          ;=========================
          ORG 0000H
          LJMP MAIN
          ORG 0023H
          LJMP NHAN
          ;=========================
          INIT_SERIAL: ;KHOI TAO TRUYEN THONG
          MOV TMOD,#20H ;CHON TIMER 1 AUTORELOAD
          MOV TH1,#(-3) ;TOC DO BAUD = 9600
          MOV TL1,TH1
          MOV SCON,#52H ;CHON CHE DO TRUYEN THONG 8 BIT DATA,1 BIT STOP,CHO PHEP NHAN DU LIEU
          SETB EA ;CHO PHEP CAC NGAT
          SETB IE.4 ;CHO PHEP NGAT TRUYEN THONG
          SETB TR1 ;CHO PHEP TIMER 1
          RET
          ;=========================
          ORG 100
          MAIN:
          ; MOV P1,#0FFH
          LCALL INIT_SERIAL
          LCALL INIT_LCD1
          CLR TI
          CLR RI
          AGAIN: JB P1.7,AGAIN ;BAM NUT THI TRUYEN
          ; MOV A,#41H ;TRUYEN KI TU "A"
          MOV A,#"A"
          MOV SBUF,A
          LAP: JNB TI,LAP ;CHO TRUYEN XONG KI TU
          CLR TI ;XONG ROI THI XOA CO BAO TRUYEN
          LOOP1: JNB P1.7,LOOP1 ;KIEM TRA NHA NUT BAM
          LJMP AGAIN
          ;========================
          NHAN:
          JB TI,TRANS
          CLR RI
          MOV A,SBUF
          LCALL DATA_DP
          RETI
          TRANS:
          CLR TI
          RETI
          ;========================================
          BUSY: ;KIEM TRA CO BAN LCD
          SETB F_BUSY
          SETB R_W
          CLR RS
          LOOP:
          CLR E
          SETB E
          JB F_BUSY,LOOP
          RET
          ;========================================
          COMMEND: ;GUI LENH DEN LCD
          LCALL BUSY
          MOV P0,A
          CLR RS
          CLR R_W
          SETB E
          CLR E
          RET
          ;=======================================
          DATA_DP: ;GUI DU LIEU HIEN THI LCD
          LCALL BUSY
          MOV P0,A
          SETB RS
          CLR R_W
          SETB E
          CLR E
          RET
          ;======================================
          INIT_LCD1: ;KHOI TAO LCD
          MOV A,#38H
          LCALL COMMEND
          MOV A,#0EH
          LCALL COMMEND
          RET
          ;======================================
          ;========================
          END
          và code VB:
          Dim TransBuf, RecvBuf As String
          Dim TransByte, RecvByte As Byte
          Dim t As Integer
          Dim bien As Variant 'khai bao bien kieu Variant
          Private Sub Command1_Click()
          TransBuf = Text1.Text
          MSComm1.Output = Trim(TransBuf)
          End Sub
          Private Sub Command3_Click()
          End
          End Sub
          Private Sub Form_Load()
          If (MSComm1.PortOpen = False) Then
          MSComm1.CommPort = 2
          MSComm1.Settings = "9600,n,8,1"
          MSComm1.InputLen = 0
          MSComm1.RThreshold = 1
          MSComm1.InputMode = comInputModeText
          MSComm1.PortOpen = True
          End If
          End Sub
          Private Sub MSComm1_OnComm()
          RecvBuf = Trim(MSComm1.Input)
          Text1.Text = RecvBuf
          End Sub

          Comment


          • #6
            Thạch anh bạn sử dụng là bao nhiêu M thường truyền thông thì người ta sử dụng thạch anh 11.0592. nếu là thạch anh 11.0592 thì giá trị của TH1 và TL1 là #F9H và bạn viết là MOV TL1,#LOW(-7). tốc độ Baud mà không đúng thì sẽ nhận sai ký tự.
            Bạn post code lên cũng được nhưng bạn để vào viết như thế này "[Code]code của bạn viết ở đây["/Code]". nhớ bỏ 2 ngoặc kép đi nhé vì nếu mình không cho ngoặc kép vào thì nó sẽ ra kết quả.
            Code:
            Kết quả là như này
            Last edited by loveelectron; 11-04-2012, 23:11.
            Phone No: 0989.437.312
            Email:
            Live in: Ha noi

            Comment


            • #7
              À anh ơi,em sử dụng DS18B20,nhưng em đọc 64 bit ROM xong em lưu lại,rồi em sửa lại trong code cho gửi theo code sau lệnh MATCH ROM hj,chứ em không biết dùng lệnh SEARCH ROM anh à,trong datasheet nó nói là lệnh SEARCH ROM biết được cả số con DS và cả mã ROM của từng con sau một chu trình dò tìm,hj em không hiểu chu trình này thực hiện kiểu gì,hjx anh chỉ em với,hj hiện giờ em đang dùng 2 con 89C52 hj,một con chuyên để đoc mã ROM hehe,đọc xong em ghi lại từng con một,rồi sửa trong code cho con 89 kia đọc nhiệt độ hj

              Comment


              • #8
                vâng em cám ơn anh,hj em dùng 12M anh à,để em đổi lại xem sao hj,(vậy phải đổi lại cả delay trong code đọc nhiệt độ nữa anh nhỉ hj)

                Comment


                • #9
                  Lỗi này có thể là do phần mềm mô phỏng vì chương trình của mình trước chạy OK nhưng giờ cũng bị thế. bạn đang dùng phần mềm Proteus phiên bản bao nhiêu.
                  Phone No: 0989.437.312
                  Email:
                  Live in: Ha noi

                  Comment


                  • #10
                    Chính xác là dùng thạch anh 11.0592 và TH1=#0FDH. Mình test lại rồi Ok đó. tặng cho bạn phần mềm này.
                    Calc 8051.rar
                    Phone No: 0989.437.312
                    Email:
                    Live in: Ha noi

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X