DS18B20與微控制器應用

2021-08-26 16:10:18 字數 4057 閱讀 1166

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...