數(shù)字溫度傳感器18b20編程_第1頁
數(shù)字溫度傳感器18b20編程_第2頁
數(shù)字溫度傳感器18b20編程_第3頁
數(shù)字溫度傳感器18b20編程_第4頁
數(shù)字溫度傳感器18b20編程_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、精品文檔重新寫DS18B20暫存存儲器設(shè)定值ds18b20 匯編程序:本匯編程序僅適合單個 DS18B20和51單片機的連接,晶振為12MHZ左右DQ:DS18B20的數(shù)據(jù)總線接腳FLAG1:標(biāo)志位,為"1"時表示檢測到 DS18B20TEMPER_NUM:保存讀出的溫度數(shù)據(jù)TEMPER_LEQU36HTEMPER_HEQU35HDQBITP1.7;DS18B20初始化匯編程序I”*/INIT_1820:SETBDQNOPCLRDQMOVR0,#06BHTSR1:DJNZR0,TSR1;延時SETBDQMOVR0,#25HTSR2:JNBDQ,TSR3DJNZR0,TSR2

2、LJMPTSR4;延時TSR3:SETBFLAG1;置標(biāo)志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1;清標(biāo)志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BHTSR6:DJNZR0,TSR6;延時TSR7:SETBDQRETI”*/;/*/RE_CONFIG:JBFLAG1,RE_CONFIG1; 若 DS18B20 存在,轉(zhuǎn) RE_CONFIG1RETRE_CONFIG1:MOVA,#0CCH;發(fā) SKIP ROM 命令LCALLWRITE_1820MOVA,#4EH;發(fā)寫暫存存儲器命令LCALLWRITE_1820MOVA,#00H; TH(

3、報警上限)中寫入00HLCALLWRITE_1820MOVA,#00H; TL(報警下限)中寫入00HLCALLWRITE_1820MOVA,#1FH;選擇9位溫度分辨率LCALLWRITE_1820RET:*;讀出轉(zhuǎn)換后的溫度值:*GET_TEMPER:SETBDQ;定時入口LCALLINIT_1820JBFLAG1,TSS2RET;若DS18B20不存在則返回TSS2:MOVA,#0CCH;跳過 ROM 匹配 LCALLWRITE_1820MOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE 1820LCALLINIT_1820MOVA,#0CCH;跳過 ROM 匹配LCALLWRIT

4、E_1820MOVA,#0BEH; 發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_1820MOVTEMPER_NUM,A; 將讀出的溫度數(shù)據(jù)保存RET./ /*/精品文檔精品文檔RET;*;讀DS18B20的程序,從DS18B20中讀出一個字節(jié)的數(shù)據(jù)I”*/;讀DS18B20的程序從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)READ_1820::*MOVR2,#8READ_18200:RE1:MOVR4,#2;將溫度高位和低位從DS18B20中讀出CLRCMOVR1,#36H;低位存入36H(TEMPER_L),位位存入35H(TEMPSETBDQER_H)NOPRE00:NOP

5、MOVR2,#8CLRDQRE01:NOPCLRCNOPSETBDQNOPNOPSETBDQNOPMOVR3,#7CLRDQDJNZR3,$MOVC,DQNOPNOPMOVR3,#23NOPDJNZR3,$SETBDQRRCAMOVR3,#7DJNZR2,RE1DJNZR3,$RETMOVC,DQI”*/MOVR3,#23DJNZR3,$RRCADJNZR2,RE01;寫DS18B20的程序MOVR1,AI”*/DECR1WRITE_1820:DJNZR4,RE00MOVR2,#8RETCLRC*WR1:CLRDQ;將從DS18B20中讀出的溫度數(shù)據(jù)進行轉(zhuǎn)換MOVR3,#6:*DJNZR3,$

6、RRCATEMPER_COV:MOVA,#0F0HMOVDQ,CANLA,TEMPER_L;舍去溫度低位中小數(shù)點后的四位溫度數(shù)值MOVR3,#23SWAPADJNZR3,$MOVTEMPER_NUM,ASETBDQMOVA,TEMPER_LNOPJNBACC.3,TEMPER_COV1;四舍五入去溫度值DJNZR2,WR1SETBDQINCTEMPER_NUM精品文檔精品文檔TEMPERCOV1:;LCALLRECONFIGMOVA,TEMPER_HLCALLGETTEMPERANLA,#07HAJMPCHANGESWAPAORLA,TEMPER_NUM;*DS18B20復(fù)位程序*MOVTEM

7、PER_NUM,A;保存變換后的溫度數(shù)據(jù)INIT18B20:SETBDQLCALLBINBCDNOPRETCLRDQ;/*/MOVR0,#0FBHTSR1:DJNZR0,TSR1;延時;將16進制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼SETBDQ精品文檔MOV R0,#25H;/*/BINBCD:TSR2:JNBDQ,TSR3MOVDPTR,#TEMP_TABDJNZR0,TSR2MOVA,TEMPER_NUMTSR3:SETBFLAG1;置標(biāo)志位,表明DS18B20存在MOVCA,A+DPTRCLRP2.0;二極管指示MOVTEMPER_NUM,AAJMPTSR5RETTSR4:CLRFLAG1LJM

8、PTSR7TEMPTAB:TSR5:MOVR0,#06BHDB00H,01H,02H,03H,04H,05H,06H,07HTSR6:DJNZR0,TSR6DB08H,09H,10H,11H,12H,13H,14H,15HTSR7:SETBDQ;表明不存在RETDB16H,17H,18H,19H,20H,21H,22H,23HDB24H,25H,26H,27H,28H,29H,30H,31H.*設(shè)定DS18B20暫存器設(shè)定值*DB32H,33H,34H,35H,36H,37H,38H,39H*DB40H,41H,42H,43H,44H,45H,46H,47H;RE_CONFIG:DB48H,4

9、9H,50H,51H,52H,53H,54H,55H;JBFLAG1,RE_CONFIG1DB56H,57H,58H,59H,60H,61H,62H,63H;RETDB64H,65H,66H,67H,68H,69H,70H;RE_CONFIG1:MOVA,#0CCH;放跳過ROM命令;/*/;LCALLWRITE18B20;MOVA,#4EH;LCALLWRITE18B20FLAG1BITF0;DS18B20存在標(biāo)志位;LCALLWRITE_18B20DQBITP1.7;MOVA,#00H;報警下限中寫入00HTEMPER_LEQU29H;LCALLWRITE_18B20TEMPER_HEQU

10、28H;MOVA,#1FH;選擇九位溫度分辨率下面還介紹一個ds18b20匯編程序;寫暫存器命令.*報警上限中寫入00H;MOVA,#00H;LCALLWRITE18B20ABITEQU35HBBITEQU36H;RET;*ds18b20匯編程序起始*.*讀轉(zhuǎn)換后的溫度值*ORG0000HGETTEMPER:AJMPMAINSETBDQORG0100HLCALLINIT18B20.*主程序開始*JBFLAG1,TSS2MAIN:RET;若不存在則返回LCALLINIT18B20TSS2:MOVA,#0CCH;跳過ROMLCALLWRITE_18B20NOPMOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令S

11、ETBDQLCALLWRITE_18B20MOVR3,#7DJNZR3,$LCALLDISPLAY;延時MOVC,DQLCALLINIT_18B20MOVR3,#23MOVA,#0CCH;跳過ROMDJNZR3,$LCALLWRITE_18B20RRCAMOVA,#0BEH發(fā)出讀溫度換命令DJNZR2,RE01LCALLWRITE_18B20MOVR1,ALCALLREAD2_18B20;讀兩個字節(jié)的溫度DECR1RETDJNZR4,RE00;*寫ds18b20匯編程序*RETWRITE_18B20:MOVR2,#8CLRCWR1:CLRDQ;*讀出的溫度進行數(shù)據(jù)轉(zhuǎn)換*MOVR3,#6CHAN

12、GE:MOVA,29HDJNZR3,$MOVC,28H.0;將28H中的最低位移入RRCARRCAMOVDQ,CMOVC,28H.iMOVR3,#23RRCADJNZR3,$MOVC,28H.2SETBDQRRCANOPMOVC,28H.3DJNZR2,WR1RRCASETBDQMOV29H,ARET;setbp2.0LCALLDISPLAY;調(diào)用數(shù)碼管顯示子程序;*讀18B20程序,讀出兩個字節(jié)的溫度*;setbP2.0READ2_18B20:LJMPMAINMOVR4,#2;低位存在29H,高位存在28H:*display*DISPLAY:mova,29H;將29H中的十六進制數(shù)轉(zhuǎn)換成MOVR1,#29Hmovb,#10;10進制/10=10進制RE00:MOVR2,#8divabRE01:CLRCmovb_bit,a;十位在aSETBCmova_bit,b;個位在bNOPmovdptr,#TAB;指定查表啟始地址NOPmovr0,#4dpll:movr1,#250;顯示1000次CLRDQdplop:mova,a_bit;取個位數(shù)NOPMOVCA,A+DPTR;查個位數(shù)的7段代碼NOPmovp0,a;送出個位的7段代碼C10進制精品文檔clrp2.5;開個位顯示acalldims;顯示1mssetbp2.5mova,b_bit;取十位數(shù)MOVCA,A+DPTR;查十位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論