ds18b20與微控制器應用
2023年01月19日
;ds18b20溫度感測器和7個led數碼顯示程式(原創程式,請支援)
org 0000h
;led數碼管採用動態,p0口接八個資料口,p2.0-p2.2採用3-8解碼器控制七個led
tx bit p2.3 ;ds18b20資料口接p2.3
flag bit 10h
temh equ 50h ;整數部分
teml equ 51h ;小數部分
mov sp,#60h
clr ea
ajmp main
org 0200h
main:
;mov r0,#10
lcall tmp;溫度感測器設定
lcall chang;溫度轉換為十進位制
str:lcall display;溫度顯示
;djnz r0,str
ajmp main
;//
tmp:;溫度感測器ds18b20
lcall resert
mov a,#0cch
lcall write
mov a,#44h
lcall write
;lcall delay750;延時750ms
lcall resert
mov a,#0cch
lcall write
mov a,#0beh
lcall write
lcall read
mov 30h,a
lcall read
mov 31h,a
ret
delay750:;750usdelay
setb rs0
mov r0,#20
ms2:mov r1,#20
ms1:mov r2,#20
djnz r2,$
djnz r1,ms1
djnz r0,ms2
clr rs0
ret
; chang:;溫度轉換為十進位制
push a
push b
mov a,31h
anl a,#07h
swap a
mov b,a
mov a,30h
anl a,#0f0h
swap a
add a,b mov temh,a mov a,30h anl a,#0fh mov teml,a mov a,31h jnb acc.3,posi;區分正負溫度
;//負溫度轉化
mov a,teml
swap a
cpl a
anl a,#0f0h
add a,#10h
swap a
mov 1fh,c
mov teml,a
mov a,temh
cpl a
subb a,#80h
mov c,1fh
addc a,#0
mov 70h,#20
ajmp neg
posi:
mov a,temh
mov b,#100
div ab
mov 70h,a
mov a,b
neg:
mov b,#10
div ab
mov 71h,a
mov a,b
add a,#10
mov 72h,a
;整數部分分離
mov a,teml
mov b,#5
mul ab
mov b,#10
div ab
mov 76h,b
mov 75h,a
mov a,teml
mov b,#2
mul ab
add a,75h
mov b,#10
div ab
mov 75h,b
mov 74h,a
mov a,teml
mov b,#6
mul ab
addc a,74h
mov b,#10
div ab
mov 74h,b
mov 73h,a
;小數部分分離
pop b
pop a
ret
;//
display: ;溫度顯示 70h---76h ***.***x
;採用預設的12位,精度0.0625,-55~~+125
setb rs0
mov r0,#70h
mov r1,#7
mov r2,#0
mov dptr,#table
dis:
mov a,@r0
movc a,@a+dptr
mov p2,r2
mov p0,a
inc r2
inc r0
lcall delay1ms
djnz r1,dis
clr rs0
ret
;/ delay1ms:
setb rs1
mov r0,#100
ms:mov r1,#20
djnz r1,$
djnz r0,ms
clr rs1
ret
; resert:;ds18b20初始化
;setb rs0
setb tx
nop
clr tx
mov r0,#240
;rst:clr tx
djnz r0,$;delay480us
setb tx
mov r1,#30;delay 60us
djnz r1,$
jnb tx,re1
clr flag
setb tx
ret
re1:setb flag
mov r2,#200
djnz r2,$ ;delay 400us
setb tx
ret
;///
write:;ds18b20寫位元組
;setb rs0
clr c
mov r0,#8
ww:
mov r1,#6
mov r2,#23
rrc a
clr tx
djnz r1,$;delay 12us
mov tx,c
djnz r2,$;delay 46us setb tx nop djnz r0,ww setb tx ;clr rs0 ret ;/// read:;ds18b20讀位元組
;setb rs0
clr c
mov r0,#8;八位
re:
setb tx
mov r1,#10;延時20us
mov r2,#15 ;延時30us
clr tx
nop
setb tx;此句最重要,讀取資料的時候一定要釋放匯流排,否則讀不出暫存器資料
djnz r1,$
mov c,tx
djnz r2,$
rrc a
djnz r0,re
setb tx
;clr rs0
ret
;//
table:
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;0-9 需要加點應用add 80h即可
db 0bfh,86h,0dbh,0cfh,0e6h,0edh,0fdh,87h,0ffh,0efh;0. -9.
db 40h ;-
end
51微控制器ds18b20
溫度感測器是比較簡單的外設之一,學習51微控制器都會學習ds18b20來學習51的ad轉換。ds18b20是通過iic匯流排來進行通行的,屬於比較簡單的模組之一,這裡貼出ds18b20的驅動程式,呼叫時只要直接讀取對應位址的資料即可。include temp.h void delay1ms uint...
51微控制器之DS18B20
一文讀懂ds18b20溫度感測器及程式設計 對於新手而言,ds18b20基本概念僅做了解,最重要的是利用微控制器對ds18b20進行程式設計,讀取溫度資訊,並把讀取到的溫度資訊利用數碼管,lcd1602或者上位機進行顯示 ds18b20是常用的數字溫度感測器,其輸出的是數碼訊號,具有體積小,硬體開銷...
微控制器DS18B20(內包括程式設計思路)
特點 通訊方式 1 wire單匯流排通訊 每個ds18b20都有唯一的64為序列號儲存在板載rom 唯讀儲存器 中 無需外部器件 電源範圍3.0v 5.5v 可以測量的範圍是 55 125 攝氏度 在 10 85 範圍內精確度為 0.5 溫度計解析度可以 通過程式設計 設定為9 12位工作模式,12...