Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;dinh nghia 1 so label
- dq bit p3.2
- rs bit p3.5
- en bit p3.4
- byte0 data 077h
- byte1 data 078h
- byte2 data 079h
- byte3 data 07ah
- byte4 data 07bh
- byte5 data 07ch
- byte6 data 07dh
- byte7 data 07eh
- byte8 data 07fh
- dau data 076h
- tram data 071h
- chuc data 072h
- dvi data 073h
- tphan data 074h
- temp data 075h
- ORG 2000H
- lcall ds1820_init;khoi dong ds1820
- lcall lcd_init;khoi dong lcd
- main:
- ;lcall ds1820_init;khoi dong ds1820
- ;lcall lcd_init;khoi dong lcd
- lcall LCD_CLEAR
- mov a,#44h;chuyen doi nhiet do
- lcall write_byte
- lcall delay750
- lcall ds1820_init
- mov a,#0beh;doc du lieu tu ds1820
- lcall write_byte
- lcall get_dt
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; khoi dong ngat
- ;--------------------------
- lcall decode;chuyen nhiet do nhan dc sang BCD
- lcall write_temp;ghi nhiet do ra lcd
- lcall delay5
- sjmp main
- ;-------------------------------------------------------
- ;chuong trinh khoi dong ds18s20
- ;keo bus low >480us
- ;release bus 15-60us
- ;ds18s20 keo bus low 60-240us
- ;-------------------------------------------------------
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ds1820_init:
- clr dq
- mov r7,#240;delay 480us
- djnz r7,$
- setb dq
- mov r7,#35;delay 70us
- djnz r7,$
- jb dq,$;kiem tra nhan dc presence pulse
- jnb dq,$
- mov a,#0cch;skip room
- lcall write_byte
- ret
- ;-------------------------------------------------------
- ;chuong trinh ghi bit vao ds18s20
- ;ghi tu LSB-MSB
- ;-------------------------------------------------------
- write_byte:
- clr ea;disable interupt
- mov r6,#8
- w1: rrc a
- jc w2
- lcall write0
- sjmp w3
- w2: lcall write1
- w3: djnz r6,w1
- setb ea;enable interupt
- ret
- ;ghi bit 0 vao ds18s20
- write0:
- push acc
- clr dq
- mov r7,#60
- djnz r7,$;delay 120us
- setb dq
- pop acc
- ret
- ;ghi bit 1 vao ds18s20
- write1:
- push acc
- clr dq
- setb dq
- mov r7,#60
- djnz r7,$
- setb dq
- pop acc
- ret
- ;-------------------------------------------------------
- ;chuong trinh doc bit tu ds18s20
- ;master keo bus low >1us xong release bus
- ;master phai lay mau bus <15us tu khi keo bus low
- ;delay them >45us
- ;-------------------------------------------------------
- read_byte:
- clr ea
- setb dq
- mov r6,#8
- mov a,#0
- rd1: lcall read_bit
- rrc a
- mov r7,#25
- djnz r7,$
- djnz r6,rd1
- setb ea
- ret
- read_bit:
- clr dq
- setb dq;1us
- mov r7,#6;2us
- djnz r7,$;12us
- mov c,dq
- ret
- ;-------------------------------------------------------
- ;nhan 9 byte du lieu tu ds18s20
- ;nhan tu LSB-MSB,byte0-byte9
- ;-------------------------------------------------------
- get_dt:
- lcall read_byte
- mov byte0,a
- lcall read_byte
- mov byte1,a
- lcall read_byte
- mov byte2,a
- lcall read_byte
- mov byte3,a
- lcall read_byte
- mov byte4,a
- lcall read_byte
- mov byte5,a
- lcall read_byte
- mov byte6,a
- lcall read_byte
- mov byte7,a
- lcall read_byte
- mov byte8,a
- ret
- ;-------------------------------------------------------
- ;chuong trinh giai ma nhiet do do dc sang BCD
- ;luu cac gia tri sang cac data da dinh nghia
- ;-------------------------------------------------------
- decode:
- ;a/xu ly dau:
- mov a,byte1
- cjne a,#0ffh,duong
- am: mov dau,#'-'
- ;xu li nhiet do am
- mov a,byte0
- cpl a
- mov byte0,a
- sjmp xulithphan
- ;----------------------
- duong: mov dau,#'+'
- xulithphan:
- ;b/xu ly thap phan
- mov a,byte0
- clr c
- rrc a
- mov temp,a
- jc dc_nx
- mov tphan,#0
- sjmp dc_ex1
- dc_nx: mov tphan,#5
- dc_ex1: nop
- ;c/xu ly phan nguyen:
- mov a,temp
- mov b,#10
- div ab
- mov dvi,b
- mov b,#10
- div ab
- mov chuc,b
- mov tram,a
- ret
- ;-------------------------------------------------------
- ;delay 750ms de cho ds18s20 convert T
- ;-------------------------------------------------------
- delay750:
- mov r7,#15
- d2: mov r6,#100
- d1: mov r5,#250
- djnz r5,$
- djnz r6,d1
- djnz r7,d2
- ret
- delay2:
- mov r7,#0ffh
- djnz r7,$
- ret
- ; -----------------------------------------------------
- ;Chuong trinh cua LCD
- ; -----------------------------------------------------
- lcd_init:
- mov dptr,#8000h
- mov a,#38h ;bus du lieu 8 bit, hien thi 2 hang
- lcall write_cmd
- mov a,#0ch ;bat lcd, bat con tro
- lcall write_cmd
- mov a,#06h ; tu dong chuyen con tro
- lcall write_cmd
- ret
- ; -----------------------------------------------------
- wait_lcd:
- MOV TMOD,#01H
- MOV TH0,#HIGH(-5000)
- MOV TL0,#LOW(-5000)
- SETB TR0
- JNB TF0,$
- CLR TF0
- CLR TR0
- RET
- LCD_CLEAR:
- CLR RS
- SETB EN
- MOV A,#02H
- MOV DPTR , #8000H
- MOVX @DPTR,A
- CLR EN
- LCALL DL_LCD;
- RET
- ; -----------------------------------------------------
- write_cmd:
- CLR RS
- SETB EN
- MOV DPTR , #8000H
- MOVX @DPTR,A
- CLR EN
- LCALL DL_LCD
- RET
- ; -----------------------------------------------------
- write_char:
- SETB RS
- SETB EN
- MOV DPTR , #8000H
- MOVX @DPTR,A
- CALL DL_LCD
- CLR EN
- RET
- ; -----------------------------------------------------
- DL_LCD:
- MOV TMOD,#01H
- MOV TH0,#HIGH(-5000)
- MOV TL0,#LOW(-5000)
- SETB TR0
- JNB TF0,$
- CLR TF0
- CLR TR0
- RET
- write_temp:
- mov a,#'t'
- lcall write_char
- mov a,#'='
- lcall write_char
- mov a,dau
- lcall write_char
- mov a,tram
- add a,#30h
- lcall write_char
- mov a,chuc
- add a,#30h
- lcall write_char
- mov a,dvi
- add a,#30h
- lcall write_char
- mov a,#'.'
- lcall write_char
- mov a,tphan
- add a,#30h
- lcall write_char
- mov a,#'*'
- lcall write_char
- mov a,#'C'
- lcall write_char
- ret
- ; -----------------------------------------------------
- delay5:;delay 0.2s, refresh lcd
- mov r7,#10
- dl1: mov r6,#200
- dl2: mov r5,#50
- djnz r5,$
- djnz r6,dl2
- djnz r7,dl1
- ret
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement