1樓:匿名使用者
;**************************************
;溫度感測器ds18b20測試程式
;**************************************
dq bit p3.7 ;ds18b20的資料口位p3.3
tpl equ 50h ;存放溫度值的高位元組
tph equ 51h ;存放溫度值的低位元組
tppl equ 54h ;十進位制
tpph equ 55h
xsp0 equ 58h
xsp1 equ 59h
xsp2 equ 5ah
xsp3 equ 5bh
org 0
jmp main
org 100h
main:
call ds18b20_reset ;裝置復位
mov a,#0cch ;跳過rom命令
call ds18b20_writebyte ;送出命令
mov a,#044h ;開始轉換
call ds18b20_writebyte ;送出命令
jnb dq,$ ;等待轉換完成
call ds18b20_reset ;裝置復位
mov a,#0cch ;跳過rom命令
call ds18b20_writebyte ;送出命令
mov a,#0beh ;讀暫存儲存器
call ds18b20_writebyte ;送出命令
call ds18b20_readbyte ;讀溫度低位元組
mov tpl,a ;儲存資料
call ds18b20_readbyte ;讀溫度高位元組
mov tph,a ;儲存資料
call hzdl0
call dis
jmp main
;**************************************
; 驅動led顯示器的程式
;**************************************
pdl bit 20h
dis: mov dptr,#tab
dis1: mov r0,#xsp0
mov r2,#0fbh
mov r3,#04h
clr pdl
dis2: mov a,@r0 ;四位掃瞄顯示
movc a,@a+dptr
orl p3,#3ch
cjne r2,#0f7h, dis3
orl a, #80h
dis3: mov p1,a
mov a,r2
anl p3,a
rl a
mov r2, a
inc r0
lcall day
djnz r3,dis2
rettab: db 03fh,06h,05bh,4fh,66h,6dh,7dh,07h ;
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h,00h,40h ;共陰極**
day: mov r4,#1
d1: mov r5,#248
d2: nop
nopdjnz r5,d2
djnz r4,d1
rethzdl0: mov tppl, #00h ; 十六進製制 -> 十進位制
mov tpph, #00h
mov tpph+1, #00h
mov tph+1, #00h
mov r3, #04h
hzdl2: clr c
mov a, tpl
rlc a
mov tpl,a
mov a, tph
rlc a
mov tph,a
mov a, tph+1
rlc a
mov tph+1,a
djnz r3, hzdl2
hzdl021: mov r3, #10h
hzdl022: mov r0, #tpl
mov r2, #03h
hzdl026: mov a, @r0
rlc a
mov @r0, a
inc r0
djnz r2, hzdl026
mov r0, #tppl
mov r2, #03h
hzdl028: mov a, @r0
addc a, @r0
da a
mov @r0, a
inc r0
djnz r2, hzdl028
djnz r3, hzdl022
mov a, tppl
anl a, #0fh
mov xsp1, a
mov a, tppl
swap a
anl a, #0fh
mov xsp2, a
mov a, tpph
anl a, #0fh
mov xsp3, a
mov a, tph+1
swap a
add a, #3
movc a, @a+pc
mov xsp0, a
retdb 00h, 00h, 01h, 01h, 02h, 03h, 03h, 04h
db 05h, 05h, 06h, 06h, 07h, 08h, 08h, 09h
;**************************************
;延時x*10微秒
;**************************************
delayx0us: ;2 當改用1t的mcu時,請調整此延時函式
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
djnz r7,delayx0us ;2
ret ;2
;**************************************
;復位ds18b20,並檢測裝置是否存在
;**************************************
ds18b20_reset:
clr dq ;送出低電平復位訊號
mov r7,#48 ;延時至少480us
call delayx0us
setb dq ;釋放資料線
mov r7,#6 ;等待60us
call delayx0us
mov c,dq ;檢測存在脈衝
mov r7,#42 ;等待裝置釋放資料線
call delayx0us
jc ds18b20_reset ;如果裝置不存在,則繼續等待
ret;**************************************
;從ds18b20讀1位元組資料
;**************************************
ds18b20_readbyte:
clr a
push 0
mov 0,#8 ;8位計數器
readnext:
clr dq ;開始時間片
nopnop
setb dq ;準備接收
nopnop
mov c,dq ;讀取資料
rrc a
mov r7,#6 ;等待時間片結束
call delayx0us
djnz 0,readnext
pop 0
ret;**************************************
;向ds18b20寫1位元組資料
;**************************************
ds18b20_writebyte:
push 0
mov 0,#8 ;8位計數器
writenext:
clr dq ;開始時間片
nopnop
rrc a ;輸出資料
mov dq,c
mov r7,#6 ;等待時間片結束
call delayx0us
setb dq ;準備送出下一位資料
djnz 0,writenext
pop 0
retend
2樓:徐志尚
找個c語言的,c51的多!
求求基於51微控制器的數字溫度計設計 微控制器at89c51 測溫感測器使ds18b20 圖在下面!只要c語言程式
你好,我現在寫程式遇到了一些問題,ds18b20的顯示總是不穩定,我覺得也是時序的問題,希望你能幫助我
18b20只是測溫晶元,一般來說i2c的輸出比較穩定的,如果不穩定又可能是 18b20的電源引腳接觸不可靠 晶元所在位置受外界影響較大 比如靠近晶元,電機等 i2c程式有問題 這個不一定,因為i2c程式到處都有,比較成熟 還有一種可能是中斷級別的影響,即測溫中斷級別低於紅外和電機控制.因為ds18b...
求20W一下的B級車,求推薦20W一下的B級車
就是愛彬彬 首先不推薦買索納塔8,因為韓系車雖然外觀和內飾都不錯,但是皮薄,漆也薄且掉價快。邁瑞寶這個車我只能說比較坑,看每個月的銷量就知道啦,君威這個車說實話還不錯,外觀內飾都很好,動力也比較充沛,可以考慮入手2.0自動領先的,全部辦完約20w左右,網上有句話叫車買低配是最划算的,蒙迪歐的話,外觀...
a1 a2 b1 b2 0這個是判斷兩直線平行的還是垂直的?如果是平行(垂直)的那垂直的(平行)公式是什麼
這是垂直的判定條件 兩直線垂直時 k1k2 1,則 a1 b1 b2 a2 所以 a1a2 b1b2 0 k存在的條件回 下 平行的答公式是 a2b1 a1b2,即 a1b2 a2b1 0 擴充套件資料 在平面上兩條直線 空間的兩個平面以及空間的一條直線與一平面之間沒有任何公共點時,稱它們平行。如圖...