Thông báo

Collapse
No announcement yet.

Đo nhiệt độ 3 kênh DS18B20 và hiển thị trên LED 7 thanh

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

  • Đo nhiệt độ 3 kênh DS18B20 và hiển thị trên LED 7 thanh

    chào các bác.em bị dính cái đồ án môn thế này: yêu cầu thiết kế mạch đo và hiển thị nhiệt độ trên led 7 thanh từ cảm biến DS18B20.em có làm mà nó không chạy.bác nào biết chỉ giáo dùm em.con có mấy ngày nữa em phải nộp rồi.thanhk các bác nhiều :
    yahoo của e em : quocbaonb
    toàn bộ đây ạ: http://www.mediafire.com/?dnwmynjgnin
    code :
    ;================================================= ============
    ;Chuong trinh
    ; Update : 04/04/2010 nhom 16
    ;================================================= ============
    org 0000H ;Vector Reset
    ljmp Init ;Nhay toi chuong trinh khoi tao

    org 0003H ;Vector ngat ngoai INT0
    ljmp READ_DS18B20 ;nhay toi ctcpvn doc du lieu tu DS18B20


    org 000BH ;Vector ngat tran T0
    reti

    org 0013H ;Vector ngat ngoai INT1
    reti

    org 001BH ;Vector ngat tran T1
    reti

    org 0023H ;Vector ngat cong truyen thong
    reti

    org 002BH ;Vector ngat tran T2
    ljmp HT_LED ;nhay toi ctcpnv tran T2 de dieu
    ;khien LED
    ;================================================= ============
    ;Phan khai bao cac bien so, hang so
    ;================================================= ============
    Num equ 50H ;chua so lan an nut chon lua
    dq1 equ p1.0
    dq2 equ p1.1
    dq3 equ p1.2
    templow equ 50h
    temphigh equ 51h
    bytethap equ 52h
    bytecao equ 53h
    chucnhietdo equ 54h
    dvnhietdo equ 55h
    dem equ 56h
    Dn equ 5AH ;xac dinh Digit can hien thi
    ;================================================= ============
    ;Chuong trinh con khoi tao
    ;================================================= ============
    org 100
    Init:
    clr EA ;Cam tat ca cac ngat
    mov SP,#2FH ;Khoi tao ngan xep
    mov T2CON,#00H ;T2 lam viec o che do Auto_reload
    mov TH2,#0D8H ;voi chu ky ngat la 10ms
    mov TL2,#0F0H
    mov RCAP2H,TH2
    mov RCAP2L,TL2
    setb IT0 ;dat INT0 ngat suon xuong
    mov a,#0FFH ;chon P1 lam cong vao nhan du lieu
    mov P1,a
    mov D0,#0 ;Khoi tao so hien thi ban dau la 000
    mov Dn,#0 ;cho D0 hien thi
    mov R0,#D0 ;(R0) chua dia chi cua D0
    mov R7,#01H ;cho D0 sang
    setb TR2 ;cho phep T2 lam viec
    setb EX0 ;cho phep ngat ngoai INT0
    setb IE.5 ;cho phep ngat tran T2
    setb EA ;Cho phep tat ca cac ngat
    here:
    sjmp here ;Doi ngat
    ;================================================= ============
    ;Interrupt READ_DS18B20
    ;thuc hien doc du lieu tu cam bien DS18B20
    ;Input : None
    ;Ouput : (Num) chua so lan an nut N
    ;================================================= ============
    READ_DS18B20:
    clr IE0 ;xoa co bao ngat
    inc Num ;dem so lan an
    mov a,Num ;chuyen so lan an nut vao thanh ghi ACC
    mov b,#3 ;nap gia tri chia "3"
    div ab ;thuc hien phep chia,lay phan du
    clr a
    mov a,b
    jnz cambien2
    setb P2.4
    clr P2.5
    clr P2.6
    clr P1.1
    clr P1.2
    sjmp write_time_slot
    org 0040H
    write_time_slot:
    clr dq3
    nop
    nop
    mov dq3,c
    mov r5,#30
    call delayne
    setb dq3
    nop
    nop
    ret
    read_time_slot:
    clr dq3
    nop
    nop
    setb dq3
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    mov c,dq3
    mov r5,#50
    call delayne
    ret
    reset_ds1820:
    clr dq3
    mov r5,#255
    call delayne
    setb dq3
    mov r5,#255
    call delayne
    ret

    write_byte:
    mov dem,#8
    write_lai:
    rrc a
    call write_time_slot
    djnz dem,write_lai
    setb dq3
    mov r5,#50
    call delayne
    ret

    read_byte:
    mov dem,#8
    readlai1:
    call read_time_slot
    rrc a
    djnz dem,readlai1
    mov templow,a

    mov dem,#8
    readlai2:
    call read_time_slot
    rrc a
    djnz dem,readlai2
    mov temphigh,a

    mov r5,#50
    call delayne
    ret
    delayne:
    djnz r5,$
    ret

    readnhietdo:
    setb dq3
    readnhietdo1:
    call reset_ds1820
    mov a,#0cch
    call write_byte

    mov a,#44h
    call write_byte

    call reset_ds1820
    mov a,#cch
    call write_byte

    mov a,#beh
    call write_byte
    call read_byte

    mov a,templow
    mov bytethap,a
    mov a,temphigh
    mov bytecao,a

    call chuyendoi

    call reset_ds1820
    ret

    chuyendoi:
    push 00h
    mov a,temphigh
    swap a
    mov 44h,a ;----xxxx

    mov a,templow
    swap a
    mov 45h,a

    mov a,44h
    mov r0,#45h
    xchd a,@r0
    mov 46h,a

    mov a,46h

    mov b,#10
    div ab
    mov chucnhietdo,a
    mov dvnhietdo,b
    pop 00h
    ret
    Cambien2:
    cjne a,#1,CAMBIEN3
    clr P2.4
    setb P2.5
    clr P2.6
    ;////(chuong trinh doc du lieu DS18B20-2)
    Cambien3:
    clr P2.4
    clr P2.5
    setb P2.6
    ;////(chuogn trinh doc du lieu DS18B20-3)
    clr a
    HERE3:
    sjmp HERE3
    reti
    ;================================================= ============
    ;Interrupt HT_LED
    ;thuc hien dieu khien cac LED (D2,D1,D0) hien thi nhiet do cac cam bien
    ;Input : None
    ;Ouput : None
    ;================================================= ============
    HT_LED:
    clr TF2 ;xoa co bao ngat tran T2
    mov a,Num
    mov b,#100
    div ab ;doi so can hien thi sang ma BCD
    mov dptr,#SEG
    movc a,@a+dptr ;doi ra ma bay thanh D2
    mov D2,a
    mov a,b
    mov b,#10
    div ab
    mov dptr,#SEG
    movc a,@a+dptr ;doi ra ma bay thanh D1
    mov D1,a
    mov a,b
    mov dptr,#SEG
    movc a,@a+dptr ;doi ra ma bay thanh D0
    mov D0,a
    ;==============================================
    ;Hien thi quet cac LED
    ;==============================================
    mov a,@R0 ;a chua dia chi @R0
    mov P2,R7 ;cho phep Digit sang
    mov P0,a ;gui so lieu can hien thi ra P0
    inc R0 ;chuyen sang Digit tiep theo
    mov a,R7
    rl a ;chuyen sang Digit tiep theo
    mov R7,a
    inc Dn
    mov a,Dn
    cjne a,#3,KT_HT ;Kiem tra de quet lai tu dau
    mov R0,#D0
    mov Dn,#0
    mov R7,#01H
    KT_HT:
    reti
    ;================================================= ============
    ;bang ma bay thanh
    ;================================================= ============
    SEG:
    db 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H,90H
    ; 0 1 2 3 4 5 6 7 8 9
    ;================================================= ============
    END.
    <<<<quoc bao>>>>>
    YM : quocbaonb

  • #2
    với họ 8051 thi tớ kô dành lắm nhưng xin gợi ý là bạn có thể dùng truyền thông nối tiếp để giao tiếp với con này, trở kéo từ chân DQ của 18B20 ít nhất là 4.7K mới được, mỗi một con 18B20 có một địa chỉ code cho chuẩn 1WRITE do vậy có thể nối chung một đường vào ra và trước khi đọc ở con nào thì xác định mã code ở con đó
    Cái gì biết nói biết. Cái không biết nói không biết. Ấy là biết đấy!
    email:

    Comment


    • #3
      Mình biết điều đó! nhưng ngặt nỗi quan trong la phần lập trình để đọc được dx mlieeuj từ con DS18B20,mình đọc mãi mà không được,và hhieern thị LED 7 thanh nữa
      <<<<quoc bao>>>>>
      YM : quocbaonb

      Comment


      • #4
        đo nhiệt độ với ds18B20

        18B20 là IC đo nhiệt độ đầu vào số, đo khá chính xác, theo chuẩn 1wire. Món này mình đã làm chạy rất "ngon" . Nhưng mình viết CCS cho vi điều khiển PIC.

        :

        Comment


        • #5
          Cảm ơn LinhNGuyen nhưng bọn mình bắt phải viết bằng ASM nên mới mệt vậy
          <<<<quoc bao>>>>>
          YM : quocbaonb

          Comment


          • #6
            Nguyên văn bởi linhnguyen Xem bài viết
            18B20 là IC đo nhiệt độ đầu vào số, đo khá chính xác, theo chuẩn 1wire. Món này mình đã làm chạy rất "ngon" . Nhưng mình viết CCS cho vi điều khiển PIC.
            bạn có thể chia sẻ kinh nghiệm và thông tin về bài tập của bạn không?
            Mình cũng đang tìm hiểu giao tiếp 1 wire giữa PIC 16f877a và ds18b20

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X