有誰知道AT89C52和DS18B20溫度採集系統的C語言程

2022-03-09 14:36:36 字數 4947 閱讀 3978

1樓:匿名使用者

這個以前課程設計做過 你留個郵箱 我發你

2樓:匿名使用者

能把別人發給你的給我**下,行不?謝謝

3樓:匿名使用者

我也正在做這個設計,一起努力!

基於at89c51和ds18b20和lcd1602的溫度檢測記錄系統的c語言程式

4樓:匿名使用者

你好!程式完成了嗎?可以寫

5樓:qq講

基於at89c51和ds18b20和lcd1602的溫度檢測記錄系統的c語言程式我還可以給!

用c語言對stc89c52晶片程式設計,實現對ds18b20採集溫度並顯示出來,求程式

求at89c51微控制器與ds18b20的c語言程式,溫度設定為10℃—70℃最小區分度為 0

6樓:匿名使用者

temper_l equ 36h ;存放讀出溫度低位資料

temper_h equ 35h ;存放讀出溫度高位資料

temper_num equ 60h ;存放轉換後的溫度值

flag1 bit 00h

dq bit p3.3 ;一線匯流排控制埠

org 0000h

ljmp main

org 0100h

main:

mov sp,#70h

lcall get_temper ;從ds18b20讀出溫度資料

lcall temper_cov ;轉換讀出的溫度資料並儲存

sjmp $ ;完成一次數字溫度採集

;-------讀出轉換後的溫度值

get_temper:

setb dq ; 定時入口

bcd: lcall init_1820

jb flag1,s22

ljmp bcd ; 若ds18b20不存在則返回

s22: lcall delay1

mov a,#0cch ; 跳過rom匹配------0cc

lcall write_1820

mov a,#44h ; 發出溫度轉換命令

lcall write_1820

noplcall delay

lcall delay

cba: lcall init_1820

jb flag1,abc

ljmp cba

abc: lcall delay1

mov a,#0cch ; 跳過rom匹配

lcall write_1820

mov a,#0beh ; 發出讀溫度命令

lcall write_1820

lcall read_18200 ;read_1820

ret;-------讀ds18b20的程式,從ds18b20中讀出一個位元組的資料

read_1820:

mov r2,#8

re1: clr c

setb dq

nopnop

clr dq

nopnop

nopsetb dq

mov r3,#7

djnz r3,$

mov c,dq

mov r3,#23

djnz r3,$

rrc a

djnz r2,re1

ret;-------寫ds18b20的程式

write_1820:

mov r2,#8

clr c

wr1: clr dq

mov r3,#6

djnz r3,$

rrc a

mov dq,c

mov r3,#23

djnz r3,$

setb dq

nopdjnz r2,wr1

setb dq

ret;-------讀ds18b20的程式,從ds18b20中讀出兩個位元組的溫度資料

read_18200:

mov r4,#2 ; 將溫度高位和低位從ds18b20中讀出

mov r1,#36h ; 低位存入36h(temper_l),高位存入35h(temper_h)

re00: mov r2,#8

re01: clr c

setb dq

nopnop

clr dq

nopnop

nopsetb dq

mov r3,#7

djnz r3,$

mov c,dq

mov r3,#23

djnz r3,$

rrc a

djnz r2,re01

mov @r1,a

dec r1

djnz r4,re00

ret;-------將從ds18b20中讀出的溫度資料進行轉換

temper_cov:

mov a,#0f0h

anl a,temper_l ; 捨去溫度低位中小數點後的四位溫度數值

swap a

mov temper_num,a

mov a,temper_l

jnb acc.3,temper_cov1 ; 四捨五入去溫度值

inc temper_num

temper_cov1:

mov a,temper_h

anl a,#07h

swap a

add a,temper_num

mov temper_num,a ; 儲存變換後的溫度資料

lcall bin_bcd

ret;-------將16進位制的溫度資料轉換成壓縮bcd碼

bin_bcd:

mov dptr,#temp_tab

mov a,temper_num

movc a,@a+dptr

mov temper_num,a

rettemp_tab:

db 00h,01h,02h,03h,04h,05h,06h,07h

