溫度計的設計,(使用DS18B20)

2022-03-11 18:15:48 字數 5906 閱讀 7640

1樓:7q迦

at89c51微控制器

那可以的要求的撒

微控制器數字式溫度計設計,用ds18b20和12864液晶屏

2樓:匿名使用者

1、我做過的是ds18b20+pic微控制器+數碼管顯示。

2、也做過微控制器+熱電偶+12864顯示溫度3、最近要做的是,微控制器+ds18b20+數碼管顯示+時間顯示。

有按鍵,設定溫度上限和下限,超過上限和下限,報警和繼電器輸出控制裝置。

你就說了一個命題,是想要源程式,設計原理,還是想要成熟的產品,還是外包開發啊

3樓:匿名使用者

這個網上資料不少 有問題可以**下

4樓:龍吟悟空

都不難!在這裡沒人能完全幫助你,可以自己做做試試,不懂就問。真不想做,我可以幫你做出來,但是要收費的~

利用微控制器,溫度感測器ad590、adc0804設計一個數字溫度計,利用ds18b20設計一個溫度控制計。(彙編) 10

5樓:

要做這些,單寫程式很簡單,實物製作花的時間就多了。你的第一個就只是現實溫度。第二個也只是讀取溫度。

對我來說無難度。

6樓:匿名使用者

就這麼一點分還提這麼多問題,你慢慢等吧

7樓:

10分 4個問題。。。哈哈。。。。

基於ds18b20的數字溫度計設計 89c51 組合語言 急求啊!度娘文庫上都試過,不行的··

8樓:匿名使用者

;**************************************

;溫度感測器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

ds18b20溫度轉換問題

1 接收資料為雙位元組 先低位,後高位 先低位元組,後高位元組 2 高位元組的前5位若為 0 則將資料乘以0.0625 即 t d 0.0625 3 高位元組的前5位若為 1 則將資料先取反,再加一,再乘以0.0625 即 t d 1 0.0625 溫度是 55 125 對應的值是 55 ff92 ...

ds18b20的精度問題,DS18B20的精度問題

你把測量值和實際值做成一套 或曲線圖,再做下濾波 不同的18b20溫度測出了有一兩度差別,這樣測出來的精度雖有0.0625也只是個樣子 ds18b20的測溫最小精度為0.0625 怎麼提高?暫存器2的第四位為小數部分的精度,變化一位代表變化了0.0625 這個是沒辦法改變的。但就目前我還沒看到過ds...

我編寫ds18b20程式想顯示溫度在led燈上但

include reg52.h include include 要用到取絕對值函式abs define uchar unsigned char define uint unsigned int sbit ds p2 1 sbit ds p3 2 ds18b20 sbit duan p2 6 sbit...