db 08h,09h,10h,11h,12h,13h,14h,15h

db 16h,17h,18h,19h,20h,21h,22h,23h

db 24h,25h,26h,27h,28h,29h,30h,31h

db 32h,33h,34h,35h,36h,37h,38h,39h

db 40h,41h,42h,43h,44h,45h,46h,47h

db 48h,49h,50h,51h,52h,53h,54h,55h

db 56h,57h,58h,59h,60h,61h,62h,63h

db 64h,65h,66h,67h,68h,69h,70h,71h

db 72h,73h,74h,75h,76h,77h,78h,79h

db 80h,81h,82h,83h,84h,85h,86h,87h

db 88h,89h,90h,91h,92h,93h,94h,95h

db 96h,97h,98h,99h

;-------ds18b20初始化程式

init_1820:

setb dq

nopclr dq

mov r0,#80h

tsr1: djnz r0,tsr1 ; 延時

setb dq

mov r0,#25h ;96us-25h

tsr2: djnz r0,tsr2

jnb dq,tsr3

ljmp tsr4 ; 延時

tsr3: setb flag1 ; 置標誌位,表示ds1820存在

ljmp tsr5

tsr4: clr flag1 ; 清標誌位,表示ds1820不存在

ljmp tsr7

tsr5: mov r0,#06bh ;200us

tsr6: djnz r0,tsr6 ; 延時

tsr7: setb dq

ret;-------重新寫ds18b20暫存儲存器設定值

re_config:

jb flag1,re_config1 ; 若ds18b20存在,轉re_config1

retre_config1:

mov a,#0cch ; 發skip rom命令

lcall write_1820

mov a,#4eh ; 發寫暫存儲存器命令

lcall write_1820

mov a,#00h ; th(報警上限)中寫入00h

lcall write_1820

mov a,#00h ; tl(報警下限)中寫入00h

lcall write_1820

mov a,#7fh ; 選擇12位溫度解析度

lcall write_1820

ret;------------------延時子程式

delay:

mov r7,#00h

min: djnz r7,ys500

retys500: lcall ys500us

ljmp min

ys500us:mov r6,#00h

djnz r6,$

retdelay1: mov r7,#20h

djnz r7,$

retend

用at89c51與ds18b20做數字溫度計proteus怎麼連線**圖和c語言程式設計?

7樓:高店村四組

ds18b20有3個腳,vcc接電源,gnd接地,dq接資料口,是at89c51的一個引腳就可以了,硬體電路非常簡單,這也是ds18b20的巨大優點。重點是c語言程式設計,這個程式你可以網上搜,肯定有的。

用at89s52微控制器控制ds18b20測溫,求程式。 5

8樓:匿名使用者

你好!是c語言程式嗎,有個你看看是不是能滿足要求

printf 「x d,y d n」,x,y 有誰知道C 裡這是做什麼用的

在螢幕上輸出 x,y的內容 如,x 10,y 20 執行上面的語句後螢幕上顯示10,20 然後換行 n為回車 輸出x 幾,y 幾並換行,d表示x,y的值為整數,n為換行符 這個是c語言裡面繼承過來的標準輸出函式,具體看參考資料 將x,y的值以整型輸出 這代表什麼意思啊。每部分都什麼意思啊 謝謝 你這...

有誰知道這個落款的意思和出處,有誰知道這個落款的意思和出處?

清朝內廷有專職的畫師,甚至包括一些西方來的傳教士。這個畫坊應該是民間的。能不能說說這個裴氏畫坊的所在區域?某某氏書坊,就看清3個字!對於書畫俺不懂 這個落款是什麼意思?落款是在書畫上的,所以這不叫落款叫底章,一般在陶瓷器皿底部,你 上的底章是漢印,佈局方正平直,文字的點畫簡略 明快 熱烈,右上為樂字...

誰知道這幅油畫的名字和作者,有誰知道這幅油畫的名字,出自哪個作者?

作者 nikolai kornilovich bodarevsky名字 ukrainian girl tending geese 補充 關於作者,我查詢到三個名字,1.nikolai kornilovich bodarevsky 2.nikolai kornilievich bodarevsky 3...